Difference between revisions of "Getting started creating mods using GECK"

From Nexus Mods Wiki
Jump to: navigation, search
(Custom items: Added 'TIP: Repairability')
(Dialogue and Lipsynch: TIP Adding Animation/Video to Dialog)
(256 intermediate revisions by 2 users not shown)
Line 13: Line 13:
 
<br>
 
<br>
  
== Overview ==
+
== <span id="Overview"></span>Overview ==
 
The following information is primarily taken from the [http://forums.nexusmods.com/index.php?/topic/5165770-help-starting-out/ Help starting out] thread on the "Fallout New Vegas GECK and Modders" forum.  The information is preserved here as an alternative to searching through back posts in that forum for commonly asked questions.  Much of the information applies to "Fallout 3 (FO3)" as well, but the focus is on FNV.
 
The following information is primarily taken from the [http://forums.nexusmods.com/index.php?/topic/5165770-help-starting-out/ Help starting out] thread on the "Fallout New Vegas GECK and Modders" forum.  The information is preserved here as an alternative to searching through back posts in that forum for commonly asked questions.  Much of the information applies to "Fallout 3 (FO3)" as well, but the focus is on FNV.
  
Line 25: Line 25:
 
</div>
 
</div>
  
There is a lot of unique vocabulary related to creating mods in the following material, such as the distinction between "meshes", the 3D framework of objects (saved as '''Nif''' files); and "textures", the surface "skin" over the "mesh framework" (saved as '''DDS''' files).  [http://www.darkcreations.org/testg/wiki/Main_Page The Elder Scrolls Texture Guide] (TESTG) site has a [http://www.darkcreations.org/testg/wiki/Glossary glossary] and several pages devoted to explaining these to new mod creators and users.  Rather than explaining them here, please reference that site when you need clarification.  (This article does a lot of that: referral to other existing resources.  Why reinvent the wheel?)
+
There is a lot of unique vocabulary related to creating mods in the following material, such as the distinction between "meshes", the 3D framework of objects (saved as '''Nif''' files); and "textures", the surface "skin" over the "mesh framework" (saved as '''DDS''' files).  [http://web.archive.org/web/20170713081056/http://www.darkcreations.org/testg/wiki/Main_Page The Elder Scrolls Texture Guide] (TESTG) site has a [http://web.archive.org/web/20170713081056/http://www.darkcreations.org/testg/wiki/Glossary glossary] and several pages devoted to explaining these to new mod creators and users.  Rather than explaining them here, please reference that site when you need clarification.  (This article does a lot of that: referral to other existing resources.  Why reinvent the wheel?)
  
== Programs and Tools ==
+
== <span id="Programs_and_Tools"></span>Programs and Tools ==
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px solid #00C600;color: green;
 
style="margin:0px 10px 10px 10px;border:1px solid #00C600;color: green;
Line 36: Line 36:
 
</div>
 
</div>
  
=== GECK Tools ===
+
=== <span id="GECK_Tools"></span>GECK Tools ===
 
* [http://geck.bethsoft.com/index.php?title=Main_Page Garden of Eden Construction Kit ('''GECK''')] (freeware.) The official "game editor" for Fallout 3 and New Vegas.  NOTE that when loading files, the '''one''' plugin you designate with the "Start as Active" button becomes the one that gets edited and saved when you exit the editor.  ALL of the files loaded into the '''GECK''' at the same time will automatically become "master files" to the "active file" when it is saved.  In particular to this regard, see the [[#NAM files|NAM files]] entry.
 
* [http://geck.bethsoft.com/index.php?title=Main_Page Garden of Eden Construction Kit ('''GECK''')] (freeware.) The official "game editor" for Fallout 3 and New Vegas.  NOTE that when loading files, the '''one''' plugin you designate with the "Start as Active" button becomes the one that gets edited and saved when you exit the editor.  ALL of the files loaded into the '''GECK''' at the same time will automatically become "master files" to the "active file" when it is saved.  In particular to this regard, see the [[#NAM files|NAM files]] entry.
 
:* [http://www.nexusmods.com/newvegas/mods/64888/? GECK Extender] NVSE Plugin.  Project to extend '''GECK''' functionality and bug fixes.  Compatible with all NVSE script extender plugins.  <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: red; background-color:#fff5f5;padding:3px;
 
:* [http://www.nexusmods.com/newvegas/mods/64888/? GECK Extender] NVSE Plugin.  Project to extend '''GECK''' functionality and bug fixes.  Compatible with all NVSE script extender plugins.  <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: red; background-color:#fff5f5;padding:3px;
Line 46: Line 46:
  
 
* There are now two wikis devoted to the '''GECK''': the official one by Bethesda, which is not very well supported and a major pain to update (Five CAPCHAs per post!), and a Modding Community '''GECKWiki''' site with everything from the official one but actively updated by the modding community.  While most links to the '''GECK''' wiki are to the official wiki, be sure to check out the Community one to see the latest info on your topic.  Anything related to "Script Extenders" like '''NVSE''' or '''JIP LN NVSE''' functions will be more current on the Community '''GECKWiki''' site.
 
* There are now two wikis devoted to the '''GECK''': the official one by Bethesda, which is not very well supported and a major pain to update (Five CAPCHAs per post!), and a Modding Community '''GECKWiki''' site with everything from the official one but actively updated by the modding community.  While most links to the '''GECK''' wiki are to the official wiki, be sure to check out the Community one to see the latest info on your topic.  Anything related to "Script Extenders" like '''NVSE''' or '''JIP LN NVSE''' functions will be more current on the Community '''GECKWiki''' site.
:* [http://geck.technodeep.net/index.php/Main_Page Community GECKWiki]
+
:* [http://geckwiki.com/index.php?title=Main_Page Community GECKWiki]
 
::* [http://geck.foesmm.org/index.php/Tutorials GECK: Tutorials]
 
::* [http://geck.foesmm.org/index.php/Tutorials GECK: Tutorials]
::* [http://geck.technodeep.net/index.php/Category:Getting_Started#My_First_Vault_Tutorial_Series GECK: 'My first vault' tutorial series] Bethesda's intro to mod creation.
+
::* [http://geckwiki.com/index.php?title=Category:Getting_Started#My_First_Vault_Tutorial_Series GECK: 'My first vault' tutorial series] Bethesda's intro to mod creation.
::* [http://geck.technodeep.net/index.php/Category:FAQ GECK: FAQ] Simple questions with answers.
+
::* [http://geckwiki.com/index.php?title=Category:FAQ GECK: FAQ] Simple questions with answers.
::* [http://geck.technodeep.net/index.php/Category:Advanced_Modding_Techniques GECK: Advanced Modding Techniques] Questions with tricky answers.
+
::* [http://geckwiki.com/index.php?title=Category:Advanced_Modding_Techniques GECK: Advanced Modding Techniques] Questions with tricky answers.
 
:* [http://geck.bethsoft.com/index.php?title=Main_Page Official Bethesda GECK Wiki]
 
:* [http://geck.bethsoft.com/index.php?title=Main_Page Official Bethesda GECK Wiki]
 
:* [http://cs.elderscrolls.com/index.php?title=Category:Solutions TES4 Construction Set Wiki] Older, more fundamental questions and answers.
 
:* [http://cs.elderscrolls.com/index.php?title=Category:Solutions TES4 Construction Set Wiki] Older, more fundamental questions and answers.
  
=== Image Tools ===
+
 
 +
=== <span id="Image_Tools"></span>Image Tools ===
 
* [http://wiki.nexusmods.com/index.php/Category:Tools Category:Tools on Nexus Mods wiki] has articles on various aspects of the primary tools you will be using.  Check it out as well.
 
* [http://wiki.nexusmods.com/index.php/Category:Tools Category:Tools on Nexus Mods wiki] has articles on various aspects of the primary tools you will be using.  Check it out as well.
 
* [http://www.autodesk.com/products/3ds-max/overview 3DS Max] (1 month free trial, $185/month or $1470/year subscriptions, 3 yr student/educator license.)  Commercial product by AutoDesk but the version that works with Nif files isn't free.  Versions after 2013 don't seem to work with at least Fallout 4 (according to [http://community.bethesda.net/thread/10364?tstart=0 this thread]) using the included official NIF exporter, though there is an unofficial [http://github.com/figment/max_nif_plugin/releases "Figment" exporter plugin fork on GitHub] which does seem to work.
 
* [http://www.autodesk.com/products/3ds-max/overview 3DS Max] (1 month free trial, $185/month or $1470/year subscriptions, 3 yr student/educator license.)  Commercial product by AutoDesk but the version that works with Nif files isn't free.  Versions after 2013 don't seem to work with at least Fallout 4 (according to [http://community.bethesda.net/thread/10364?tstart=0 this thread]) using the included official NIF exporter, though there is an unofficial [http://github.com/figment/max_nif_plugin/releases "Figment" exporter plugin fork on GitHub] which does seem to work.
Line 65: Line 66:
 
:: "Noob to Pro" PDF tutorial.
 
:: "Noob to Pro" PDF tutorial.
 
:: Check out the "Optional" files section for some additional functionality.  Recommended for FO3/FNV.
 
:: Check out the "Optional" files section for some additional functionality.  Recommended for FO3/FNV.
:* [http://www.nexusmods.com/oblivion/mods/42755 Blender v2.49b Portable] by '''Room207''' is also a "complete" package that is preferred by some for it's convenience.  Includes:
+
:* [http://www.nexusmods.com/oblivion/mods/42755 Blender v2.49b Portable] by '''Room207''' is also a "complete" package that is preferred by some for it's convenience and because it is patched so that vertex normals won't be regenerated when going into ''edit'' mode, which is one of the reasons why a neck seam is produced.  Includes:
 
::: Python 2.6.6
 
::: Python 2.6.6
 
::: Pyffi 2.1.11
 
::: Pyffi 2.1.11
Line 76: Line 77:
 
::: [http://www.nexusmods.com/oblivion/mods/45019/? Blender TRI file scripts and Tutorial] by '''Kapaer and Deedes'''
 
::: [http://www.nexusmods.com/oblivion/mods/45019/? Blender TRI file scripts and Tutorial] by '''Kapaer and Deedes'''
 
:* [[Installation_of_Blender|Installation of Blender]] (Wiki article.)
 
:* [[Installation_of_Blender|Installation of Blender]] (Wiki article.)
* [http://www.mwgfx.co.uk/programs/dxtbmp.htm DXTBmp Texture Tool] (freeware.) Images can be passed to any Paint program for editing in 24 bit and then re-imported and saved in any of the 16/24/32 bit formats.  Transparency (Alpha) channel of textures can be viewed and edited separately from the main image.
+
:* [https://www.nexusmods.com/newvegas/mods/69527 Blender 249b Nif Plugin Tutorial] by '''ACBRadio''' (Mod Description is tutorial with images).
 +
* [http://www.mwgfx.co.uk/programs/dxtbmp.htm DXTBmp Texture Tool] (freeware).  Images can be passed to any Paint program for editing in 24 bit and then re-imported and saved in any of the 16/24/32 bit formats.  Transparency (Alpha) channel of textures can be viewed and edited separately from the main image.
 
* [http://www.gimp.org/ GIMP: GNU Image Manipulation Program] (freeware.) A cross-platform image (texture) editor available for GNU/Linux, OS X, Windows and more operating systems.  Provides extensions through integration with many programming languages including '''Scheme, Python, Perl,''' and more.  The result is a high level of customization as demonstrated by the large number of scripts and plug-ins created by the community.  
 
* [http://www.gimp.org/ GIMP: GNU Image Manipulation Program] (freeware.) A cross-platform image (texture) editor available for GNU/Linux, OS X, Windows and more operating systems.  Provides extensions through integration with many programming languages including '''Scheme, Python, Perl,''' and more.  The result is a high level of customization as demonstrated by the large number of scripts and plug-ins created by the community.  
 
* [http://www.nexusmods.com/newvegas/mods/61538/? Hairs - Eyes - Races Auto - Patcher] (Mod.) Extracts all the hair / eyes / races records from every plugin loaded in your load order - then, it rewrites the list of eyes and hairs for every race found. So, if you untick / unflag a hair mod from your load order, these records won't be loaded by the game itself and consequently won't be found by this mod because they don't exist.
 
* [http://www.nexusmods.com/newvegas/mods/61538/? Hairs - Eyes - Races Auto - Patcher] (Mod.) Extracts all the hair / eyes / races records from every plugin loaded in your load order - then, it rewrites the list of eyes and hairs for every race found. So, if you untick / unflag a hair mod from your load order, these records won't be loaded by the game itself and consequently won't be found by this mod because they don't exist.
* [http://www.darkcreations.org/testg/wiki/Category:VWD-OB LOD/VWD Overview] TESTG site wiki.
+
* [http://inkscape.org/ Inkscape Vector Graphics Editor] (freeware).  Open source flexible drawing tools, with broad file format compatibility, powerful text tool, and bezier and spiro curves.
 +
* [http://web.archive.org/web/20170713081056/http://www.darkcreations.org/testg/wiki/Category:VWD-OB LOD/VWD Overview] TESTG site wiki.
 
:* [http://www.nexusmods.com/newvegas/mods/58562 FNVLODGen] "View While Distant (VWD)"/"Level Of Detail (LOD)" landscape ''object'' generation tool.
 
:* [http://www.nexusmods.com/newvegas/mods/58562 FNVLODGen] "View While Distant (VWD)"/"Level Of Detail (LOD)" landscape ''object'' generation tool.
 
:* [http://www.nexusmods.com/newvegas/mods/61035/? Ultimate resolution landscape LODs and generator TES4LL] landscape ''mesh'' and ''texture'' LOD generation tool.
 
:* [http://www.nexusmods.com/newvegas/mods/61035/? Ultimate resolution landscape LODs and generator TES4LL] landscape ''mesh'' and ''texture'' LOD generation tool.
 
* [http://www.autodesk.com/products/maya/overview Maya] (1 month free trial, $185/month or $1470/year subscriptions, 3 yr student/educator license.)  Animation, modeling, simulation, and rendering software by '''AutoDesk'''.
 
* [http://www.autodesk.com/products/maya/overview Maya] (1 month free trial, $185/month or $1470/year subscriptions, 3 yr student/educator license.)  Animation, modeling, simulation, and rendering software by '''AutoDesk'''.
 
* [http://store.steampowered.com/app/441770/MindTex_2/ MindTex2] ($20) by '''Frozen Flame'''.  MindTex is a '''normal map''' generation utility for game developers and 3d professionals. Built to rival the competition in quality without the steep price, whether you want to generate a ''normal'', ''height'', ''specular'', ''gloss'', ''self-illumination'', ''occlusion'', or ''reflection map'', you can easily do it in seconds flat from a single source texture with MindTex.
 
* [http://store.steampowered.com/app/441770/MindTex_2/ MindTex2] ($20) by '''Frozen Flame'''.  MindTex is a '''normal map''' generation utility for game developers and 3d professionals. Built to rival the competition in quality without the steep price, whether you want to generate a ''normal'', ''height'', ''specular'', ''gloss'', ''self-illumination'', ''occlusion'', or ''reflection map'', you can easily do it in seconds flat from a single source texture with MindTex.
 +
* [http://www.nexusmods.com/newvegas/mods/66826 Mod Kit - Resource for Modders] by '''pixelhate'''.  Some nif & textures used as references in various Modding situations, including the "invisible activator".
 
* [http://www.nexusmods.com/newvegas/mods/64746 NIF tangents and binormals updater] (freeware) by '''zilav'''.  A command line tool to batch update tangents/binormals in Oblivion, Fallout 3, New Vegas, Skyrim, Skyrim Special Edition and Fallout 4 format NIF meshes.  The one in '''NifSkope''' doesn't handle degenerate normals, such as if your NIF has a lot of texture tiling. It also gives all around better results especially for people who use '''Blender''' and cannot reset the normals and smooth them because it lacks the features to do so.  
 
* [http://www.nexusmods.com/newvegas/mods/64746 NIF tangents and binormals updater] (freeware) by '''zilav'''.  A command line tool to batch update tangents/binormals in Oblivion, Fallout 3, New Vegas, Skyrim, Skyrim Special Edition and Fallout 4 format NIF meshes.  The one in '''NifSkope''' doesn't handle degenerate normals, such as if your NIF has a lot of texture tiling. It also gives all around better results especially for people who use '''Blender''' and cannot reset the normals and smooth them because it lacks the features to do so.  
 
* [http://niftools.sourceforge.net/wiki/NifSkope NifSkope] (freeware.) A graphical program that allows you to open NIF files, view their contents, edit them, and write them back out again. You can use it to quickly make changes to specific properties of a NIF file such as changing the texture, adding translucency, and more. A 3D view of the contents of the NIF file allows you to preview your changes instantly. You can even create texture templates, and import & export OBJ files. (Note: This link is the latest release and may not be the best choice for FO3/FNV.  A fully compatible version of this tool (v1.0.22) is already included in the '''Blender v2.49b package''' linked here.)  
 
* [http://niftools.sourceforge.net/wiki/NifSkope NifSkope] (freeware.) A graphical program that allows you to open NIF files, view their contents, edit them, and write them back out again. You can use it to quickly make changes to specific properties of a NIF file such as changing the texture, adding translucency, and more. A 3D view of the contents of the NIF file allows you to preview your changes instantly. You can even create texture templates, and import & export OBJ files. (Note: This link is the latest release and may not be the best choice for FO3/FNV.  A fully compatible version of this tool (v1.0.22) is already included in the '''Blender v2.49b package''' linked here.)  
Line 96: Line 100:
 
:* [http://www.nexusmods.com/skyrim/mods/6843/? Paint: The Normal Map Tools] by '''Goujosamma''' for Paint.NET.
 
:* [http://www.nexusmods.com/skyrim/mods/6843/? Paint: The Normal Map Tools] by '''Goujosamma''' for Paint.NET.
 
* [http://www.nexusmods.com/newvegas/mods/57245/? Ptolemy Maps for New Vegas] by '''Rocketeer''' and '''Alan Broad''' is a robust suite of tools for creating and organizing 'world map' locations based on their type, faction, importance, etc.
 
* [http://www.nexusmods.com/newvegas/mods/57245/? Ptolemy Maps for New Vegas] by '''Rocketeer''' and '''Alan Broad''' is a robust suite of tools for creating and organizing 'world map' locations based on their type, faction, importance, etc.
 +
* [http://www.nexusmods.com/newvegas/mods/67829 Sniff: S'Lanter's NIF Helper Tool] by '''zilav'''.  A batch NIF processing tool intended for intelligent S'Lanters.
 +
:* Available operations (initial release):
 +
::* Update tangents and binormals - recalculate tangents, binormals and optionally normal vectors in shapes using modified Unity's code.
 +
::* Search and replace assets - perform search and replace on assets paths (textures and other referenced files) in meshes
 +
::* Convert strips to shapes - the same as Triangulation spell in NifSkope
 +
::* Attach parent NiNode - the same as Attach Parent in NifSkope applied to NiNode or it's descendants with defined name
 +
::* Jamilla's anim thing - no idea, made by request
 +
::* Weijiesen's blow up thing - no idea, made by request
 +
::* Copy anim controlled blocks - copy missing controlled blocks between *.kf animation files
 +
::* Update parallax settings - change parallax values in shaders
 +
::* Update MOPP code - update MOPP collision code with the proper working one
 
* [http://www.buckarooshangar.com/flightgear/tut_dds.html Working with DDS/DXT Files] (HTML article) by '''Gary "Buckaroo" Neely'''.
 
* [http://www.buckarooshangar.com/flightgear/tut_dds.html Working with DDS/DXT Files] (HTML article) by '''Gary "Buckaroo" Neely'''.
  
=== Packaging Tools ===
+
=== <span id="Packaging_Tools"></span>Packaging Tools ===
 
* [http://www.nexusmods.com/skyrim/mods/4328/? BAIN Archive Tools - BAT] by '''Surazal'''
 
* [http://www.nexusmods.com/skyrim/mods/4328/? BAIN Archive Tools - BAT] by '''Surazal'''
 
* [http://www.nexusmods.com/newvegas/mods/64745 BSArch] (freeware) by '''zilav'''.  A command line tool for ''packing'' and unpacking Bethesda archives.  The most complete support setting the correct flags across the various games.
 
* [http://www.nexusmods.com/newvegas/mods/64745 BSArch] (freeware) by '''zilav'''.  A command line tool for ''packing'' and unpacking Bethesda archives.  The most complete support setting the correct flags across the various games.
Line 113: Line 128:
 
:* [http://www.nexusmods.com/skyrim/mods/75140/? FOMOD Validator] by Ganda
 
:* [http://www.nexusmods.com/skyrim/mods/75140/? FOMOD Validator] by Ganda
  
=== Scripting Tools ===
+
=== <span id="Scripting_Tools"></span>Scripting Tools ===
 
* [http://www.cipscis.com/fallout/utilities/validator.aspx CIPSCIS Script Validator] (freeware.) Allows you to quickly indent your script while simultaneously checking it for several basic errors, many of which are not picked up by the GECK's compiler. It works with Skyrim, Fallout 3, and Fallout New Vegas, but is not "script extender" aware. Includes it's own tutorials.
 
* [http://www.cipscis.com/fallout/utilities/validator.aspx CIPSCIS Script Validator] (freeware.) Allows you to quickly indent your script while simultaneously checking it for several basic errors, many of which are not picked up by the GECK's compiler. It works with Skyrim, Fallout 3, and Fallout New Vegas, but is not "script extender" aware. Includes it's own tutorials.
 
* [http://nvse.silverlock.org/ New Vegas Script Extender (NVSE)] Site.
 
* [http://nvse.silverlock.org/ New Vegas Script Extender (NVSE)] Site.
Line 121: Line 136:
 
:* [http://geck.bethsoft.com/index.php?title=Category:Functions_(JIP) GECK: JIP Functions] (Wiki.)
 
:* [http://geck.bethsoft.com/index.php?title=Category:Functions_(JIP) GECK: JIP Functions] (Wiki.)
 
:* [http://geck.bethsoft.com/index.php?title=Category:Functions_(Lutana) GECK: Lutana (LN) Functions] (Wiki.)
 
:* [http://geck.bethsoft.com/index.php?title=Category:Functions_(Lutana) GECK: Lutana (LN) Functions] (Wiki.)
* [http://www.nexusmods.com/skyrim/mods/39434/? NMM Installer Tutorial - FOMOD - FOMM] by XunAmarox
+
* [http://www.nexusmods.com/skyrim/mods/39434/? NMM Installer Tutorial - FOMOD - FOMM] by '''XunAmarox'''.
* [http://www.nexusmods.com/skyrim/mods/41440/? NMM ModuleConfig Creator] by Twilightassassin
+
* [http://www.nexusmods.com/skyrim/mods/41440/? NMM ModuleConfig Creator] by '''Twilightassassin'''.
* [http://www.nexusmods.com/skyrim/mods/33797/? NMM Tracelog Help] by Thorne67
+
* [http://www.nexusmods.com/skyrim/mods/33797/? NMM Tracelog Help] by '''Thorne67'''.
 
* [http://notepad-plus-plus.org/ Notepad++] (freeware.) Source code editor.
 
* [http://notepad-plus-plus.org/ Notepad++] (freeware.) Source code editor.
:* [http://www.nexusmods.com/skyrim/mods/33271/? BAIN User Defined Language for Notepad++] by The_Catman
+
:* [http://www.nexusmods.com/skyrim/mods/33271/? BAIN User Defined Language for Notepad++] by '''The_Catman'''.
 
:* [http://www.nexusmods.com/newvegas/mods/62793/? Notepad++ Syntax Highlighter] (freeware) by '''DoctaSax'''. "Language" Plugin for GECK editor syntax.
 
:* [http://www.nexusmods.com/newvegas/mods/62793/? Notepad++ Syntax Highlighter] (freeware) by '''DoctaSax'''. "Language" Plugin for GECK editor syntax.
 +
* [http://www.nexusmods.com/newvegas/mods/67395 RuntimeScriptProfiler] by '''lStewieAl - shadeMe'''.  An NVSE plugin to profile script execution. Ported from '''shadeMe''''s '''Oblivion''' plugin.
 +
* [http://www.nexusmods.com/newvegas/mods/62777 Unlocked MCM - Advanced MCM script templates] by '''DoctaSax'''.  Script templates for complex but lean [http://www.nexusmods.com/newvegas/mods/42507 Mod Configuration Manager (MCM)] menus using array maps. Switches MCM scripting from a static to a dynamic system that can be altered at any time in-game. Minimizes script size and overhead.
  
=== Sound and Voice Tools ===
+
=== <span id="Sound_and_Voice_Tools"></span>Sound and Voice Tools ===
 
* [http://www.audacityteam.org/ Audacity] (freeware.) Sound editor and audio format conversion.
 
* [http://www.audacityteam.org/ Audacity] (freeware.) Sound editor and audio format conversion.
 
* [http://www.nexusmods.com/newvegas/mods/61248/? FonixData.cdf ( Easier .Lip Files ) by DingraThePishvaz] Mod. (Free) Alternative Lip-sync generator for FNV.
 
* [http://www.nexusmods.com/newvegas/mods/61248/? FonixData.cdf ( Easier .Lip Files ) by DingraThePishvaz] Mod. (Free) Alternative Lip-sync generator for FNV.
Line 134: Line 151:
 
* [http://www.nexusmods.com/newvegas/mods/63052/? Silent Voice Generator by Enter_77] Mod.
 
* [http://www.nexusmods.com/newvegas/mods/63052/? Silent Voice Generator by Enter_77] Mod.
  
=== Misc Other Tools ===
+
=== <span id="Misc_Other_Tools"></span>Misc Other Tools ===
 +
* [http://cs.elderscrolls.com/index.php?title=Category:Oblivion_XML Category:Oblivion XML] Basic Bethesda XML documentation.
 +
:* [http://www.nexusmods.com/newvegas/mods/67470 The HUD Editor] Mod by '''IntenseMute'''.
 
* [http://darnified.net/forums/community/ DarNified Forum Community] site.  Articles and questions on XML for the User Interface (UI) and Menus, primarily about the Oblivion version of DarNUI but there is a section for FO3.
 
* [http://darnified.net/forums/community/ DarNified Forum Community] site.  Articles and questions on XML for the User Interface (UI) and Menus, primarily about the Oblivion version of DarNUI but there is a section for FO3.
 
* [http://www.nexusmods.com/newvegas/mods/62796/? Gamesettings profiler] Mod.  Adds intuitive, app-like, modding tool for debugging, testing, profiling, and dumping\printing to file any numeric GMST (gamesettings) records.
 
* [http://www.nexusmods.com/newvegas/mods/62796/? Gamesettings profiler] Mod.  Adds intuitive, app-like, modding tool for debugging, testing, profiling, and dumping\printing to file any numeric GMST (gamesettings) records.
 
* [http://www.nexusmods.com/skyrim/mods/60733/? Tree LOD billboard creator for xLODGen] by zilav
 
* [http://www.nexusmods.com/skyrim/mods/60733/? Tree LOD billboard creator for xLODGen] by zilav
 
* [http://www.nexusmods.com/newvegas/mods/34703/? xEdit/FNVEdit] (freeware.) A generic tool called '''xEdit''' which is renamed for working with specific games.  The latest "stable" release is on the Nexus, generally under the game name version or as "TES5Edit".
 
* [http://www.nexusmods.com/newvegas/mods/34703/? xEdit/FNVEdit] (freeware.) A generic tool called '''xEdit''' which is renamed for working with specific games.  The latest "stable" release is on the Nexus, generally under the game name version or as "TES5Edit".
:* [http://afkmods.iguanadons.net/index.php?/topic/3750-wipz-tes5edit/& xEdit discussion page] contains links to latest '''''UPDATES''''' "development/test" and '''''DOWNLOAD''''' "experimental (bleeding edge)" versions.
+
:* [https://www.afkmods.com/index.php?/topic/3750-wipz-tes5edit/& xEdit discussion page] contains links to latest '''''UPDATES''''' "development/test" and '''''DOWNLOAD''''' "experimental (bleeding edge)" versions.
 
:* [http://tes5edit.github.io/docs/index.html Tome of xEdit] Current Online manual for all games.
 
:* [http://tes5edit.github.io/docs/index.html Tome of xEdit] Current Online manual for all games.
 
:* [http://www.nexusmods.com/newvegas/mods/38413/? xEdit/FNVEdit Training Manual] (PDF.) Older docs that generally apply to all '''xEdit''' versions for other games.
 
:* [http://www.nexusmods.com/newvegas/mods/38413/? xEdit/FNVEdit Training Manual] (PDF.) Older docs that generally apply to all '''xEdit''' versions for other games.
 
:* [http://tes5edit.github.io/fopdoc/ Documentation for the xEdit Fallout plugin file formats]
 
:* [http://tes5edit.github.io/fopdoc/ Documentation for the xEdit Fallout plugin file formats]
  
== Details ==
+
== <span id="Details"></span>Details ==
 
Basic advice is to start with the game Construction Set/Editor (this is usually a separate, free download, not included with the game installation). There is going to be a wiki page for it with tutorials to help get you started, but note that there are unspoken assumptions that you are familiar with concepts introduced on the "Construction Kit"/"game editor" wikis for earlier Bethesda games such as:  
 
Basic advice is to start with the game Construction Set/Editor (this is usually a separate, free download, not included with the game installation). There is going to be a wiki page for it with tutorials to help get you started, but note that there are unspoken assumptions that you are familiar with concepts introduced on the "Construction Kit"/"game editor" wikis for earlier Bethesda games such as:  
 
* [http://www.uesp.net/wiki/Tes3Mod:Construction_Set TES3: Morrowind] (2002),
 
* [http://www.uesp.net/wiki/Tes3Mod:Construction_Set TES3: Morrowind] (2002),
Line 150: Line 169:
 
* [http://tesalliance.org/forums/index.php?/forum/81-the-enclave/ TESAlliance: The Enclave] for tutorials covering most subjects and tools that apply still to the Fallout series.
 
* [http://tesalliance.org/forums/index.php?/forum/81-the-enclave/ TESAlliance: The Enclave] for tutorials covering most subjects and tools that apply still to the Fallout series.
 
* [http://geck.bethsoft.com/index.php?title=Main_Page Garden of Eden Construction Kit (GECK)] for Fallout 3 (2008) and Fallout: New Vegas} (2010).
 
* [http://geck.bethsoft.com/index.php?title=Main_Page Garden of Eden Construction Kit (GECK)] for Fallout 3 (2008) and Fallout: New Vegas} (2010).
* [http://geck.technodeep.net/index.php/Main_Page Community GECK Wiki] for Fallout 3 (2008) and Fallout: New Vegas} (2010).
+
* [http://geckwiki.com/index.php?title=Main_Page Community GECK Wiki] for Fallout 3 (2008) and Fallout: New Vegas} (2010).
  
 
(TES5: Skyrim came after all of those (2011) and uses a different variation of the game and script engine.)  So, don't neglect those older wikis as resources.  Where there appears to be a conflict, assume the later wiki or the one specific to your game is correct.
 
(TES5: Skyrim came after all of those (2011) and uses a different variation of the game and script engine.)  So, don't neglect those older wikis as resources.  Where there appears to be a conflict, assume the later wiki or the one specific to your game is correct.
Line 180: Line 199:
 
Another thing that is broken is the "lip generator" for dialog. If you have Skyrim or Oblivion you can copy their lip generator from the "sound\processing" folder to GECK's.  If you have all of your voice files in place and they work already, in the GECK all you need to do is bring up that dialog in the quest editor. Your WAV file should show up down near the bottom, where it says voice type: MP3, WAV, LIP, LTF, and "path". Click on that to select it, then click on the "from WAV" at the bottom. The "generate lip file" option should now become active and you can click on it.  Note that the GECK will not update the information on the screen, so it will still have an N under ''LIP'' file even after you have generated it. Close that dialog option and re-open it and then you should see a Y under both the ''WAV'' and the ''LIP''.  If you record the voice files directly into the GECK (using the record button at the bottom of the dialog window) then when you press save it will automatically generate both the ''WAV'' and the ''LIP'' files.
 
Another thing that is broken is the "lip generator" for dialog. If you have Skyrim or Oblivion you can copy their lip generator from the "sound\processing" folder to GECK's.  If you have all of your voice files in place and they work already, in the GECK all you need to do is bring up that dialog in the quest editor. Your WAV file should show up down near the bottom, where it says voice type: MP3, WAV, LIP, LTF, and "path". Click on that to select it, then click on the "from WAV" at the bottom. The "generate lip file" option should now become active and you can click on it.  Note that the GECK will not update the information on the screen, so it will still have an N under ''LIP'' file even after you have generated it. Close that dialog option and re-open it and then you should see a Y under both the ''WAV'' and the ''LIP''.  If you record the voice files directly into the GECK (using the record button at the bottom of the dialog window) then when you press save it will automatically generate both the ''WAV'' and the ''LIP'' files.
  
 +
<span id="Common_Problems_with_GECK"></span>
 
=== Common Problems with GECK ===
 
=== Common Problems with GECK ===
 
{{GECK: Common Problems}}
 
{{GECK: Common Problems}}
  
=== GECK and the 'Active File' ===
+
<span id="GECK_and_the_Active_File"></span>
 +
=== GECK and the Active File ===
  
 
Ever since Windows version 3 on a 386, programs have standardized on "File | New" or "File | Open". But not the GECK. This is your first introduction in how un-intuitive the GECK is. It truly is a miserable toolset.
 
Ever since Windows version 3 on a 386, programs have standardized on "File | New" or "File | Open". But not the GECK. This is your first introduction in how un-intuitive the GECK is. It truly is a miserable toolset.
Line 195: Line 216:
  
 
At this point you don't have an active file for editing. But if you are creating a new file, that's what you want to do (yes, it makes no sense). At a minimum you need to have '''Fallout.ESM''' selected as a master. The GECK will load the master files (which are usually but not always with an ESM extension), and then you can make your changes, and when you select SAVE, then the GECK will finally prompt you for the name of your new file (which will usually have an ESP extension). Now that you've created a new file, this is your "active file" for this session. Any more changes that you make will all be saved to the same file.
 
At this point you don't have an active file for editing. But if you are creating a new file, that's what you want to do (yes, it makes no sense). At a minimum you need to have '''Fallout.ESM''' selected as a master. The GECK will load the master files (which are usually but not always with an ESM extension), and then you can make your changes, and when you select SAVE, then the GECK will finally prompt you for the name of your new file (which will usually have an ESP extension). Now that you've created a new file, this is your "active file" for this session. Any more changes that you make will all be saved to the same file.
 +
 +
<span id="Tip-Isolation"></span>
 +
====TIP GECK can isolate records in a particular plugin====
 +
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Suppose you want to only view content added by one particular plugin.
 +
 +
With the '''GECK''' open, click on "File" | "Data" to bring up the list of mods. Instead of selecting a mod to open, just "<Left+Click>" on the mod you are interested in to select (highlight) it. Now click "Details", and you'll see a list of records in the mod. By default, it will be sorted by type on the left, which is what you want, but for other types of searches you can sort by other columns. Armors will be a type of ARMO and since that starts with A they will be somewhere near the top of the list.
 +
 +
You can do this before loading a mod. You can also do it while you have a mod loaded and are working on it: but be warned!  Be very careful to hit "Cancel" when done and not "OK". If you accidentally hit "OK", the '''GECK''' will try to load the configuration you have selected which will probably screw up whatever you were working on.  You'll probably lose whatever changes you had that weren't saved.
 +
</div>
  
 
<span id="Tip-ModSize"></span>
 
<span id="Tip-ModSize"></span>
==== TIP: Limit to Mod Size ====
+
==== TIP Limit to Mod Size ====
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 203: Line 238:
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Note that there is a 16 MB limit (that no one ever tells you about) for references (i.e. "objects") in mods. If your mod gets larger than 16 MB and you add an object or an NPC, your mod will be permanently broken. It will crash the game and will crash the GECK if you try to load it.
+
">Note that there is a 16 MB limit (that no one ever tells you about) for references (i.e. "objects") in mods. If your mod gets larger than 16 MB and you add an object or an NPC, your mod will be permanently broken. It will crash the game and will crash the '''GECK''' if you try to load it.
  
 
Here's why: Ever notice that all objects in the game have a ref ID that is two digits to refer to the mod number (called the "mod index"), followed by six digits for the actual ref ID? In other words, the ref ID for water is "000151a3", where "00" is the mod index indicating it is from '''Fallout.ESM''' and "0151a3" is apparently the '''''offset''''' into the file. The largest six digit hex number you can have is FFFFFF, which is 16 MB (minus 1). That's where the 16 MB limit comes from.  
 
Here's why: Ever notice that all objects in the game have a ref ID that is two digits to refer to the mod number (called the "mod index"), followed by six digits for the actual ref ID? In other words, the ref ID for water is "000151a3", where "00" is the mod index indicating it is from '''Fallout.ESM''' and "0151a3" is apparently the '''''offset''''' into the file. The largest six digit hex number you can have is FFFFFF, which is 16 MB (minus 1). That's where the 16 MB limit comes from.  
Line 209: Line 244:
 
The two digit "mod index" at the front means that you can theoretically have 256 mods, though this game breaks once you get to about 130-140 or so.  The "FF" mod index is reserved for "dynamically placed" objects in the game and these are preserved in the "save game" files.  You (as a "mod creator") cannot directly address these "FF" references as they only exist in game memory at run time.
 
The two digit "mod index" at the front means that you can theoretically have 256 mods, though this game breaks once you get to about 130-140 or so.  The "FF" mod index is reserved for "dynamically placed" objects in the game and these are preserved in the "save game" files.  You (as a "mod creator") cannot directly address these "FF" references as they only exist in game memory at run time.
  
Anything with a base/ref ID has to be under that 16 MB reference limit or it breaks. Things that don't have a ref ID (navmeshes, landscape textures, etc.) can be placed without regard to the 16 MB limit. Since your ambitious "overhaul" is likely going to be a fairly large mod, you might want to make all of your object/NPC changes first, then add dialog, navmesh, and similar non-reference changes last.
+
Anything with a base/ref ID has to be under that 16 MB reference limit or it breaks. Things that don't have a ref ID (''navmeshes, landscape textures'', etc.) can be placed without regard to the 16 MB limit. Since your ambitious "overhaul" is likely going to be a fairly large mod, you might want to make all of your object/NPC changes first, then add ''dialog'', ''navmesh'', and similar ''non-reference changes'' last.
 +
 
 +
So the big question then becomes how are you creating your ESM? If you are creating an ESP and then are using '''FNVEdit''' to convert it to an ESM, the '''GECK''' will add things to your ESP in the order that you create them. If you are creating ''worldspaces'', the data for a worldspace landscape can easily be more than 10 MB. Add in your ''navmesh'' and other things and you can easily get over 16 MB. Add anything with an ID after that, and your mod breaks completely, with no warning whatsoever from the '''GECK'''. The '''GECK''' will happily save it without warning, but then if you try to load it in the game, it crashes the game. Go back to the '''GECK''' to fix it, and it crashes the '''GECK'''. Better hope you have an older version of your mod to go back to at that point. Otherwise, you're hosed.
 +
 
 +
Things that don't have an ID number (''conversation topics, landscape data, navmesh data'', etc) can all be placed above the 16 MB boundary. Just keep in mind that if you add anything with an ID number once your mod exceeds 16 MB, the '''GECK''' puts it at the end of your file and you permanently break your mod.
 +
 
 +
If you are using the '''GECK''' in ''networked developer mode'' (see [https://geckwiki.com/index.php?title=Version_Control Version Control]) instead of in ''single user mode'' the way that most people use it, and you use ''version control'' to check in your changes, then it automatically puts new things with ID numbers down well below the 16 MB boundary when you check in your changes to the ESM.  The ESP that you are merging in to create or add to your ESM can't have anything with an ID above its 16 MB boundary, but the '''GECK''' will put those IDs in the lower 16 MB of your ESM during check in, so that tends to only be an issue with the ESP that you are merging in, and not an issue with the resultant ESM.
 +
 
 +
16 MB worth of stuff with ID numbers is a HUGE amount of stuff. Experienced modders have never come anywhere close to any limits with it.
 +
 
 +
Aside from the 16 MB limit, we are not aware of any other limit with respect to things like recipes and lists; never having managed to create one that's big enough for it to be an issue. There's a ''formlist'' called "everything" which has over 1500 entries in it, so the limit for ''formlist'' entries is definitely higher than 1500.  Suspect that you'll break things long before you reach the 16 MB limit, though.  Things tend to break on powers of 2, especially at character and short integer size boundaries (255 and 65535), or at exactly half of that due to one bit being used for a sign bit (128 or 32767).
 +
 
 +
Scripts are limited to 32k characters. Comments and whitespace are counted in that size limit.
 +
 
 +
Exterior ''worldspace'' cells are limited to something like 128x64 or maybe 128x128 (don't recall which) or the game engine goes wonky. Again, the '''GECK''' will happily create a ''worldspace'' with more cells than this, and doesn't warn you that things will break. But the game's physics engine will totally fail if anything is placed outside of those limits.
 
</div>
 
</div>
  
 
<span id="Tip-SaveOften"></span>
 
<span id="Tip-SaveOften"></span>
====TIP: Save often====
+
 
 +
====TIP Save often====
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
Line 231: Line 281:
 
The GECK will let you load multiple ESP files, but where any ESM "master files" that become requirements for your plugin are loaded automatically, the same isn't true for ESP files your plugin becomes dependent upon. Don't add resources from a different esp to your plugin, because that doesn't work. You can only add things to your plugin that come from master files, or things that your plugin adds on its own. There are ways around this, but again, that gets pretty advanced.
 
The GECK will let you load multiple ESP files, but where any ESM "master files" that become requirements for your plugin are loaded automatically, the same isn't true for ESP files your plugin becomes dependent upon. Don't add resources from a different esp to your plugin, because that doesn't work. You can only add things to your plugin that come from master files, or things that your plugin adds on its own. There are ways around this, but again, that gets pretty advanced.
  
<span id="Tip-Isolation"></span>
+
<span id="GECK: Form-ID, Base-ID, Ref-ID, and Editor-ID"></span>
====TIP: GECK can isolate records in a particular plugin====
+
=== GECK Form-ID Base-ID Ref-ID and Editor-ID ===
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">Suppose you want to only view content added by one particular plugin.
 
 
 
With the '''GECK''' open, click on "File" | "Data" to bring up the list of mods. Instead of selecting a mod to open, just "<Left+Click>" on the mod you are interested in to select (highlight) it. Now click "Details", and you'll see a list of records in the mod. By default, it will be sorted by type on the left, which is what you want, but for other types of searches you can sort by other columns. Armors will be a type of ARMO and since that starts with A they will be somewhere near the top of the list.
 
 
 
You can do this before loading a mod. You can also do it while you have a mod loaded and are working on it: but be warned!  Be very careful to hit "Cancel" when done and not "OK". If you accidentally hit "OK", the '''GECK''' will try to load the configuration you have selected which will probably screw up whatever you were working on.  You'll probably lose whatever changes you had that weren't saved.
 
</div>
 
 
 
=== GECK Form-ID, Base-ID, Ref-ID, and Editor-ID ===
 
 
An Editor-ID (sometimes called a GECK ID) is a text identifier used to reference ''persistent'' objects. It functions similarly to a Form ID, although it is not limited to 8 characters and a hexadecimal character set.  It exists for the human user of GECK.  The game engine itself is only concerned with Form-IDs.  There is a direct "one-to-one" correspondence between an EditorID and a Ref-ID, but for the human only.  (Editor-IDs are primarily used to identify objects in the Object window [the left pane of the GECK].)  The game engine needs and only recognizes the Form-ID in commands, but they can also be used in scripts along with Editor-IDs.  See the [http://geck.bethsoft.com/index.php?title=Reference GECK Reference page].
 
An Editor-ID (sometimes called a GECK ID) is a text identifier used to reference ''persistent'' objects. It functions similarly to a Form ID, although it is not limited to 8 characters and a hexadecimal character set.  It exists for the human user of GECK.  The game engine itself is only concerned with Form-IDs.  There is a direct "one-to-one" correspondence between an EditorID and a Ref-ID, but for the human only.  (Editor-IDs are primarily used to identify objects in the Object window [the left pane of the GECK].)  The game engine needs and only recognizes the Form-ID in commands, but they can also be used in scripts along with Editor-IDs.  See the [http://geck.bethsoft.com/index.php?title=Reference GECK Reference page].
  
Line 258: Line 295:
  
 
"Base ID is the number assigned to a template for an object that is used to create many instances of that object. For example all bottle caps in the game have exactly the same Base ID. This ID is used in scripts or the console with commands that create new instances of an object, like ''additem'' or ''placeatme''." - [http://fallout.gamepedia.com/Form_ID Form-ID on The Vault wiki].  You could think of it as the "parent" of each "child reference".  Any change made to a Base-ID affects '''''every''''' reference back to that Base-ID.  Which is why you need to make a "copy" of a Base-ID and change it's Editor-ID (which forces a change to the Form-ID) when you need to make a variation of an object.  Otherwise you are changing ALL instances of that object in the game.  (Don't try to change a Form-ID directly yourself.  Let the GECK handle it.)
 
"Base ID is the number assigned to a template for an object that is used to create many instances of that object. For example all bottle caps in the game have exactly the same Base ID. This ID is used in scripts or the console with commands that create new instances of an object, like ''additem'' or ''placeatme''." - [http://fallout.gamepedia.com/Form_ID Form-ID on The Vault wiki].  You could think of it as the "parent" of each "child reference".  Any change made to a Base-ID affects '''''every''''' reference back to that Base-ID.  Which is why you need to make a "copy" of a Base-ID and change it's Editor-ID (which forces a change to the Form-ID) when you need to make a variation of an object.  Otherwise you are changing ALL instances of that object in the game.  (Don't try to change a Form-ID directly yourself.  Let the GECK handle it.)
 +
 +
''Base forms'' (another way of referring collectively to "Base-IDs") are fine to use in scripts, by the way.  They're just used in different situations by various functions.  For example: The ''StopQuest'' function will always operate on the ''base form'' of the quest.  The same with anything involving [http://geckwiki.com/index.php?title=Form_List Form Lists].  But you wouldn't want to use a ''base form'' when you only want to affect a specific instance ("reference") of an object.  AGAIN: Actions on a ''base form'' affect ALL instances of that form.
  
 
"A Reference ID is a FormID assigned automatically to a Reference [instance] by the GECK when an object is placed in the Render Window [in the right pane of the GECK].  Reference IDs are required to uniquely identify each instance of an object in-game. The Form ID column of the Cell View window lists Reference IDs" - GECK Glossary.
 
"A Reference ID is a FormID assigned automatically to a Reference [instance] by the GECK when an object is placed in the Render Window [in the right pane of the GECK].  Reference IDs are required to uniquely identify each instance of an object in-game. The Form ID column of the Cell View window lists Reference IDs" - GECK Glossary.
Line 268: Line 307:
  
 
Note it is the ''persistent flag'' on the Reference that is mandatory in order for a RefID to become included in the search list for scripts/targets/whatever.  (See [http://geck.foesmm.org/index.php/Creating_a_New_Persistent_Reference GECK: Creating New Persistent Reference].)  Otherwise the list of refs to search through would be way too huge and cause engine lag.
 
Note it is the ''persistent flag'' on the Reference that is mandatory in order for a RefID to become included in the search list for scripts/targets/whatever.  (See [http://geck.foesmm.org/index.php/Creating_a_New_Persistent_Reference GECK: Creating New Persistent Reference].)  Otherwise the list of refs to search through would be way too huge and cause engine lag.
 +
 +
<span id="MapIsNotTerrain"></span>
 +
====The Map is not the Terrain and the ID is not the Record Number====
 +
 +
It is common to refer to the text form of the "IDs" for records ("Editor-ID", "Rec-ID", "Form-ID", and "Base-ID") as if they were the record identifiers used by the engine.  These are "labels" given (or not) by each mod author when they create the record solely for the benefit of us "numerically challenged humans".  For this reason, it is assumed they must be unique between plugins.  While this is a good practice, and something to be encouraged for the benefit of those searching out records by those references in tools such as '''GECK''' or '''xEdit''', it is important to understand that, like a "map", the text labels for those records are not the actual "terrain"; nor the "record number" actually used by the game engine.  It can't afford to leave something that critical up to fallible humans.  The '''GECK''' automatically assigns "record numbers" sequentially when you create a new record, and the "mod index" hexadecimal pair at the beginning of that record, consisting of the "current load order index" of the plugin makes it unique between plugins.  (See [http://fallout.wikia.com/wiki/Help:Form_IDs Help:Form IDs] for an explanation of how to interpret the "mod index" from a Form-ID or record number.)
 +
 +
Think about that for a minute.  The '''GECK''' only knows about plugin files you chose to load for that editting session.  Typically that will consist of the "FalloutNV" EXE and ESM, possibly some DLC if your plugin requires assets from it, and the plugin you are working on.  How is it going to know what other plugin "ID" text labels there are to determine yours are unique?  From one session to another you might load a different series of plugins.  It can't predict that "load order" for certain, and the '''GECK''' itself doesn't care.  Which is why the "mod index" couplet at the beginning of the record number is so clever and crucial to ensure uniqueness between plugins. 
 +
 +
This is proven out by examining any record in '''xEdit''': the "ID" label is a text data field within the record, just like any other "value".  (For example: the "Script" record variable "SLSD - Local Variable Data" identifies each "variable name" based upon it's "index value" within an array of variables specific to that script with the "text name" stored as "SCVR - Name" data.  You have to identify the "record number" before you can determine the "text name"; and not the other way around.)  A test was conducted to confirm that the text "Ref-ID" label did not have to actually be "unique" between plugins.  The same "Ref-ID" label was given to the same object in two different plugins, and the game had no problems differentiating between the two.  Not even when one plugin removed the "persistent object" by the "Ref-ID" they had in common, the same object from the other plugin was unaffected.  It did not matter if one plugin was made dependent upon the other.  Because they were records from different plugins, the engine could tell them apart.
 +
 +
Consequently, always bear in mind that when someone is speaking in terms of one of the forms of "ID", they are often meaning "as a way of identifying the specific record number".
 +
  
 
<span id="Tip-refVar"></span>
 
<span id="Tip-refVar"></span>
====TIP: Reference Variables explained====
+
 
 +
====TIP Reference Variables explained====
 
: Thanks to '''vforvic''' of the Nexus "Fallout 3 Mod Talk" forum for the basis of the following:
 
: Thanks to '''vforvic''' of the Nexus "Fallout 3 Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 349: Line 401:
  
 
Keep in mind that spawning objects in a cell using the Console is not the same as placing them in the GECK because you can't "spawn in" things with Ref-ID's.  Ref-IDs are '''always''' assigned automatically by the '''GECK''' when form records are placed in "the world".
 
Keep in mind that spawning objects in a cell using the Console is not the same as placing them in the GECK because you can't "spawn in" things with Ref-ID's.  Ref-IDs are '''always''' assigned automatically by the '''GECK''' when form records are placed in "the world".
</div>
 
  
 
But not everything within the "object tree" can then be put into the "Render window" and become a Ref-ID.  Hence the difference between Base, Ref & Form ID: a Ref-ID always has a Base-ID, and conversely a Base-ID means it can create "references" that rely on it.  "Message" objects are something outside of that relationship.  A "message" is its own kind of object; like a "sort of" note, with it's own Form-ID.  (The GECK distinguishes between "notes" and "messages", and so should you.  In the same way, GECK does some things one way, and addons such as the "New Vegas Script Extender" (NVSE) can do them differently.)  The GECK command "ShowMessage" needs a Form-id to point to. You can't just use the message text directly as a parameter.  There are 2 kinds of messages though.  Read up on [http://geck.bethsoft.com/index.php?title=Message Message] in the GECK wiki.  The [http://nvse.silverlock.org/ New Vegas Script Extender (NVSE)] and [http://rd.nexusmods.com/newvegas/mods/58277 JIP LN NVSE Plugin] mods add several additional "message" functions that facilitate passing message text directly as a parameter.  (See [[#Tip-Notes|TIP: Passing a 'Note' to the player.]])
 
But not everything within the "object tree" can then be put into the "Render window" and become a Ref-ID.  Hence the difference between Base, Ref & Form ID: a Ref-ID always has a Base-ID, and conversely a Base-ID means it can create "references" that rely on it.  "Message" objects are something outside of that relationship.  A "message" is its own kind of object; like a "sort of" note, with it's own Form-ID.  (The GECK distinguishes between "notes" and "messages", and so should you.  In the same way, GECK does some things one way, and addons such as the "New Vegas Script Extender" (NVSE) can do them differently.)  The GECK command "ShowMessage" needs a Form-id to point to. You can't just use the message text directly as a parameter.  There are 2 kinds of messages though.  Read up on [http://geck.bethsoft.com/index.php?title=Message Message] in the GECK wiki.  The [http://nvse.silverlock.org/ New Vegas Script Extender (NVSE)] and [http://rd.nexusmods.com/newvegas/mods/58277 JIP LN NVSE Plugin] mods add several additional "message" functions that facilitate passing message text directly as a parameter.  (See [[#Tip-Notes|TIP: Passing a 'Note' to the player.]])
Line 356: Line 407:
  
 
"According to the layout of this system, the maximum number of additional modules that can be loaded by the game is 254 (256 load order ranges, - 1 for the Savegame FF range, - 1 for the always-mandatory Fallout3.esm/FalloutNV.esm)." - [http://fallout.gamepedia.com/Form_ID Form-ID on The Vault wiki]
 
"According to the layout of this system, the maximum number of additional modules that can be loaded by the game is 254 (256 load order ranges, - 1 for the Savegame FF range, - 1 for the always-mandatory Fallout3.esm/FalloutNV.esm)." - [http://fallout.gamepedia.com/Form_ID Form-ID on The Vault wiki]
 +
 +
: '''FiftyTifty''' added the following advice:
 +
Let's suppose you have a number of Actors you don't want active until your quest reaches a certain "stage".  Then you want a script for them to [http://geckwiki.com/index.php?title=OnLoad Begin OnLoad].  But "OnLoad" will not run on anything "disabled".  (See the "Notes" on that page and also [http://geckwiki.com/index.php?title=Running_an_OnLoad_block_on_a_disabled_item Running an OnLoad block on a disabled item].)  You need some sort of "switch" to enable them.
 +
 +
Rather than enabling each actor individually, set the placed ''actor references'' to have the same ''parent reference'': a dummy trigger object you place in the cell. Then when you want the actors to be enabled, just enable the ''parent reference'' object in your script (as in:
 +
<pre>
 +
actorrefParent.Enable()
 +
</pre>
 +
 +
See the GECKWiki page [http://geckwiki.com/index.php?title=Reference#Enable_Parent Enable Parent] entry.
 +
</div>
  
 
<span id="Tip-GlobVar"></span>
 
<span id="Tip-GlobVar"></span>
==== Global ref variables 'Player' and 'PlayerREF' ====
+
 
 +
==== TIP Global ref variables '''Player''' and '''PlayerREF''' ====
 
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
 
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
Line 368: Line 431:
 
white-space: -o-pre-wrap;    /* Opera 7+ */
 
white-space: -o-pre-wrap;    /* Opera 7+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">According to the Community GECK site, "[http://geck.technodeep.net/index.php/Player Player] is used to describe several things, sometimes simultaneously."  Among them is: "A scripting keyword that is effectively a global [http://geck.technodeep.net/index.php/Reference_variables reference variable] that resolves to the Actor reference described above."
+
">According to the Community GECK site, "[http://geckwiki.com/index.php?title=Player Player] is used to describe several things, sometimes simultaneously."  Among them is: "A scripting keyword that is effectively a global [http://geckwiki.com/index.php?title=Reference_variables reference variable] that resolves to the Actor reference described above."
  
The [http://geck.technodeep.net/index.php/Ref_Variable Ref Variable] page only uses "'''PlayerREF'''" for checking that a locally defined ref variable is that specific Actor "formid" reference.  It cautions regarding using a base form reference: "Beware that this is still a base form and may not be used as the [http://geck.technodeep.net/index.php/Calling_reference calling reference] to functions that allows this syntax, although it may be passed as the target if the function permits this.
+
The [http://geckwiki.com/index.php?title=Ref_Variable Ref Variable] page only uses "'''PlayerREF'''" for checking that a locally defined ref variable is that specific Actor "formid" reference.  It cautions regarding using a base form reference: "Beware that this is still a base form and may not be used as the [http://geckwiki.com/index.php?title=Calling_reference calling reference] to functions that allows this syntax, although it may be passed as the target if the function permits this.
  
 
The combination of those statements suggest that it is a poor practice to assume the variable "'''Player'''" refers to the PC Actor formid at any given moment without checking first.  And "[PlayerRef].< function >" syntax implies that "[PlayerRef]" is an abstraction of a locally initialized (e.g. "set myPlayerRef = '''PlayerREF'''") variable.  The following hopefully clears this up.
 
The combination of those statements suggest that it is a poor practice to assume the variable "'''Player'''" refers to the PC Actor formid at any given moment without checking first.  And "[PlayerRef].< function >" syntax implies that "[PlayerRef]" is an abstraction of a locally initialized (e.g. "set myPlayerRef = '''PlayerREF'''") variable.  The following hopefully clears this up.
Line 391: Line 454:
 
On the whole, in practice, it's simply best to use "'''PlayerREF'''" for the reference variable, and only use "'''Player'''" for the base form.  Because all vanilla "GetAV" variants are reference functions, "'''PlayerREF'''" is preferable, and definitely doesn't cause "GetBaseAV" to not work. "GetBaseAV" cannot be called on a base form variable at all, including "'''Player'''" (00000007). The only reason "'''Player'''.GetBaseAV" will work is because it's interpreted as the shortcut to "'''PlayerREF'''" there. If you were to pass the "'''Player'''" base form to a ref var ("rSomeRef") and then call "rSomeRef.GetBaseAV", your script wouldn't work.
 
On the whole, in practice, it's simply best to use "'''PlayerREF'''" for the reference variable, and only use "'''Player'''" for the base form.  Because all vanilla "GetAV" variants are reference functions, "'''PlayerREF'''" is preferable, and definitely doesn't cause "GetBaseAV" to not work. "GetBaseAV" cannot be called on a base form variable at all, including "'''Player'''" (00000007). The only reason "'''Player'''.GetBaseAV" will work is because it's interpreted as the shortcut to "'''PlayerREF'''" there. If you were to pass the "'''Player'''" base form to a ref var ("rSomeRef") and then call "rSomeRef.GetBaseAV", your script wouldn't work.
 
</div>
 
</div>
 
  
 
=== Custom items ===
 
=== Custom items ===
Line 430: Line 492:
  
 
<span id="Tip-BodySlots"></span>
 
<span id="Tip-BodySlots"></span>
==== TIP: Biped & Equipped Objects ====
+
==== TIP Biped and Equipped Objects ====
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 451: Line 513:
 
</div>
 
</div>
  
==== TIP: Flickering on added item (Radius Setting) ====
+
<span id="Tip-RadiusSetting"></span>
 
+
==== TIP Flickering on added item Radius Setting ====
 
:Sometimes when adding an item to another (such as a hat on a Mr Gutsy) it seems to flicker out of sight depending on the player's camera angle or distance. This is a classic symptom of a problem with the model's "Radius setting". The following is courtesy of '''Prensa''' in a specific reply to a question about this issue with general application.  
 
:Sometimes when adding an item to another (such as a hat on a Mr Gutsy) it seems to flicker out of sight depending on the player's camera angle or distance. This is a classic symptom of a problem with the model's "Radius setting". The following is courtesy of '''Prensa''' in a specific reply to a question about this issue with general application.  
 
<div class="boilerplate metadata" id="Warning_Notice" style="margin:0px 10px 10px 10px;  border:1px dashed #DAA520;  color: white;  background-color:#333333;  padding:3px;  white-space: pre-wrap;  white-space: -moz-pre-wrap;  white-space: -pre-wrap;  white-space: -o-pre-wrap;  word-wrap: break-word">
 
<div class="boilerplate metadata" id="Warning_Notice" style="margin:0px 10px 10px 10px;  border:1px dashed #DAA520;  color: white;  background-color:#333333;  padding:3px;  white-space: pre-wrap;  white-space: -moz-pre-wrap;  white-space: -pre-wrap;  white-space: -o-pre-wrap;  word-wrap: break-word">
Line 473: Line 535:
 
&nbsp;
 
&nbsp;
  
==== TIP: Floating objects ====
+
<span id="Tip-FloatingObjects"></span>
 
+
==== TIP Floating objects ====
 
:Thanks to '''Stonedturtle26''' and '''baduk''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:  
 
:Thanks to '''Stonedturtle26''' and '''baduk''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:  
 
<div class="boilerplate metadata" id="Notice_Box" style="margin:0px 10px 10px 10px;  border:1px dashed #DAA520;  color: lightgray;  background-color:#333333;  padding:3px;  word-wrap: break-word">You created a custom weapon but find that if you "drop" it, it floats and you cannot pick it up. To fix:  
 
<div class="boilerplate metadata" id="Notice_Box" style="margin:0px 10px 10px 10px;  border:1px dashed #DAA520;  color: lightgray;  background-color:#333333;  padding:3px;  word-wrap: break-word">You created a custom weapon but find that if you "drop" it, it floats and you cannot pick it up. To fix:  
Line 491: Line 553:
 
:*Set "Max Linear Velocity" to "1068".  
 
:*Set "Max Linear Velocity" to "1068".  
 
:*Set "Max Angular Velocity" to "31.5700".   
 
:*Set "Max Angular Velocity" to "31.5700".   
:Now the weapon should drop to the ground.  
+
:The weapon should now drop to the ground. NOTE: If you don't see these options either you are looking under the wrong '''node''' or are using a version of '''NifSkope''' other than the one recommended up under the [[#Programs_and_Tools|Programs and Tools]] section.
 +
:''Mopp shapes'' are used for '''static collisions''' (i.e. anything that doesn't move: like fences, walls, etc.). They can be used for movable objects, but are far more performance intensive (depends on the collision poly count) than '''convex''' or '''box''' shapes.
 +
 
 +
:The ''BSXFlags'' entry is crucial to this behavior.  It must be found / placed under the '''BSFadeNode''' in '''NifSkope'''.  You need to have the '''Use BSFadeNode Root''' option checked in your "paint" type program when exporting the NIF. (It's on the upper right area of the '''NIF Export''' options of '''Blender'''.)
  
:For other object types, look in NIF.XML located in the '''Blender foundation\blender\.blender\scripts\bpymodules\pyffi\formats\nif\''' folder or the '''NifSkope''' documentation files in the "Doc" folder of it's installation folder. Search for ''bhkRigidBody''. It has a good listing and some simple explanations of the options.  
+
:For other object types, look in NIF.XML located in the '''Blender foundation\blender\.blender\scripts\bpymodules\pyffi\formats\nif\''' folder or the '''NifSkope''' documentation files in the "Doc" folder of it's installation folder. Search for ''bhkRigidBody''. It has a good listing and some simple explanations of the options.
 
</div>  
 
</div>  
 
&nbsp;
 
&nbsp;
  
==== TIP: Head Parts Rotated ====
+
<span id="Tip-HeadPartsRotated"></span>
  
 +
==== TIP Head Parts Rotated ====
 
It's not known why head parts changed between FO3 and FNV, considering that so much else in the game engine is identical, but they did. If you port a head part (hat, glasses, facemask, etc) from FO3 to FNV or from FNV to FO3, or make a new open helmet/hat/head accessory that uses a existing mesh, whether it's a simply a clone or a retexture, it tends to equip sideways (rotated by 90 degrees).
 
It's not known why head parts changed between FO3 and FNV, considering that so much else in the game engine is identical, but they did. If you port a head part (hat, glasses, facemask, etc) from FO3 to FNV or from FNV to FO3, or make a new open helmet/hat/head accessory that uses a existing mesh, whether it's a simply a clone or a retexture, it tends to equip sideways (rotated by 90 degrees).
  
Line 517: Line 583:
 
&nbsp;
 
&nbsp;
  
==== TIP: Item Substitution ====
+
<span id="Tip-Substitutions"></span>
 
+
==== TIP Item Substitution ====
 
:Thanks to '''madmongo''' and '''Jokerine''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:  
 
:Thanks to '''madmongo''' and '''Jokerine''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:  
 
<div class="boilerplate metadata" id="Warning_Notice" style="margin:0px 10px 10px 10px;  border:1px dashed #DAA520;  color: lightgray;  background-color:#333333;  padding:3px;  white-space: pre-wrap;  white-space: -moz-pre-wrap;  white-space: -pre-wrap;  white-space: -o-pre-wrap;  word-wrap: break-word">Suppose you have created a unique Service Rifle with a custom mesh that you want to use to replace the vanilla Service Rifle that Private Halford can reward the Player with for completing the unmarked quest "Help for Halford." How do you find where the quest/dialogue reward is given in the GECK so you can replace the vanilla weapon with your unique custom version?  
 
<div class="boilerplate metadata" id="Warning_Notice" style="margin:0px 10px 10px 10px;  border:1px dashed #DAA520;  color: lightgray;  background-color:#333333;  padding:3px;  white-space: pre-wrap;  white-space: -moz-pre-wrap;  white-space: -pre-wrap;  white-space: -o-pre-wrap;  word-wrap: break-word">Suppose you have created a unique Service Rifle with a custom mesh that you want to use to replace the vanilla Service Rifle that Private Halford can reward the Player with for completing the unmarked quest "Help for Halford." How do you find where the quest/dialogue reward is given in the GECK so you can replace the vanilla weapon with your unique custom version?  
Line 549: Line 615:
 
&nbsp;
 
&nbsp;
  
==== TIP: Mashing Meshes ====
+
<span id="MashingMeshes"></span>
 
+
==== TIP Mashing Meshes ====
:Thanks to '''madmongo''', '''M48A5''', and 'RoyBatterian'''of the Nexus Fallout "New Vegas Mod Troubleshooters" forum for the basis of the following:'''  
+
:Thanks to '''madmongo''', '''M48A5''', and '''RoyBatterian''' of the Nexus Fallout "New Vegas Mod Troubleshooters" forum for the basis of the following:'''  
 
<div class="boilerplate metadata" id="Notice_Box" style="margin:0px 10px 10px 10px;  border:1px dashed #DAA520;  color: lightgray;  background-color:#333333;  padding:3px;  word-wrap: break-word">Suppose for example you want to place the model of a particular pistol into a holster for display purposes. (This "pistol" will not be usable. It's for aesthetic purposes only.) Some call this process "mashing" two meshes together (e.g. mashing the pistol into the holster). The process is similar for other sorts of "mashing".  
 
<div class="boilerplate metadata" id="Notice_Box" style="margin:0px 10px 10px 10px;  border:1px dashed #DAA520;  color: lightgray;  background-color:#333333;  padding:3px;  word-wrap: break-word">Suppose for example you want to place the model of a particular pistol into a holster for display purposes. (This "pistol" will not be usable. It's for aesthetic purposes only.) Some call this process "mashing" two meshes together (e.g. mashing the pistol into the holster). The process is similar for other sorts of "mashing".  
 
The basic procedure is first go into '''NifSkope''' and remove all of the unneeded "animations" and "collision" and such so that you are left with just the (in this instance: "weapon") source mesh. Save that to some new nif (you can delete this temporary nif later).
 
The basic procedure is first go into '''NifSkope''' and remove all of the unneeded "animations" and "collision" and such so that you are left with just the (in this instance: "weapon") source mesh. Save that to some new nif (you can delete this temporary nif later).
Line 568: Line 634:
  
 
(You can do the same basic thing to make a wearable rifle slung over your back. Just edit the rifle's mesh so that it is located on the back where you want it, and weight it 100 percent to the spine bone. If I recall correctly, the spine bone you want is just the one called spine, not spine1 or spine2.)
 
(You can do the same basic thing to make a wearable rifle slung over your back. Just edit the rifle's mesh so that it is located on the back where you want it, and weight it 100 percent to the spine bone. If I recall correctly, the spine bone you want is just the one called spine, not spine1 or spine2.)
 +
 +
'''aghjax''' adds:
 +
<div class="boilerplate metadata" id="Notice_Box" style="margin:0px 10px 10px 10px;  border:1px dashed #DAA520;  color: lightgray;  background-color:#666666;  padding:3px;  word-wrap: break-word">
 +
When your '''NifSkoped''' mashup CTDs: "You very likely broke some branch dependencies. You have to compare them to a working NIF preferably from the [sources] you used to see what is out of place. And make sure you don't have duplicate ''Scene Roots''."
 +
</div>
 
</div>  
 
</div>  
 
&nbsp;
 
&nbsp;
  
==== TIP: Movable/Static custom objects in cell ====
+
<span id="Tip-MultiSceneRoots"></span>
 +
==== TIP Mashing Meshes - Fix multiple SceneRoots ====
 +
: Thanks to '''madmongo''', '''M48A5''', and '''AusAllerWelt''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">When attempting to "mashup" a custom mesh such as armor from parts of other different meshes, sometimes it looks just fine in '''NifSkope''', but all "stretchy" and "weird" in the '''GECK'''.
  
 +
This is usually an indication that the "bone weights" of the "mesh rigging" to the "armature" (AKA "skeleton") are off.  This is primarily avoided by ensuring the outfits you are copying bits from all use the same armature/skeleton.
 +
 +
However, you might end up with multiple ''Scene_Root'' nodes (visible in '''NifSkope''') as the result of combining parts from different mesh NIF files in '''Blender''' (or your mesh editor of choice).  This can happen when you copy not just the specific ''blocks'' but the entire ''NiNode'' between meshes.  There should only be one ''Scene_Root'' node and it should be at the top of the NIF in '''NifScope'''.  Make sure you copy ''branches'' (''NiTriShape''s) from one NIF to the other. You should end up with a single ''Scene_Root'' and all of the various bones and mesh bits under that.
 +
 +
You can correct this problem by ensuring you remove all the armatures in the end ("Remove Branch" in '''NifScope''', or similar command in your mesh editor), and import the desired skeleton again so you only have one ''Scene_Root''/armature. If the mesh still has two after the export to a NIF you can just select the ''NiNode'' (in '''NifSkope''') that contains all parts of the mesh and use "Crop to Branch" and then rename it to ''Scene_Root''.
 +
 +
It's generally better to work on your new meshes in your mesh editor of choice, because you have more control over what you want to do and can also fix weighting issues that may arise by mashing parts of different outfits together. If you plan on making more "mashups", it's best to consider learning how to work with your mesh editor.  It's always better to use the correct tool designed for the task instead of trying to force a different one to do something not intended (like driving screws with a hammer: it will ''probably'' work; just not as well).
 +
</div>
 +
 +
<span id="Tip-MovableObjects"></span>
 +
 +
==== TIP Movable or Static custom objects in cell ====
 
:Thanks to '''madmongo''', '''davidlallen''', and '''Tefnacht''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:  
 
:Thanks to '''madmongo''', '''davidlallen''', and '''Tefnacht''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:  
 
<div class="boilerplate metadata" id="Notice_Box" style="margin:0px 10px 10px 10px;  border:1px dashed #DAA520;  color: lightgray;  background-color:#333333;  padding:3px;  word-wrap: break-word">You create a custom object and place it in a cell. But then you can no longer move it simply by clicking and dragging. Why not?  
 
<div class="boilerplate metadata" id="Notice_Box" style="margin:0px 10px 10px 10px;  border:1px dashed #DAA520;  color: lightgray;  background-color:#333333;  padding:3px;  word-wrap: break-word">You create a custom object and place it in a cell. But then you can no longer move it simply by clicking and dragging. Why not?  
Line 597: Line 687:
  
 
<span id="Tip-InjectedRecs"></span>
 
<span id="Tip-InjectedRecs"></span>
==== TIP: Plugins can't override injected records ====
+
==== TIP Plugins can not override injected records ====
 
: Thanks to '''luthienanarion''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
: Thanks to '''luthienanarion''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 609: Line 699:
  
 
<span id="Tip-Repairability"></span>
 
<span id="Tip-Repairability"></span>
==== TIP: Repairability ====
+
==== TIP Repairability ====
: Thanks to '''slippyguy''' for his informative description in the mod [http://www.nexusmods.com/newvegas/mods/52510 Alternative Repairing] identifying a number of potential problems he resolved.
+
: Thanks to '''slippyguy''' for his informative description in the mod [http://www.nexusmods.com/newvegas/mods/52510 Alternative Repairing] listing a number of potential problems he identified/resolved.
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">A "repair kit" (either weapon or armor) is one of the most common methods of restoring/repairing the condition of an item.  However, they have the limitation that the item must have a DT (for armor) or "condition" (for weapons) greater than zero, and be "equippable", as the kits only work on the currently equipped item(s) of that category.  The only alternatives are to pay a "vendor" to repair the item, or have sufficient "repair skill" along with the correct mix and quantity of "ingredients" to do so by the player.  NOTE: A mod like "[http://www.nexusmods.com/newvegas/mods/58743 Workbench Repairs]" may need to be recommended to enable the player to utilize that "repair skill" generally.  Search the Nexus on keyword "repair".</span>
+
">A "repair kit" (either weapon or armor) is one of the most common methods of restoring/repairing the condition of an item.  However, they have the limitation that the item must have a DT (for armor) or "condition" (for weapons) greater than zero, and be "equippable", as the kits only work on the currently equipped item(s) of that category.  The only alternatives are to pay a "vendor" to repair the item, or have sufficient "repair skill" along with the correct mix and quantity of "ingredients" to do so by the player.  (NOTE: A mod like "[http://www.nexusmods.com/newvegas/mods/58743 Workbench Repairs]" may need to be recommended to enable the player to utilize that "repair skill" generally.  Search the Nexus on keyword "repair".)
  
 
If you make a custom or unique item that is intended to be repairable by other than a "repair kit", you need to ensure it has a couple of things.
 
If you make a custom or unique item that is intended to be repairable by other than a "repair kit", you need to ensure it has a couple of things.
  
* For the player to be able to repair using "found items" (as enabled by some mods), you have to create (or utilize an existing) "recipe" that specifies which items and quantities are "ingredients" (inputs) and "outputs".  (See the [[#>_Recipes|> Recipes]] entry in the [[#Misc_Topics|Misc Topics]] section.)  If you wish to limit the ability to repair that item to only those with particular skill levels or "catalyst" items, those need to be set as "conditions" in the "Requirements" tab of the recipe.  (A "catalyst item" is one which appears in both the "inputs" and "outputs" tabs in the same quantity (i.e. "is not consumed").  Most commonly these are a "tool".)  <span style="color: red;background-color:#fff5f5">NOTE: Due to a limitation of the game engine, any "breakdown" recipe has to produce at least '''three different''' items as "outputs" to display correctly.</span>
+
* For the player to be able to repair using "found items" (as enabled by some mods), you have to create (or utilize an existing) "recipe" that specifies which items and quantities are "ingredients" (inputs) and "outputs".  (See the [[#.3E_Recipes|Recipes]] entry in the [[#Misc_Topics|Misc Topics]] section.)  If you wish to limit the ability to repair that item to only those with particular skill levels or "catalyst" items, those need to be set as "conditions" in the "Requirements" tab of the recipe.  (A "catalyst item" is one which appears in both the "inputs" and "outputs" tabs in the same quantity (i.e. "is not consumed").  Most commonly these are a "tool".)  <span style="color: red;background-color:#fff5f5">NOTE: Due to a limitation of the game engine, any "breakdown" recipe has to produce at least '''three different''' items as "outputs" to display correctly.  "Catalysts" are a way to circumvent this.</span>
  
 
* The game does not support 'OR' item ingredients: it's all or nothing. 'Dummy' recipes (as "notes": see also [[#Tip-Recipes|TIP: Passing a 'Recipe' to the player]]) can be shown instead to bypass this game limitation and provide all the relevant information without cluttering the crafting interface. Once all the required material has been obtained, the real recipe for that set of ingredients can appear and be functional.
 
* The game does not support 'OR' item ingredients: it's all or nothing. 'Dummy' recipes (as "notes": see also [[#Tip-Recipes|TIP: Passing a 'Recipe' to the player]]) can be shown instead to bypass this game limitation and provide all the relevant information without cluttering the crafting interface. Once all the required material has been obtained, the real recipe for that set of ingredients can appear and be functional.
  
* For a vendor to be able to repair a "new item" in exchange for cash, the item must be added to a "leveled list" used by that vendor.  The recommended method is to create your own list, and add that list to those the vendor(s) in question use by way of an "OnLoad" script.  (Vendors don't all use the same lists or even generic ones.)  It is possible to add your items directly to an existing list, but that runs the risk creating problems if your mod is uninstalled or another mod rebuilts the list without considering the possibility it was modified by others.
+
* For a vendor to be able to repair a "new item" in exchange for cash, the item must be added to a "leveled list" used by that vendor. (See [[#Tip-LeveledLists|TIP: Adding Items to Actors (Leveled Lists)]] under the [[#Scripting|Scripting]] section.) The recommended method is to create your own list, and add that list to those the vendor(s) in question use by way of a script.  (Vendors don't all use the same lists or even generic ones.)  It is possible to add your items directly to an existing list, but that runs the risk creating problems if your mod is uninstalled or another mod rebuilds the list without considering the possibility it was modified by others.
  
 
* In order for a "vendor" to be able to repair something for cash, the item must have a value greater than zero.
 
* In order for a "vendor" to be able to repair something for cash, the item must have a value greater than zero.
Line 657: Line 747:
  
 
<span id="Tip-PlantBug"></span>
 
<span id="Tip-PlantBug"></span>
====TIP: Re-spawning Plant bug fix====
+
====TIP Respawning Plant bug fix====
 
: Thanks to '''masternetra''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
: Thanks to '''masternetra''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 702: Line 792:
  
 
Assuming you want to make your own landscape from scratch, the first step is just creating the world space. Click on "World | World Spaces" in the GECK, and when that form comes up, just click "New" on the left hand side to give your new region a name, and fill in the blanks. Exit out of that, and save your mod, because the next step will usually crash the GECK.
 
Assuming you want to make your own landscape from scratch, the first step is just creating the world space. Click on "World | World Spaces" in the GECK, and when that form comes up, just click "New" on the left hand side to give your new region a name, and fill in the blanks. Exit out of that, and save your mod, because the next step will usually crash the GECK.
+
 
<span id="Tip-CenterOn"></span>
+
<span id="Tip-WorldspaceHiLites"></span>
====TIP: "Center On Cell" (COC) Markers====
+
==== Highlights of the Worldspace ====
: Thanks to '''pixelhate''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:  
+
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Keep in mind when navigating:
+
">This is a summary of various points raised elsewhere in this section for quick reference. Some details may varyBe conservative.
* '''COC <InteriorCellName>''' (Center on Cell) is a Console command that will bring you ("Player") inside a ''Interior'' cell at the spot where the '''CocMarkerHeading''' (a GECK [http://geckwiki.com/index.php/Markers Markers] reference) is placed.<br>
 
* '''COCMarkerHeading''' defines the placement and direction when the player COCs to the cell. You can only place one '''COCMarkerHeading''' per cell. If one is already in the cell, you won't be able to place another one.
 
* '''COW <WorldspaceName> <X, Y coordinates>''' (Center On World) is a Console command that will place you in the named ''WorldSpace'' at the coordinates specifiedIt doesn't use any GECK '''Marker''' references.
 
* '''COCMarkerHeading''' is a special '''Marker''' that (in GECK) when dragged into a cell defines the placement and direction of the Player when they use a "COC" command into the cell.
 
* '''North Marker''' placed in a ''Worldspace'' defines that direction as cell '''North'''.</div>
 
  
There's an auto navmesher, but that is buggy as all heck. Some have found that it works reasonably well on wilderness landscapes containing simple objects like trees and cactuses. It often completely fails when the cell contains SCOLs ("static collections") and doesn't work well at all if there are a lot of complex objects inside the cell. That means that you end up having to hand navmesh a lot of cells. If your new worldspace only has a few usable cells, this isn't a big deal, and you can navmesh all of them in a few hours easily. A worldspace has basically 64x64 cells, which is 4096 total cells. You can auto navmesh three or four cells per minute, and once you get experienced at navmeshing, you can probably finish a fairly complex cell in a few minutes. If you figure an average of one cell per minute (being a mix of hand navmeshed and auto navmeshed), that's 4096 minutes to navmesh the entire worldspace. That works out to a bit over 68 hours. If you navmesh for three hours per day (because you have a job or go to school or do something that takes up the rest of your day) then it will take you roughly 23 days to navmesh the entire worldspace.
+
* In FNV, the worldspace size is 128x128 cells with a heightmap for -63 to +63 in both the X and Y directions. Weird things start to happen if you go over that size.
 +
:* The GECK's heightmap editor only displays +/- 32 in each direction, so it only shows a 64x64 heightmap. The rest of it is blacked out even though you can go to cells beyond that in the render window and see that the cells are both heightmapped and textured (just a uniform brown dirt texture).
 +
:: My GECK tends to want to crash if I get close to the edges of the map, centered on +/- 63 in either the X or Y direction.
  
The auto navmesher will often not navmesh across roads.  If you set the auto navmesher to "Height Map Only" mode, it works a lot faster and a lot better, and will usually navmesh across roads just fine.  However, it will usually navmesh through fences. So be prepared to hand navmesh any cell that contains a road or a fence.
+
* Keep all land height above 14,000 or you can have LOD issues.
  
Use the "b" key in your "render window" to show "cell boundaries". You'll want to arrange buildings and structures and other things so that you can easily do the navmeshing. You wouldn't want a building's door to be straddling a cell boundary, for example.
+
* If you are using the landscape editor, be gentle. If you try to shape the landscape too quickly, you tend to create landscape tears.
  
There's also an "auto generate navmesh" button under "regions". Don't use it. It is very very very very broken. Some have made it work under some circumstances but it is incredibly buggy.
+
* If you have water, don't forget to add a water texture in your worldspace. "Data\Textures\Water\wastelandwaterpotomac.dds" tends to work well for many different water types (river, lake, etc). I've never tried to make ocean water with it though.
  
LOD generation is similar. It's not too bad if you only have a few cells, but for a large worldspace it takes darn near forever.
+
* Don't ever place water objects in an exterior cell. You can, but that tends to break things.
 +
:* Placed water only sticks to certain Z-axis levels which are the same for every water object in that cell no matter what you do; and there's no way to have water in all 3 levels of the fountain from Dead Money, for example.
 +
:* When you add or adjust the height of a placed water object it changes the height of the water level in that cell. So just '''edit cell''' on the cell in question, reset the water level height to 0 and you're (hopefully) sorted.
 +
::* The way that you adjust water height for a cell is to view that cell in your render window, click on that cell to make sure you have it selected, then click on '''World -> Cells'''...
 +
::* If you selected the cell you want to modify, then that cell will automatically come up selected in the Cell window. From there you can change the water height and the water type.
  
This is why you need to decide ahead of time if you want to create a tiny worldspace that you can finish in a short amount of time, or if you want to create a major sized worldspace that will take you a huge chunk of time to complete.
+
* If you ever get an error where it says that part of the landscape height is out of bounds, the '''GECK''' will helpfully tell you that it can fix it. It can't. Your landscape is totally hosed at that point. Hopefully you saved an earlier version of your mod to go back to.
  
There's a reason that you don't see too many mods with worldspaces on the nexus. It's difficult to figure out, and buggy as all heck. It also takes a huge amount of time, which is why the few worldspaces that you do see tend to be small and simple.  It is not uncommon for a single mod creator to spend so long working on a mod with a new worldspace that the vast majority of that game community has moved on to another game.
+
* If you make an ESP larger than 16 MB and you add something with a reference ID number of some sort to it, you will break your mod. The '''GECK''' will NOT give you any error whatsoever when you do so. When you try to load your mod, you'll crash the game. When you try to load the mod in the '''GECK''' to fix it, you'll crash the '''GECK'''. Hope you saved an earlier version of your mod somewhere that you can go back to.
  
One other thing. If you do try to make a huge worldspace, you can use the regions to add a lot of landscape items like cactuses and trees. This is a huge time saver, but be forwarned. If you have ever clicked on an object in debug mode, you'll notice that the object has an 8 character ID, something like 4100D236 (a completely made-up number). This is a hexidecimal number. The first two digits will be the number of your mod (41 in this case), aka its mod index. Fallout gets 00, and the different mods are assigned numbers as you add them into your mod list. On a system with the official DLC, "Dead Money" is 01, "Honest Hearts" is 02, "Old World Blues" is 03, etc. You can see the mod index in most mod managers. So if you add another mod and it ends up loading before this one, that 41 could get bumped up to 42, for example. Now here's the important part. That xx00D236 part means that you have a six digit hex "form" number for the ID. This corresponds to the file offset in your mod. The largest 6 digit hex number you can have is FFFFFF, which is 16,777,215.  (The FF mod index is reserved for "save game" file changes to the environment, such as inventory and moved objects.)  A worldspace will take 10 to 12 megs just for the heightmap and landscape, not including navmesh and texturing. If you go over the 16 meg limit and add an ''object'', you brick your mod. The GECK will give you no errors at all when it saves your mod, but when you try to load it again, it will lock up the GECK. That means you can't use the GECK to fix it. Hope you have a backup of your mod from earlier somewhere, because that's the only way out of it.
+
* There are several ways to avoid the 16 MB bug.
  
This is important enough to put it another way: What this means to you is that you need to watch your file size. Once you get over 16 megs, you can't add any more ''objects'' or you will break your mod. If this happens, the game can't load your mod and the GECK can't load it either, so if you didn't save an earlier copy of your mod somewhere, it's forever broken. '''Fallout.esm''' is significantly larger than 16 megs, so Bethesda obviously has some way of packing the data in so that they don't get this problem. But the GECK that you and I get to use can't add objects to a mod that is more than 16 megs in size. You can paint landscapes and add navmeshes and such which can take your mod well beyond the 16 meg limit, but as soon as you add an ''object'' to a mod that is larger than 16 megs and save your mod, you just broke it. The GECK won't tell you that it is broken, either. You won't find out until you try to reload your mod in the GECK or if you try to use it in the game.  Authors have had to split mods into multiple files to get around this.
+
:* The first is to create your landscape first, then place all objects into the worldspace, create all interiors, etc. After all that is done, then paint your landscape, add navmeshes, conversations/quests, etc. Landscape, navmeshes, and quest things can all be safely added above the 16 MB boundary. This works well enough for fairly simple mods.
 +
:* The second way involves setting your '''GECK''' up in networked developer mode, which is not how most people set it up. This has instructions for setting your '''GECK''' up in networked mode. There are some errors in these instructions, but as far as I am aware, they are the best instructions you'll find anywhere on the net:
 +
:* [http://geckwiki.com/index.php?title=Version_Control Version Control].
 +
::* In networked mode, the 16 MB bug still applies. So create your worldspace, check that in to version control, then add stuff, and check those changes in. When you do this, the '''GECK''' will automatically place ID values below the 16 MB boundary. I'm sure there are still size limits in there somewhere, but I have yet to hit them using this method, even in mods that contain multiple worldspaces.
 +
::* The '''GECK''' tends to crash when working with larger mods anyway, so keeping the bulk of your mod checked in to version control and only working on small bits of it helps fairly dramatically in preventing '''GECK''' crashes.
  
(Repeat the mantra: save early, save often, keep backups.)
+
* In the regions section of the '''GECK''', there is an option to automatically navmesh the entire region. You may find this tempting, but DO NOT EVER USE THIS FEATURE. It is the most broken thing in the '''GECK''' that I have found yet to date. I did actually get it to correctly navmesh a region once. And only once. It was a fairly simple landscape and there wasn't much on it yet. SCOLS make the navmesher crash. Sometimes it will navmesh inside the region boundaries, sometimes, for no reason whatsoever, it will navmesh OUTSIDE your region boundaries instead of inside. Either way, if it screws up, it completely borks your entire navmesh for the entire worldspace. It also tends to crash in an endless loop constantly popping up a box with the error message "Get Jean!" over and over until you kill the '''GECK''' in the task manager.
 +
 
 +
* Instead, the best you can do with navmeshing is to use the automatic navmesher for a single cell. When you click on the navmesh toolbar to bring it up, the cell auto navmesher is the first question mark from the left, just to the right of the finalize checkmark button. In the navmesh dialog, click the check box to enable height map generation mode, uncheck remove overlapping and remove thin areas, and you'll get about the best performance that you can out of it. A 64x64 worldspace is 4,096 cells. If you can use the auto navmesher to do 4 cells per minute, that's 1,024 minutes, or a bit over 17 hours just clicking on the navmesh button over and over and over and over. If you don't use heightmap generation mode, the navmesher has a tendency to fail to navmesh across bumpy roads and easily walkable surfaces.  (If you set the auto navmesher to '''Height Map Only''' mode, it works a lot faster and a lot better, and will usually navmesh across roads just fine. It will still navmesh across fences though.)
 +
 
 +
* The '''GECK''' will not render your worldspace unless there is something in it. But it's really hard to put something in it if you can't see anything. It's kind of a catch 22. I usually drop the little airplane into it, which I delete later. After that, go to an interior cell so you can get the render window to work properly again, then go to your little plane, and now finally you can see your new landscape. When editing your new landscape, always go to a part of your worldspace that has something in it first. If the first thing the '''GECK''' has to render is a section of worldspace with no objects in it, it goes right back to the render bug where you don't see anything except a gray blob (I think it's actually rendering water everywhere, stupid '''GECK'''...).
 +
 
 +
* If you paint your landscape or use the raise/lower tool in the render window (not the worldspace height editor), you can end up with black squares just outside of the area you were editing. Those black squares will be persistent, in that you can move away from them and they'll still be there when you come back, but they aren't really there. It's just yet another '''GECK''' bug.
 +
 
 +
Welcome to the buggiest parts of the '''GECK'''. Save often. Keep backups.
 +
</div>
 +
 +
<span id="Tip-CenterOn"></span>
 +
 
 +
====TIP Center_On_Cell '''COC''' Markers====
 +
: Thanks to '''pixelhate''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Keep in mind when navigating:
 +
* '''COC <InteriorCellName>''' (Center on Cell) is a Console command that will bring you ("Player") inside a ''Interior'' cell at the spot where the '''CocMarkerHeading''' (a GECK [http://geckwiki.com/index.php/Markers Markers] reference) is placed.<br>
 +
* '''COCMarkerHeading''' defines the placement and direction when the player COCs to the cell. You can only place one '''COCMarkerHeading''' per cell. If one is already in the cell, you won't be able to place another one.
 +
* '''COW <WorldspaceName> <X, Y coordinates>''' (Center On World) is a Console command that will place you in the named ''WorldSpace'' at the coordinates specified.  It doesn't use any GECK '''Marker''' references.
 +
* '''COCMarkerHeading''' is a special '''Marker''' that (in GECK) when dragged into a cell defines the placement and direction of the Player when they use a "COC" command into the cell.
 +
* '''North Marker''' placed in a ''Worldspace'' defines that direction as cell '''North'''.</div>
 +
 
 +
There's an auto navmesher, but that is buggy as all heck. Some have found that it works reasonably well on wilderness landscapes containing simple objects like trees and cactuses. It often completely fails when the cell contains SCOLs ("static collections") and doesn't work well at all if there are a lot of complex objects inside the cell. That means that you end up having to hand navmesh a lot of cells. If your new worldspace only has a few usable cells, this isn't a big deal, and you can navmesh all of them in a few hours easily. A worldspace has basically 64x64 cells, which is 4096 total cells. You can auto navmesh three or four cells per minute, and once you get experienced at navmeshing, you can probably finish a fairly complex cell in a few minutes. If you figure an average of one cell per minute (being a mix of hand navmeshed and auto navmeshed), that's 4096 minutes to navmesh the entire worldspace. That works out to a bit over 68 hours. If you navmesh for three hours per day (because you have a job or go to school or do something that takes up the rest of your day) then it will take you roughly 23 days to navmesh the entire worldspace.
 +
 
 +
The auto navmesher will often not navmesh across roads.  If you set the auto navmesher to "Height Map Only" mode, it works a lot faster and a lot better, and will usually navmesh across roads just fine.  However, it will usually navmesh through fences. So be prepared to hand navmesh any cell that contains a road or a fence.
 +
 
 +
Use the "b" key in your "render window" to show "cell boundaries". You'll want to arrange buildings and structures and other things so that you can easily do the navmeshing. You wouldn't want a building's door to be straddling a cell boundary, for example.
 +
 
 +
There's also an "auto generate navmesh" button under "regions". Don't use it. It is very very very very broken. Some have made it work under some circumstances but it is incredibly buggy.
 +
 
 +
LOD generation is similar. It's not too bad if you only have a few cells, but for a large worldspace it takes darn near forever.
 +
 
 +
This is why you need to decide ahead of time if you want to create a tiny worldspace that you can finish in a short amount of time, or if you want to create a major sized worldspace that will take you a huge chunk of time to complete.
 +
 
 +
There's a reason that you don't see too many mods with worldspaces on the nexus. It's difficult to figure out, and buggy as all heck. It also takes a huge amount of time, which is why the few worldspaces that you do see tend to be small and simple.  It is not uncommon for a single mod creator to spend so long working on a mod with a new worldspace that the vast majority of that game community has moved on to another game.
 +
 
 +
One other thing. If you do try to make a huge worldspace, you can use the regions to add a lot of landscape items like cactuses and trees. This is a huge time saver, but be forwarned. If you have ever clicked on an object in debug mode, you'll notice that the object has an 8 character ID, something like 4100D236 (a completely made-up number). This is a hexidecimal number. The first two digits will be the number of your mod (41 in this case), aka its mod index. Fallout gets 00, and the different mods are assigned numbers as you add them into your mod list. On a system with the official DLC, "Dead Money" is 01, "Honest Hearts" is 02, "Old World Blues" is 03, etc. You can see the mod index in most mod managers. So if you add another mod and it ends up loading before this one, that 41 could get bumped up to 42, for example. Now here's the important part. That xx00D236 part means that you have a six digit hex "form" number for the ID. This corresponds to the file offset in your mod. The largest 6 digit hex number you can have is FFFFFF, which is 16,777,215.  (The FF mod index is reserved for "save game" file changes to the environment, such as inventory and moved objects.)  A worldspace will take 10 to 12 megs just for the heightmap and landscape, not including navmesh and texturing. If you go over the 16 meg limit and add an ''object'', you brick your mod. The GECK will give you no errors at all when it saves your mod, but when you try to load it again, it will lock up the GECK. That means you can't use the GECK to fix it. Hope you have a backup of your mod from earlier somewhere, because that's the only way out of it.
 +
 
 +
This is important enough to put it another way: What this means to you is that you need to watch your file size. Once you get over 16 megs, you can't add any more ''objects'' or you will break your mod. If this happens, the game can't load your mod and the GECK can't load it either, so if you didn't save an earlier copy of your mod somewhere, it's forever broken. '''Fallout.esm''' is significantly larger than 16 megs, so Bethesda obviously has some way of packing the data in so that they don't get this problem. But the GECK that you and I get to use can't add objects to a mod that is more than 16 megs in size. You can paint landscapes and add navmeshes and such which can take your mod well beyond the 16 meg limit, but as soon as you add an ''object'' to a mod that is larger than 16 megs and save your mod, you just broke it. The GECK won't tell you that it is broken, either. You won't find out until you try to reload your mod in the GECK or if you try to use it in the game.  Authors have had to split mods into multiple files to get around this.
 +
 
 +
(Repeat the mantra: save early, save often, keep backups.)
  
 
If you are making a small worldspace, then you probably don't have to worry about this at all. If you are making a large worldspace and are adding tons of landscape objects (cactuses, trees, etc) then you can run into this limit and it will break your mod. So if you are going to do a worldspace, do the landscape first, then add all of your objects, NPCs, creatures, etc. to it, and THEN do the navmeshing and texturing last as those don't care about the 16 meg boundary issue.
 
If you are making a small worldspace, then you probably don't have to worry about this at all. If you are making a large worldspace and are adding tons of landscape objects (cactuses, trees, etc) then you can run into this limit and it will break your mod. So if you are going to do a worldspace, do the landscape first, then add all of your objects, NPCs, creatures, etc. to it, and THEN do the navmeshing and texturing last as those don't care about the 16 meg boundary issue.
  
 
<span id="Tip-North"></span>
 
<span id="Tip-North"></span>
====TIP: Finding cell North in GECK====
+
====TIP Finding cell North in GECK====
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 756: Line 895:
  
 
<span id="Tip-GeneratingLOD"></span>
 
<span id="Tip-GeneratingLOD"></span>
==== TIP: Generating Worldspace LOD ====
+
==== TIP Generating Worldspace LOD ====
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">When either creating or editing a worldspace, you need to generate LOD ("Level of Detail") mesh and textures to reflect those changes.  But first you need to be sure you understand the difference between VWD (View While Distant) and LOD (Level of Detail).  See the [http://www.darkcreations.org/testg/wiki/Category:VWD-OB LOD/VWD Overview] page on "The Elder Scrolls Texture Guide (TESTG)" site.  (The "FNV" version of "TES4LODGen" mentioned there is [http://www.nexusmods.com/newvegas/mods/58562 FNVLODGen], and along with [http://www.nexusmods.com/newvegas/mods/61035/? Ultimate resolution landscape LODs and generator TES4LL] can be used as an alternative to creating LODs in the '''GECK'''.  The "LOD/VWD Overview" page provides a TES4LL process sequence.)
+
">When either creating or editing a worldspace, you need to generate LOD ("Level of Detail") mesh and textures to reflect those changes.  But first you need to be sure you understand the difference between VWD (View While Distant) and LOD (Level of Detail).  See the [http://web.archive.org/web/20170713081056/http://www.darkcreations.org/testg/wiki/Category:VWD-OB LOD/VWD Overview] page on "The Elder Scrolls Texture Guide (TESTG)" site.  (The "FNV" version of "TES4LODGen" mentioned there is [http://www.nexusmods.com/newvegas/mods/58562 FNVLODGen], and along with [http://www.nexusmods.com/newvegas/mods/61035/? Ultimate resolution landscape LODs and generator TES4LL] can be used as an alternative to creating LODs in the '''GECK'''.  The "LOD/VWD Overview" page provides a TES4LL process sequence.)
  
 
The following articles provide guidance on using the '''GECK''' to generate LOD files:  
 
The following articles provide guidance on using the '''GECK''' to generate LOD files:  
Line 767: Line 906:
 
* [http://geckwiki.com/index.php/World_LOD World LOD] GECKWiki page.
 
* [http://geckwiki.com/index.php/World_LOD World LOD] GECKWiki page.
 
* [http://www.truancyfactory.com/tutorials/fallout3/fallout_lod.html Generating LOD Data for Custom Worldspaces in Fallout 3]
 
* [http://www.truancyfactory.com/tutorials/fallout3/fallout_lod.html Generating LOD Data for Custom Worldspaces in Fallout 3]
 +
 +
Make sure your "ground level" is above the "water heightmap" or your LODs will be "gray blobs".  (See [[#TIP_Static_Water_goes_into_Interior_cells_only|TIP Static Water goes into Interior cells only]].)
  
 
The folders used for LOD output files are laid out on the description page of "FNVLODGen".  The key to finding those for yours would be looking for subfolders with the name of "''yourworldspace''".
 
The folders used for LOD output files are laid out on the description page of "FNVLODGen".  The key to finding those for yours would be looking for subfolders with the name of "''yourworldspace''".
Line 775: Line 916:
 
<span id="Tip-StaticWater"></span>
 
<span id="Tip-StaticWater"></span>
  
====TIP: Static Water goes into '''''Interior''''' cells only====
+
====TIP Static Water goes into '''''Interior''''' cells only====
 
: Thanks to '''madmongo''' and '''SnakeSlippers''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
: Thanks to '''madmongo''' and '''SnakeSlippers''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 786: Line 927:
 
</div>
 
</div>
  
Some folks use things like "geological survey data" to generate their heightmaps. See the last couple of threads in the list of tutorials below or poke around on the net.
+
Some folks use things like "geological survey data" to generate their heightmaps. See the last couple of threads in the list of tutorials below (under the [[#Heightmaps|Heightmaps]] section) or poke around on the net.
  
 
If all is well so far, save your heightmap and save your mod. If you didn't restart the GECK earlier, chances are that right here is where the GECK will crash. The second time through this it usually works.
 
If all is well so far, save your heightmap and save your mod. If you didn't restart the GECK earlier, chances are that right here is where the GECK will crash. The second time through this it usually works.
Line 801: Line 942:
  
 
<span id="Tip-TerrainEditor"></span>
 
<span id="Tip-TerrainEditor"></span>
==== TIP: Terrain Editor missing texture ====
+
 
 +
==== TIP Terrain Editor missing texture ====
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 814: Line 956:
 
</div>
 
</div>
  
=== Copying interior/exterior cells between plugins ===
+
=== Copying interior or exterior cells between plugins ===
 
Reusing cells from one plugin to another is a great time saver, but you have to bear some things in mind.
 
Reusing cells from one plugin to another is a great time saver, but you have to bear some things in mind.
  
Line 825: Line 967:
 
You can use either FNVEdit or GECK to duplicate interior cells, but this is how to use the GECK. In the GECK, load up the ESP with the cell you want but don't make it "active", while loading the ESP that you want the cell to end up in (i.e. your new ESP) as the "active file". Then just right click on the desired cell in the "source" plugin and select "Duplicate Cell". It will give the duplicate a name of whatever the cell name is plus COPY (or something like that). '''If there are any objects in the source cell that are unique to the mod you are copying it from or come from one of its masters that you don't want to include, delete those out of the copied cell.''' Then save your "active file" ESP. Do not add items to the cell or do anything else other than duplicate it or the GECK can sometimes get confused and it will mess everything up. Just duplicate the cell, remove anything you don't want in your "active file" ESP, and save. That's it. Exit and reload, and maybe rename the cell so that it doesn't have the word COPY in it, and then edit it to your heart's desire.
 
You can use either FNVEdit or GECK to duplicate interior cells, but this is how to use the GECK. In the GECK, load up the ESP with the cell you want but don't make it "active", while loading the ESP that you want the cell to end up in (i.e. your new ESP) as the "active file". Then just right click on the desired cell in the "source" plugin and select "Duplicate Cell". It will give the duplicate a name of whatever the cell name is plus COPY (or something like that). '''If there are any objects in the source cell that are unique to the mod you are copying it from or come from one of its masters that you don't want to include, delete those out of the copied cell.''' Then save your "active file" ESP. Do not add items to the cell or do anything else other than duplicate it or the GECK can sometimes get confused and it will mess everything up. Just duplicate the cell, remove anything you don't want in your "active file" ESP, and save. That's it. Exit and reload, and maybe rename the cell so that it doesn't have the word COPY in it, and then edit it to your heart's desire.
  
The GECK only includes a file as a resource if it's a "master file". If you load an ESP, the GECK won't treat it as a master (unless you have configured the GECK PowerUp to allow ESPs to be "masters"). The GECK will automatically add any master files that the other ESP loaded since those will all be loaded into your new editing session when you load both ESP files.
+
The GECK only includes a file as a resource if it's a "master file". If you load an ESP, the GECK won't treat it as a master (unless you have configured the '''GECK PowerUp''' plugin to allow ESPs to be "masters".  The '''GECK Extender''' allows this as well without configuring). The GECK will automatically add any master files that the other ESP loaded since those will all be loaded into your new editing session when you load both ESP files.
  
 
This will end up including "master files" from the "original ESP" in your "new ESP", so if you don't want them: just delete them from the GECK data screen when you select your mod for loading. However, if you accidentally left in something dependent upon one of those masters in your copied cell, deleting the master will screw up your mod.   
 
This will end up including "master files" from the "original ESP" in your "new ESP", so if you don't want them: just delete them from the GECK data screen when you select your mod for loading. However, if you accidentally left in something dependent upon one of those masters in your copied cell, deleting the master will screw up your mod.   
Line 880: Line 1,022:
 
However, where a variable will need to be used across ''multiple'' quests, cells and scripts, a well-named ''global variable'' is probably the correct choice.
 
However, where a variable will need to be used across ''multiple'' quests, cells and scripts, a well-named ''global variable'' is probably the correct choice.
  
====Global variables for In-Game Time====
+
====Global variables for In Game Time====
 
* GameDay: Returns the current in-game day (day of the month: 0-31).
 
* GameDay: Returns the current in-game day (day of the month: 0-31).
 
* GameDaysPassed: Returns the amount of days passed since the beginning of the game: i.e. 10/13/81 (October 13, 2281).
 
* GameDaysPassed: Returns the amount of days passed since the beginning of the game: i.e. 10/13/81 (October 13, 2281).
Line 916: Line 1,058:
 
{{Fallout Record Types}}
 
{{Fallout Record Types}}
  
=== Factions, Stealing and Ownership ===
+
=== Factions Stealing and Ownership ===
 
==== Factions ====
 
==== Factions ====
 
This is a topic which gets complex in a hurry in application.  Consider the following a broad overview.
 
This is a topic which gets complex in a hurry in application.  Consider the following a broad overview.
Line 923: Line 1,065:
  
 
You should not generally attempt to change anything about a faction's relationship with another faction.  Instead create a new faction, decide which actors or other factions you want to be members of your new faction, and then establish their relationships with other factions.  If you haven't fully mapped out those inter-faction relationships, things get "surprising".
 
You should not generally attempt to change anything about a faction's relationship with another faction.  Instead create a new faction, decide which actors or other factions you want to be members of your new faction, and then establish their relationships with other factions.  If you haven't fully mapped out those inter-faction relationships, things get "surprising".
 +
 +
If a faction follower is not behaving towards others as expected, consider having it ally with itself.  For example, the game vanilla "follower faction" has got the "player faction" and itself as allies.  This appears to override all previous relationships of that follower and replace them with those of the player.
  
 
[http://fallout.gamepedia.com/Fallout:_New_Vegas_reputations Reputation] is about how members of various factions (including your own "Player" faction) feel about your character.  While related, they are separate issues.  Note you can have both positive and negative reputation (fame/infamy) with a given faction at the same time.  The "fame label" attached to your character is the result of a matrix of that positive/negative range, given in the referenced wiki article.  "Reputation" changes only apply to the Player; not to other Actors.
 
[http://fallout.gamepedia.com/Fallout:_New_Vegas_reputations Reputation] is about how members of various factions (including your own "Player" faction) feel about your character.  While related, they are separate issues.  Note you can have both positive and negative reputation (fame/infamy) with a given faction at the same time.  The "fame label" attached to your character is the result of a matrix of that positive/negative range, given in the referenced wiki article.  "Reputation" changes only apply to the Player; not to other Actors.
Line 935: Line 1,079:
  
 
<span id="Tip-FactionCompanions"></span>
 
<span id="Tip-FactionCompanions"></span>
==== TIP: Companions & Followers ====
+
===== TIP Companions and Followers =====
 
: Thanks to '''miguick''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
: Thanks to '''miguick''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 960: Line 1,104:
 
<span id="Tip-FactionDisguise"></span>
 
<span id="Tip-FactionDisguise"></span>
  
==== TIP: Faction Disguise system ====
+
===== TIP Faction Disguise system =====
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
Line 999: Line 1,143:
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">Scn    DisguiseFactionPulseScript
 
">Scn    DisguiseFactionPulseScript
This script belongs to a spell effect [''DisguiseFactionPulseActorEffect''] that removes Faction Sniffers from the "magic" armor faction donned when players use faction disguises.  The spell is set off intermittently, through a pulse, that filters the appropriate references within its radius. This radius is set to 25 (spell units), currently, and it's planned to reach at least 50 units. The pulse is placed on the player every two seconds, timed through a quest script that kicks off/on when players equip a faction disguise. - Jorge
+
This script belongs to a spell effect [''DisguiseFactionPulseActorEffect''] that removes Faction Sniffers from the "magic" armor faction donned when players use faction disguises.  The spell is set off intermittently, through a pulse, that filters the appropriate references within its radius. This radius is set to 25 ([[Fallout 3/NV Game Units|game units]]), currently, and it's planned to reach at least 50 units. The pulse is placed on the player every two seconds, timed through a quest script that kicks off/on when players equip a faction disguise. - Jorge
  
 
Also, the script only addresses NCR relations. It'll eventually consider any faction that has faction disguises. [Editor - It now does, but only for those with "armor"; i.e. "not the WhiteGloveSociety".]
 
Also, the script only addresses NCR relations. It'll eventually consider any faction that has faction disguises. [Editor - It now does, but only for those with "armor"; i.e. "not the WhiteGloveSociety".]
Line 1,030: Line 1,174:
  
 
=== Bethsoft Basic Tutorials ===
 
=== Bethsoft Basic Tutorials ===
* [http://geck.technodeep.net/index.php?search=tutorial&title=Special%3ASearch&go=Go Bethsoft Basic GECK Tutorials]
+
* [http://geckwiki.com/index.php?search=tutorial&title=Special%3ASearch&go=Go Bethsoft Basic GECK Tutorials]
 
* [http://en.uesp.net/w/index.php?title=Special%3ASearch&search=tutorials&button= Basic Oblivion & Skyrim Tutorials]
 
* [http://en.uesp.net/w/index.php?title=Special%3ASearch&search=tutorials&button= Basic Oblivion & Skyrim Tutorials]
  
 
=== Animation ===
 
=== Animation ===
 
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
* [http://www.nexusmods.com/fallout3/mods/21983/? ACCESS: Animated Computers Consoles Electronics and Security Systems Resource] Resource Mod.
 
 
* [http://www.nexusmods.com/oblivion/mods/28326/? Adult Animation Tutorial For Noobs] by '''Coronerra'''.
 
* [http://www.nexusmods.com/oblivion/mods/28326/? Adult Animation Tutorial For Noobs] by '''Coronerra'''.
 +
* [http://www.nexusmods.com/fallout3/mods/21983/? Animated Computers Consoles Electronics and Security Systems (ACCESS)] FO3 Resource and PDF Tutorial.
 
* [http://www.nexusmods.com/fallout3/mods/9700/? Artorp Object Animation Tutorial] Video and Blender KF files.
 
* [http://www.nexusmods.com/fallout3/mods/9700/? Artorp Object Animation Tutorial] Video and Blender KF files.
 
* [[Avoiding_Blender_animation_pitfalls|Avoiding Blender animation pitfalls]] Nexus Wiki article.
 
* [[Avoiding_Blender_animation_pitfalls|Avoiding Blender animation pitfalls]] Nexus Wiki article.
Line 1,046: Line 1,190:
 
* [http://www.nexusmods.com/newvegas/mods/56203/? Material and Texture Animations in NifSkope - Tutorial] PDF/DOC download.
 
* [http://www.nexusmods.com/newvegas/mods/56203/? Material and Texture Animations in NifSkope - Tutorial] PDF/DOC download.
 
* [http://forums.nexusmods.com/index.php?/topic/984792-tutorial-working-with-the-nicontrollermanager/ NifSkope: Working with the NiControllerManager] Forum Thread.  Alternate images available [http://www.mediafire.com/file/p0srsyrfuaszevp/Tutorial.zip here].
 
* [http://forums.nexusmods.com/index.php?/topic/984792-tutorial-working-with-the-nicontrollermanager/ NifSkope: Working with the NiControllerManager] Forum Thread.  Alternate images available [http://www.mediafire.com/file/p0srsyrfuaszevp/Tutorial.zip here].
 +
* [http://www.nexusmods.com/newvegas/mods/63770/? Nifskope Testing Skeleton] by clanky4. Mod for testing animations in NifSkope only.
 
* [http://www.youtube.com/watch?v=Zijo8ly6pyI One minute tutorial on Shape Keys] Video.
 
* [http://www.youtube.com/watch?v=Zijo8ly6pyI One minute tutorial on Shape Keys] Video.
 +
* [http://www.youtube.com/watch?v=XU9BAXkn_Bs Tutorial For Making Reload Animations work in FNV] Video by '''The Shiny Haxorus'''.
 +
* [http://www.nexusmods.com/newvegas/mods/66968 Weapon Animation Patching Tutorial] PDF with separate "screenshots" file by '''benja'''.
 
* [http://www.nexusmods.com/newvegas/mods/48521/? Weapon Animation Tutorial] PDF by '''Toasty Fresh'''.
 
* [http://www.nexusmods.com/newvegas/mods/48521/? Weapon Animation Tutorial] PDF by '''Toasty Fresh'''.
* [http://www.nexusmods.com/newvegas/mods/63770/? Nifskope Testing Skeleton] by clanky4. Mod for testing animations in NifSkope only.
+
 
 +
<span id="TIP-AnimationSounds "></span>
 +
====TIP Animation Sounds====
 +
: Thanks to '''Ashtonlp101''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Animations which play "sounds" have to be set under the "Special Idle" category in order for those respective sounds to get played. Otherwise the animation will be silent.
 +
 
 +
If you are adding your own sound files, ensure they conform to the expected format as described under the [[#Music and Sounds|Music_and_Sounds]] section.
 +
</div>
  
 
<span id="Tip-AnimationSummary"></span>
 
<span id="Tip-AnimationSummary"></span>
====TIP: Animation Summary====
+
====TIP Animation Summary====
 
: Thanks to '''pluramon''' and '''RoyBatterian''' on the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following summary:
 
: Thanks to '''pluramon''' and '''RoyBatterian''' on the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following summary:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 1,086: Line 1,244:
 
<span id="Tip-AnimationExport"></span>
 
<span id="Tip-AnimationExport"></span>
  
====TIP: Animation Exporting====
+
====TIP Animation Exporting====
 
: Thanks to '''uhmattbravo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
: Thanks to '''uhmattbravo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 1,110: Line 1,268:
 
<span id="Tip-KFActorRotation"></span>
 
<span id="Tip-KFActorRotation"></span>
  
====TIP: KF edit rotates Actors 90° to right====
+
====TIP KF edit rotates Actors 90 degrees to right====
 
: The following is taken from the "First Aid for frequent problems" section of the [[Avoiding_Blender_animation_pitfalls|Avoiding Blender animation pitfalls]] Nexus Wiki article.
 
: The following is taken from the "First Aid for frequent problems" section of the [[Avoiding_Blender_animation_pitfalls|Avoiding Blender animation pitfalls]] Nexus Wiki article.
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 1,131: Line 1,289:
  
 
<span id="Tip-PlayAnimation"></span>
 
<span id="Tip-PlayAnimation"></span>
====TIP: Play an Animation====
+
 
 +
====TIP Play an Animation====
 
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas" forum for the basis of the following:
 
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 1,151: Line 1,310:
 
endif
 
endif
 
</pre>
 
</pre>
Note that in the GECK, a ref variable may store either a ''reference'' or a ''base form''.  ''Base forms'' may not be used as the [http://geck.technodeep.net/index.php/Calling_reference calling reference] to functions that allow this syntax, although it may be passed as the target if the function permits this.  Hence the "IsActor" check in the example, while not necessary for "PlayerRef" (which is always a ''reference''), is a good practice.
+
Note that in the GECK, a ref variable may store either a ''reference'' or a ''base form''.  ''Base forms'' may not be used as the [http://geckwiki.com/index.php?title=Calling_reference calling reference] to functions that allow this syntax, although it may be passed as the target if the function permits this.  Hence the "IsActor" check in the example, while not necessary for "PlayerRef" (which is always a ''reference''), is a good practice.
  
 
If you want to use the ''console'' to force a particular "idle" (such as when "posing" the Actor), you must be in "3rd Person View", go into "Toggle Free Camera" (TFC) mode, select or reference the target Actor, and then issue the "PlayIdle" command.  Note that the skeleton (armature) in use must be compatible with that required by the animation or it won't work correctly.
 
If you want to use the ''console'' to force a particular "idle" (such as when "posing" the Actor), you must be in "3rd Person View", go into "Toggle Free Camera" (TFC) mode, select or reference the target Actor, and then issue the "PlayIdle" command.  Note that the skeleton (armature) in use must be compatible with that required by the animation or it won't work correctly.
 
</div>
 
</div>
  
=== Armor & Clothes ===
+
=== Armor and Clothes ===
 
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 
* [[3ds_Max_armor_to_Fallout_New_Vegas|3ds Max armor to Fallout New Vegas]] Wiki.
 
* [[3ds_Max_armor_to_Fallout_New_Vegas|3ds Max armor to Fallout New Vegas]] Wiki.
Line 1,173: Line 1,332:
 
* [http://www.youtube.com/watch?v=gOTVt-y_2Ws Photoshop Rusted Metal Texture] Video.
 
* [http://www.youtube.com/watch?v=gOTVt-y_2Ws Photoshop Rusted Metal Texture] Video.
 
* [http://gomedia.com/zine/tutorials/tutorial-using-metal-and-rust-textures-to-destroy-a-design/ Using Metal and Rust textures to destroy a design] HTML.
 
* [http://gomedia.com/zine/tutorials/tutorial-using-metal-and-rust-textures-to-destroy-a-design/ Using Metal and Rust textures to destroy a design] HTML.
 +
 +
<span id="TIP-ArmorSkin"></span>
 +
==== TIP Armor Skin Tones ====
 +
: Thanks to '''AusAllerWelt''' of the Nexus "New Vegas Mod Troubleshooting" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Say you wanted some leather armor variations to have the right sleeve cut off exposing the skin of the arm. Suppose you are using a body replacer such as '''Breeze's Males''': so you edited the meshes to get a right arm piece for them and it worked, but now you're having a different skin tone on that armor itself from the rest of the body.
 +
 +
Most likely you didn't set the correct shaders for skin on the arm.
 +
It has to look like this:<br>
 +
{{filepath:NifSkope Armor Skin Shader settings.png}}
 +
</div>
  
 
<span id="Tip-BoneWeighting"></span>
 
<span id="Tip-BoneWeighting"></span>
==== TIP: Bone Weighting ====
+
==== TIP Bone Weighting ====
 
: Thanks to '''madmongo''' of the Nexus Fallout "Discussions" forum for the basis of the following:
 
: Thanks to '''madmongo''' of the Nexus Fallout "Discussions" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 1,187: Line 1,360:
  
 
<span id="Tip-ExportMesh"></span>
 
<span id="Tip-ExportMesh"></span>
====TIP: Exporting a mesh from Blender for import into GECK====
+
====TIP Exporting a mesh from Blender for import into GECK====
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
Line 1,204: Line 1,377:
 
</div>
 
</div>
  
=== Blender (Mesh Editor) ===
+
=== Blender Mesh Editor ===
 
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 
* [http://wiki.nexusmods.com/index.php/Installation_of_Blender Installation of Blender] wiki article.  Originally written for Oblivion, "Python" and "PYFFI" are not required or used for Fallout games.
 
* [http://wiki.nexusmods.com/index.php/Installation_of_Blender Installation of Blender] wiki article.  Originally written for Oblivion, "Python" and "PYFFI" are not required or used for Fallout games.
Line 1,215: Line 1,388:
  
 
<span id="Tip-ClearDisplay"></span>
 
<span id="Tip-ClearDisplay"></span>
====TIP: Blender - Clear the display====
+
====TIP Blender Clear the display====
 
: Thanks to '''M48A5''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
: Thanks to '''M48A5''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 1,228: Line 1,401:
 
</div>
 
</div>
  
<span id="Tip-NoobBlender"></span>
+
<span id="TIP: BlenderExport"></span>
====TIP: New to Blender====
+
====TIP Blender Export Settings====
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following.
+
: Thanks to '''AusAllerWelt''' and '''madmongo''' of the Nexus Fallout New Vegas "GECK and Modders" Forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
style="margin:0px 10px 10px 30px;border:1px dashed #DAA520;color: lightgray;
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">The '''Blender Noob to Pro''' tutorial included in the Blender v2.49b package under the [[#Programs and Tools|Programs and Tools]] section is a good resource.
+
">For "Fallout New Vegas" (and "Fallout 3") you want to set the default "export" settings for Blender as follows (assuming you are primarily working on '''Armor''' meshes), and then make adjustments as circumstances require.
Some tips that maybe aren't obvious when you are starting:
+
 
* Make sure you select all before exporting. Blender only exports what you have selected. Also, make sure you have the export options set properly for what you are doing. If you are making a static, click on the static button (at the top near the middle) and then below that click on the button for the closest material type (wood, metal, etc). If you are making armor, click on "creature", because armor and human skins and creature skins are all basically the same thing.
+
[[File:BlenderExport_Fig.png|frameless|800px|BlenderExport Figure]] <br clear=all>
* Statics and clutter items need a collision mesh. Armor, clothing, and human and creature skins don't need a collision mesh, but they do need to be parented to an armature (aka "a skeleton").
+
If you start with the default settings (click the "Restore Default Settings for Selected Game" button on the lower left), click on ''Creature'' under '''Collision Options''' (top middle right), then click on either the ''Cloth'' or ''Skin'' setting just below that. Then make sure that the ''Use BSFadeNodeRoot'' setting under '''Shader Options''' (top right) is '''unchecked''' (not selected).  
* Blender tends to export statics and clutter objects fine, but the version recommended as most compatible for FNV (v2.49b) doesn't seem to export the shader flags correctly for skins (armor, clothing, etc.).  If you don't go into NifSkope and fix the shader flags, your skin thing (armor, clothing, creature, etc) will end up invisible in-game.
+
 
* There are two different approaches used for UV mapping. One is to start with the texture and fiddle with the mesh to fit it, and the other is to start with the mesh and let Blender give it a UV map (unwrap using "smart projection") and then fiddle with the texture instead. Either way works, and which is easier depends on what you are making.
+
You can select the ''Shadow Map'' setting under '''Shader Options''' (top right) if you'd like, but you need to go into '''NifSkope''' afterwards anyway so you can set the ''Shadow Map'' '''Shader Option''' setting there, because this version of Blender always gets the following in particular "wrong". Either way works. (Using later versions of Blender brings their own problems.)<br>
* Start by making simple modifications to things. Here's an easy one to start with. There's a coffee table mesh ("SubCoffeeTableDirty01" in the GECK) that has an upper part and a lower part to it. Edit the mesh to get rid of the upper part, and edit the collision mesh to match, then export it and put it in a mod somewhere.
 
  
There are plenty of good tutorials out there.  Blender is a full-function 3-D editing tool that can be used to make everything from cartoon movies to games, so it's got a lot of stuff in there with lots of examples and tips scattered around the internet. The Nexus Mods site has a wiki "category" devoted to [http://wiki.nexusmods.com/index.php/Category:Blender Blender] articles.  Admittedly, there's a bit of a learning curve involved. But as long as you keep plugging away at it, you'll figure it out. It will seem easy once you get used to it.</div>
+
After you export your model, go into '''NifSkope''' to fix the '''Shader''' settings.
 +
* For any '''armor parts''' (i.e. "not human skin"), the '''Shader Type''' needs to be set to ''SHADER_DEFAULT'' and ensure ''SF_SHADOW_MAP'' and ''SF_REMAPABLE_TEXTURES'' are both '''checked''' (selected).
 +
* For any '''visible human skin''' body parts (arms, legs, etc,) the '''Shader Type''' needs to be set to ''SHADER_SKIN'' and ensure ''SF_SHADOW_MAP'' and ''SF_FACEGEN'' are both "checked" (selected). Blender will usually set the rest of the flags correctly.
 +
</div>
  
<span id="Tip-BlenderExport"></span>
+
<span id="Tip-ImportAnimation"></span>
====TIP: Blender version NIF export====
+
==== TIP Blender Import Animations ====
: Thanks to '''EPDGaffney''' and '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">When attempting to export a model from Blender as a NIF file, you get the "traceback (most recent call last):" error message box (after reporting one or more file lines) saying:
+
">To create your own, start with the wiki article [[Creating_character_animations|Creating Character Animations]].
<pre>"io_scene_nif.utility.nif_utils.NiError: non-uniform scaling not supported.  Workaround: apply size and rotations (CTRL-A) on '<object>'".</pre>
+
 
Most probably the issue lies in using a newer version of Blender.  These are only minimally compatible with modding the older "Gamebryo engine" games.
+
A couple of things that aren't documented on that page:
:* You want to save your model from the newer version of Blender using ("'''Save As''' | '''Legacy Mesh Format'''") which outputs a legacy ".blend" file, and then open it in a '''v2.49b''' version of the tool.  (See [[#Image_Tools|Image Tools]] above under the "Programs and Tools" section.)  However, some things don't seem to export properly when you do it this way.  The next bullet point is a possible way around such problems, but more likely you will just have to edit it.  For this reason, many people prefer to create new meshes using '''Blender v2.49b''' since everything there just works (except hairs).
+
 
:* If you try to import a mesh from a different format (example: '''fbx''') '''Blender v2.49b''' won't import it properly.  (See [[#Tip-BlenderImport|TIP: Blender Import other Model Formats.]])  Instead import it into a newer version of '''Blender''' and then export as an "OBJ" format file.  At that point you can (in the same newer version of '''Blender''') just "'''Save As''' | '''Legacy Mesh Format'''" which outputs a legacy ".blend" file, as the mesh probably doesn't contain anything fancy that wouldn't export back to a ''legacy blend''.
+
* The article makes it seem like it's always best to import an existing animation and then modify that. That has been found to be completely unnecessary if you are creating a new animation. If you just want to load up a model and a skeleton and start animating, that works just fine.
: Most have a lot of success in general when importing "OBJ" files so they tend to use that as an intermediary format.  But it isn't required when modding images from Gambryo games such as FNV and earlier.  Note that an "OBJ" file is a lot like a "text" or "CSV" file and does '''not''' include a ''UV Map''. You will need to generate a new one after importing before you can apply a texture.  (See  4th bullet point in [[#Tip-NoobBlender|TIP: New to Blender.]])
 
: You should generally <Ctrl+A> (apply size and rotations) to everything before moving from '''Blender''''s default to another format, or rigging, or any big changes.  It doesn't always matter, but it's a good practice.  <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: green;
 
background-color:#fff5f5;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">This needs to be done BEFORE creating "collision" or the scaling and rotation will cause the collision to not export properly.</span>  You can avoid that type of ''scaling'' in the first place by ''scaling'' in '''edit mode''' rather than '''object mode'''.</div>
 
  
<span id="Tip-BlenderImport"></span>
+
* The '''GECK''' seems to have some hidden settings when you define an animation. For example, if you are creating a looping animation and you accidentally use '''Blender''''s default tags for looping instead of changing them, the '''GECK''' doesn't recognize these tags and the animation will jerk when it loops. If you fix the animation, the game will still have problems. You have to rename the animation, reassign it in the '''GECK''' so that whatever hidden variables it keeps get set properly, and then it will work. Because of this, always give your animations placeholder names like ''test1.kf'', ''test2.kf'', etc. and only give them their final names once you have them working properly.
====TIP: Blender Import other Model Formats====
+
 
: Thanks to '''madmongo''' and '''user826''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
* Also found that the '''NIF Tools''' for '''Blender''' tend to rotate things by 90 degrees. Before starting any animation design, put the skeleton into the position that you want them to start in and either play that for 15 seconds or loop it. Then you can adjust things like the height and rotation before doing anything else.
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
+
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
+
* Combat animations are tricky. You can replace existing animations easily enough, but creating custom animations that only the player character will use is definitely not straightforward.  But if you just want to play an animation on command, that's simple.
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">The import options for other formats (example: '''fbx''') or even newer version ".blend" format files into the FNV recommended version of '''Blender (v2.49b)''' are more limited in terms of results than with later versions of '''Blender'''. It is solvable with an annoying two-step process, but by using a later version of '''Blender''' that has an import option for the model format in question you can export it from that version as an "OBJ" file, then read the "OBJ" into '''v2.49b''', which can then export it as a "NIF" file. However, it is worth noting that the NIF tools will fail in all kinds of ways if the model is too complex, so that may be an issue no matter how you do it.
 
  
Some have found that with a three-step process of, after importing the "OBJ" file into '''v2.49b''', they then export it as a '''.3DS''' format file, and then re-import the '''.3DS''' file into '''v2.49b''' before then exporting it as a "NIF" file, they get a better result.
+
* While most animations seem to import easily into Blender, have had some animations that either went into an infinite loop of some sort and locked Blender up while importing, and had other animations that did not work correctly after importing. Most will import ok though.
 
</div>
 
</div>
  
=== Collision ===
+
<span id="Tip-ImportMesh"></span>
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
==== TIP Blender Import Mesh ====
* [http://www.nexusmods.com/oblivion/mods/19739/? Blender Video Tutorial - Convex Collision] Video.
+
: Thanks to '''madmongo''' and '''AusAllerWelt''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
* [http://youtu.be/sADeZhuv748 Fallout to Blender and back: Collision Meshes - Part 1] Video.
 
* [http://www.youtube.com/watch?v=56LwyhJ4u5Q Fallout to Blender and back: Collision Meshes - Part 2] Video.
 
* [http://youtu.be/AD4uywa1-pE GECK: Collision creation in Blender] Video.
 
 
 
<span id="Tip-CollisionSounds"></span>
 
====TIP: Collision Impact Sounds====
 
: Thanks to '''pixelhate''' and '''miguick''' of the Nexus Fallout "Mod Talk" forum for the basis of the following:  
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">In FO3 or FNV the impact sound of one material upon another (e.g. a shell casing falling upon the ground, a footstep on a wooden stair, etc.) is referenced in the collision object as "HAV_MAT" (Havok Material).  But it doesn't handle the sound only; it combines it with the particles emitted when hit or shot as well as the decals associated.  "Havok Material" will decide: The impact sound, the decal, the particle effect on impact, the sound when walking over a surface, and the colliding sound upon dropping, kicking, or grabbing an object.  These are hard coded in the game engine and cannot be changed as far as we knowWhat the actor is wearing does not affect this; only the action being taken.
+
">See the thread [https://forums.nexusmods.com/index.php?/topic/8825198-new-meshes-in-new-vegas/ new meshes in new vegas] for full detailsThis is merely a summary.
  
However, there is an INI file setting under "[Audio]":
+
Assume you have a basic mesh ".blend" file posed for the skeleton you want to make into a female armor.
<pre>
 
fPlayerFootVolume=x
 
</pre>
 
which has a "x" float type value of "0.65" by default.  Setting "x" to "0" will make your footsteps totally silent. You can alter it in scripts using '''NVSE''''s ''SetNumericINISetting'' command, as in:
 
<pre>
 
SetNumericINISetting "fPlayerFootVolume:Audio" x
 
</pre>
 
  
Modders have found 96 "Havok Materials" which are combinations of different things mentioned before.  32 of them are the most commonly used by the game. Bear in mind that the names in the drop down list don't reflect the effect at all and can be misleading; so some experimentation may be called for to achieve the desired sound.
+
* First of all, your mesh needs to be UV mapped. Don't use materials for this purpose. FNV requires UV mapping for textures.
  
There's a drop down list in '''NifSkope''' or your preferred texture editor from which you can choose the most fitting one.
+
* Second, make sure that you are using '''Blender''' 2.49b. If you are using a newer version of '''Blender''', you can probably make statics with it, but anything requiring rigging isn't going to work very well. If you want things to actually work with FNV, you need to use '''Blender''' 2.49b.
 +
*: You can find the correct version of '''Blender''' here (under [[#Image_Tools|Image Tools]]). It has all of the NIF tools that you'll need.
 +
*: If you used a newer version of '''Blender''' and haven't rigged the mesh yet, advice is to export your mesh as an ".obj" file and then import it into 2.49b as an ".obj". Exporting it from a newer version of '''Blender''' as a ".blend" doesn't work.
  
In '''NifSkope:''' open the "Block" list window, select the ''BHKCollisionObject'', expand and look into each of the ''Nodes'' in the "Block Details" window.
+
Ok, so at this point let's assume that you have your mesh in '''Blender''' 2.49b and that all you have is the armor mesh. The way that armor typically works in FNV is that it includes the human body parts underneath. If you have something that completely covers the human body like power armor, then you don't need the human body underneath. If parts of the body are visible, then you need to include the human body underneath with your mesh. Let's take the extreme example of the typical fantasy bikini chain mail armor. Most of what you see is human skin, not the armor, so basically the entire human body needs to be in the mesh. If you have something in between, like say an armored chest piece that covers the chest and back and includes a skirt of some sort, then you only need the human arms and legs. You can include the entire human body mesh, but most outfits don't since it wastes some time in the game engine drawing polygons that all get covered up by the armor mesh anyway, and if the armor mesh fits too tightly then sometimes you can end up with the human body parts clipping through, which looks bad.
 
 
Depending on the type and structure of the Collision, you should find one or two places where HAV_MAT is noted: double click on it to access the drop down list.
 
 
 
The material you set in the ''bhkRigidBody(T)'' overides any setting on the lower blocks. To get multiple "Havok Materials" with a single NIF, you have to nest multiple ''NiNodes'' and create a new ''bhkColisionBlock'' for each material you use. Check to make sure that the ''Layer'' and ''Layer Copy'' entries in your ''bhkRigidBody(T)'' and the ''Layer'' setting inside ''Data Layers'' in your ''bhkNiTriStripShape'' all match.  Collision sequences are one of the few places in a ".NIF" file where the exact order is essential.
 
  
Don't forget that the "armature/skeleton" can have it's own HAV_MAT as well.
+
* So the first step is to import the female upper body mesh, as this includes both the skeleton and the human body parts.
 +
* Once that is done, remove any human body parts that aren't visible. Again, if it's something like power armor that completely covers the body, then you can remove the entire human body mesh. If it's bikini chain mail or something similarly revealing, you may want to leave the entire body there.
 +
*: If you created the armor separately and didn't have a body to mold it around, you may want to adjust your mesh now so that it fits better over the human body.
 +
*: You also need to add "materials" to your armor, otherwise they won't show up in game because they will lack a shader.
 +
* Now, "parent" your armor mesh to the human skeleton (armature). You have a few different options for the bone weights. You can have '''Blender''' create the bone weights when you parent the mesh, which works reasonably well, but '''Blender''' tends to screw up a few things. Once you get some experience with it you'll be able to predict what parts will get screwed up and you'll have to manually fix them afterwards. Another option is to copy the bone weights from the human body mesh. In my experience this works pretty well for tight-fitting armor and clothing, but fails miserably when the armor or clothing isn't so tight-fitting. The third option is to paint all of the weights manually, which works better for solid armor pieces like a chest plate but doesn't work so well for fabrics and such that are supposed to move and deform with the body.
 +
* Once you have the bone weights done, save your blend so that you can always get back to this point. Then export your NIF file, making sure to use the proper settings. You can get the proper settings by clicking "Restore Default Settings for Selected Game" on the "nif export" screen, then go up to the top and click on "Creature" and then "Skin" under "Collision Options", then make sure "Use BSFadeNodeRoot" is ''de-selected''.
 +
* At this point you now have a mesh that is completely invisible in-game. This is due to '''Blender''' never setting the shader flags correctly. You fix these with [[# NifSkope_Mesh_Editor|Nifskope]].
 +
** For regular armor parts, the type needs to be set to SHADER_DEFAULT, and make sure SF_SHADOW_MAP and SF_REMAPABLE_TEXTURES are both checked.
 +
** For the any visible human skin body parts (arms, legs, etc, or the entire body mesh if you included it) the type needs to be set to SHADER_SKIN, and make sure SF_SHADOW_MAP and SF_FACEGEN are both checked.
 +
*: '''Blender''' usually sets the rest of the flags correctly. If your armor has multiple meshes, you will need to fix these flags in every mesh part.
 +
* Create your new armor in the GECK, and you're done.
  
If you alter the mesh NIFs for your mod, you will have to include them in your package.  There are basically two ways of doing so:
+
So basically, the TL:DR short summary version:
* If the items are replacements for vanilla items and should affect all those items in game: place the modified meshes, keeping the original naming, in the "Data" loose folder reproducing exactly the original folder structure.  These will then override the ones in the vanilla BSA file when "ArchiveInvalidation" is toggled.  In that case, you shouldn't need to make any changes to your ESP/ESM files to have the new meshes active.
+
# Create your mesh
* If the items are specific to your mod and should coexist with vanilla items: place the modified meshes, with new names, in a folder structure specific to your mod.  You will then be creating new unique instances of the items using those meshes under that unique path and have to include them in your ESP/ESM files.
+
# UV map your mesh
 +
# Import the human body mesh and skeleton
 +
# Remove any human body parts that aren't visible
 +
# Parent your mesh to the skeleton
 +
# Fix the bone weights
 +
# Export to NIF
 +
# Fix the shader flags in '''NifSkope'''
 
</div>
 
</div>
  
<span id="Tip-ObjectCollision"></span>
+
<span id="Tip-ImportTexture"></span>
  
==== TIP: Custom Object Collision ====
+
====TIP Blender Import Texture====
: Thanks to '''madmongo''' and '''pixelhate''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
: Thanks to '''AusAllerWelt''' of the "Fallout New Vegas Mod Talk" forum for the basis of the following.
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Sometimes (even though you added "collision" to an object) when you initially place it on a shelf or other surface with collision just fine, it seems to fall at least partially through the surface when the cell reloads.  If precisely aligning your object with the surface results in it sinking, try placing the object's Z-axis just slightly above the surface collision boundary and let it drop into collision with the surface. However, this only works if the object is a "[http://geckwiki.com/index.php/Movable_Static Movable Static]" based upon "Havok Materials", whose weight gives them "gravity" physics.  (See also [[#TIP: Collision Impact Sounds|TIP: Collision Impact Sounds]] and the GECK entry for [http://geckwiki.com/index.php/Object_palette Object Palette].)
+
">* Select your mesh in ''Edit Mode'' and go to ''Windows Type | UV/Image Editor''. (See Fig-1.)<br>
 +
[[File:BlenderImportTexture Fig-1.jpg|thumb|300px|left|Blender Import Fig-1]]<br clear=all>
 +
* Under ''Image'' you can select ''Open'' and load your texture ".dds" file. You might have to click ''New'' first for the UV of the object to appear and then load your texture again.  (See Fig-2.)<br>
 +
[[File:BlenderImportTexture Fig-2.jpg|thumb|300px|left|Blender Import Fig-2]]<br clear=all>
 +
* Once you're done with that, you only have to change the ''Draw Type'' for the Render Window to ''Textured'' to display the textures. (See Fig-3.)<br>
 +
[[File:BlenderImportTexture Fig-3.jpg|thumb|200px|left|Blender Import Fig-3]]<br clear=all>
 +
</div>
  
Part of the issue can be in how you created the collision mesh.  For simple objects, just copy the mesh for your custom object from the vanilla object mesh.  However, that doesn't work so well for complex objects with a complex collision mesh.  It's preferable to use a simple box collision (which can be created in '''Nifskope''' instead of your "mesh editor").  For "havoked" or "grabable" objects: primative collision (sphere, box, or capsule) are preferable to avoid engine problems.
+
<span id="Tip-BlenderBlackTexture"></span>
</div>
 
  
=== Conversions ===
+
==== TIP Imported NIF texture appears Black ====
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
* [http://forums.nexusmods.com/index.php?/topic/250761-converting-fo3-mod-for-fnv/ Converting FO3 Mod for FNV] Thread.
 
* [http://taleoftwowastelands.com/content/fnv-edit-series-converting-fo3-mods Converting F03 mods to TTW & FNV] Wiki.
 
* [http://www.loverslab.com/topic/27557-new-clothing-body-style-converter-beta-v089f-10-26-2014/ New Clothing Body Style Converter] Tool, behind a "gated" "Adult (18+) Only site".
 
* [http://www.youtube.com/watch?v=NPKrwES9Cb4 FNVEdit Creating compatibility patches for "Brumbeks Inventory Sorting" (BIS) by JaHn3tiC] Video.
 
* [http://www.youtube.com/watch?v=z61u0bQUmgM FNVEdit Making a Feature (Basic Compatibility) Patch by Roy Batty] Video.
 
* [http://www.nexusmods.com/newvegas/mods/38413/? FNVEdit Training Manual] PDF. Generally applies to all 'xEdit' versions for other games.  Chapter 7 is on converting FO3 mods to FNV.
 
* [http://www.grammarly.com/ Grammarly] pretty well regarded grammar checker, with free versions of their plugins for browsers.
 
* [http://www.nexusmods.com/newvegas/mods/62261/? How to make a Custom Race] PDF.
 
* [http://tone-analyzer-demo.mybluemix.net/ Tone Analyzer] uses linguistic analysis to detect three types of tones from written text: emotions, social tendencies, and writing style. Users can use the online Tone Analyzer service to analyze conversations and communications.
 
: Tools behind a "gated" "Adult (18+) Only site" in their "modder resources" section.
 
:* [http://www.loverslab.com/topic/27557-new-clothing-body-style-converter-beta-v089f-10-26-2014/ New Clothing Body Style Converter] Tool
 
:* [http://www.loverslab.com/topic/37660-clothing-converter-lattice-library-share-your-clothing-converter-lattices/ Clothing Converter Lattice Library] Resource.
 
 
 
<span id="Tip-MeshConversion"></span>
 
====TIP: Converting meshes====
 
: Thanks to '''madmongo''' and '''MA48A5''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Other games has meshes you would like to use; either vanilla or from modsWhich game is better to get a mesh from? Quality wise, and which game is easiest to convert said mesh to '''FNV''''''Oblivion''', '''Skyrim''', or '''Skyrim Special Edition'''?
+
">Mesh files (*.NIF) internally point to the texture file (*.DDS) designed for themThe "vanilla" and DLC game art assets (both mesh and texture files) are stored in "Bethesda Software Archive (BSA)" files instead of under the game "Data" folder tree while using the same folder structure.  (Some mod's do this as well.)  As '''Blender''' has no idea what a BSA file is, it can't find the texture file to display it.  If '''Blender''' can't find the texture file, it just shows the image with a "black" texture.  In order to see the textures for your mesh while looking at it in '''Blender''' you will have to extract the texture file(s) from the BSA into the appropriate folder under "Data\textures" first.  Be careful to extract such files to some other location than the game "Data" folder first, and then manually copy them to the correct "Data" folder to avoid accidents.
 +
</div>
  
If this is for your own personal use, there's no issue. If this is for a mod that you plan on releasing on the '''Nexus''' (or anywhere else), then you can't use assets from other games (period).  They are copyright protected against "distribution" without permission.  Not even from other Bethesda games in the same series like '''Fallout'''.  (The exception is if the resources are already included in the "destination" game's files even though not used.)
+
<span id="Tip-NoobBlender"></span>
  
You can only use assets from other mods if the mod author gives you explicit permission to do so (e.g. "this is a modder's resource").
+
====TIP New to Blender====
 +
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following.
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 30px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">The '''Blender Noob to Pro''' tutorial included in the Blender v2.49b package under the [[#Programs and Tools|Programs and Tools]] section is a good resource.
 +
Some tips that maybe aren't obvious when you are starting:
 +
* Make sure you select all before exporting. Blender only exports what you have selected. Also, make sure you have the export options set properly for what you are doing. If you are making a static, click on the static button (at the top near the middle) and then below that click on the button for the closest material type (wood, metal, etc). If you are making armor, click on "creature", because armor and human skins and creature skins are all basically the same thing.
 +
* Statics and clutter items need a collision mesh. Armor, clothing, and human and creature skins don't need a collision mesh, but they do need to be parented to an armature (aka "a skeleton").
 +
* Blender tends to export statics and clutter objects fine, but the version recommended as most compatible for FNV (v2.49b) doesn't seem to export the shader flags correctly for skins (armor, clothing, etc.).  If you don't go into NifSkope and fix the shader flags, your skin thing (armor, clothing, creature, etc) will end up invisible in-game.
 +
* There are two different approaches used for UV mapping. One is to start with the texture and fiddle with the mesh to fit it, and the other is to start with the mesh and let Blender give it a UV map (unwrap using "smart projection") and then fiddle with the texture instead. Either way works, and which is easier depends on what you are making.
 +
* Start by making simple modifications to things. Here's an easy one to start with. There's a coffee table mesh ("SubCoffeeTableDirty01" in the GECK) that has an upper part and a lower part to it. Edit the mesh to get rid of the upper part, and edit the collision mesh to match, then export it and put it in a mod somewhere.
  
That said, the game engine for '''Oblivion''' is fairly close to the game engine for '''FO3/FNV'''. They changed quite a bit for '''Skyrim'''. In any event, the skeletons for the player and for NPCs is different for any of the TES games. If you are porting over armor or clothing, you'll need to unparent the mesh from its original armature and reparent the mesh to the '''FNV''' skeleton, and of course reassign all of the bone weights as you'd expect from doing that sort of thing.
+
There are plenty of good tutorials out there.  Blender is a full-function 3-D editing tool that can be used to make everything from cartoon movies to games, so it's got a lot of stuff in there with lots of examples and tips scattered around the internet.  The Nexus Mods site has a wiki "category" devoted to [http://wiki.nexusmods.com/index.php/Category:Blender Blender] articles.  Admittedly, there's a bit of a learning curve involved. But as long as you keep plugging away at it, you'll figure it out. It will seem easy once you get used to it.</div>
  
Statics don't have a skeleton so those will port much more easily.
+
<span id="Tip-BlenderExport"></span>
 
+
====TIP Blender version NIF export====
Some things just won't port.  '''Skyrim Special Edition''', being 64-bit, is about impossible to convert to a 32-bit game.<span style="color: orange; background-color:#424242;">[[#Tip-MeshConversionFootnote1|(See also Footnote [1]]])</spanSo that leaves '''Skyrim''' and '''Oblivion'''. '''Skyrim''' armor that uses ''wings'' for example won't ever animate properly in '''FNV''' no matter what you do, because the '''FNV''' skeleton doesn't include ''wings''. To make them work, you'd have to not only create a new skeleton/armature, but you'd also have to create a whole bunch of animations to go with the new skeleton. Otherwise, the best you can do is have ''static wings'', which will look a bit funny.  (There is one armature with support for '''''moving wings''''' by '''Deedes''' (2014) on Nexus with versions for [http://www.nexusmods.com/fallout3/mods/20620 FO3: The Skeleton] and [http://www.nexusmods.com/newvegas/mods/56657 FNV: The Skeleton].  You would have to re-parent the mesh to that armature.
+
: Thanks to '''EPDGaffney''' and '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
The [http://www.loverslab.com/topic/27557-new-clothing-body-style-converter-beta-v089f-10-26-2014/ New Clothing Body Style Converter] Tool, behind a "gated" "Adult (18+) Only site" in their "modder resources" section, is designed to facilitate converting "armor" and "clothing" between different body typesHowever, it is still in "Beta" status since 2014, but does work with upper/lower body meshes and CBBE bodies.  Note you will need either an existing [http://www.loverslab.com/topic/37660-clothing-converter-lattice-library-share-your-clothing-converter-lattices/ Clothing Converter Lattice Library] or to make one yourself.
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
+
background-color:#333333;padding:3px;
'''Skyrim''', being a newer game, has more detailed meshes in general, and mod authors have generally followed suit and have created similarly more detailed custom meshes. While this does make for higher quality 3d models, you can run into difficulty if you use a lot of higher quality models and textures in '''FNV''' since it's an older 32-bit game and it will only use 2 GB of memory by default. You can double that to 4 GB if you install the 4 GB patch, but that's as far as you can take it.  (32-bits can't address any more than 4GB.) Your PC may have gobs more memory than that, but '''FNV''' won't use it. So it's very easy to run the game out of memory if you use high resolution textures and high quality models.
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
+
">When attempting to export a model from Blender as a NIF file, you get the "traceback (most recent call last):" error message box (after reporting one or more file lines) saying:
The recommendation is almost never use any textures larger than 1024 x 1024 pixels for '''FNV''' unless it absolutely needs a higher resolution due to the nature of the 3D model, just because of the memory issueAlso try to keep the triangle count (vertices) as low as possible. If you use a lot of 4096 x 4096 textures, your game will look prettier, but it's also going to crash a lot more often(A 4096 x 4096 pixel image with 16 bit color resolution is 32 MB of data. If your screen is displaying 100 different models with textures that size, that's 3.2 GB of data just for the textures. Since a 32 bit program can only handle 4 GB of data, you can see how trying to display a lot of high resolution models is going to run the game out of memory very quickly.) The texture caching system in '''FNV''' seems to leak memory. The more you stress it, the sooner it will run the game out of memory and crash.
+
<pre>"io_scene_nif.utility.nif_utils.NiError: non-uniform scaling not supported.  Workaround: apply size and rotations (CTRL-A) on '<object>'".</pre>
 
+
Most probably the issue lies in using a newer version of Blender. These are only minimally compatible with modding the older "Gamebryo engine" games.
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"
+
:* You want to save your model from the newer version of Blender using ("'''Save As''' | '''Legacy Mesh Format'''") which outputs a legacy ".blend" file, and then open it in a '''v2.49b''' version of the tool.  (See [[#Image_Tools|Image Tools]] above under the "Programs and Tools" section.)  However, some things don't seem to export properly when you do it this way.  The next bullet point is a possible way around such problems, but more likely you will just have to edit it.  For this reason, many people prefer to create new meshes using '''Blender v2.49b''' since everything there just works (except hairs).
style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
+
:* If you try to import a mesh from a different format (example: '''fbx''') '''Blender v2.49b''' won't import it properly.  (See [[#Tip-BlenderImport|TIP: Blender Import other Model Formats.]])  Instead import it into a newer version of '''Blender''' and then export as an "OBJ" format fileAt that point you can (in the same newer version of '''Blender''') just "'''Save As''' | '''Legacy Mesh Format'''" which outputs a legacy ".blend" file, as the mesh probably doesn't contain anything fancy that wouldn't export back to a ''legacy blend''.
/* Remove the next four 'white-space' lines to restore default white-space processing. */
+
: Most have a lot of success in general when importing "OBJ" files so they tend to use that as an intermediary formatBut it isn't required when modding images from Gambryo games such as FNV and earlier.  Note that an "OBJ" file is a lot like a "text" or "CSV" file and does '''not''' include a ''UV Map''. You will need to generate a new one after importing before you can apply a texture.  (See  4th bullet point in [[#Tip-NoobBlender|TIP: New to Blender.]])
white-space: pre-wrap;      /* css-3 */
+
: You should generally <Ctrl+A> (apply size and rotations) to everything before moving from '''Blender''''s default to another format, or rigging, or any big changesIt doesn't always matter, but it's a good practice.  <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: green;
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
+
background-color:#fff5f5;padding:3px;
white-space: -pre-wrap;      /* Opera 4-6 */
 
white-space: -o-pre-wrap;    /* Opera 7+ */
 
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">This needs to be done BEFORE creating "collision" or the scaling and rotation will cause the collision to not export properly.</span> You can avoid that type of ''scaling'' in the first place by ''scaling'' in '''edit mode''' rather than '''object mode'''.</div>
<span style="color: orange; background-color:#424242;" id="Tip-MeshConversionFootnote1">Footnote [1]:</span> This statement deserves some clarification.
 
  
A lot of people seem to think that anything made with a 64 bit program can't be compatible with stuff made by a 32 bit program. That's not true. What matters is the data format that the programs use. If the format is the same, then the data will work for both the 32 and 64 bit programs. There's nothing special about the data created by a 64 bit program. It's just data.  The key is in the format.
+
<span id="Tip-BlenderImport"></span>
 
+
====TIP Blender Import other Model Formats====
32 bit programs can't access more than 4 GB of memory. This is because 2 to the 32nd power is 4 GB, so if all you have is 32 bits available to specify a memory location, it has to be in the lower 4 GB of memory. This is why FO3 and FNV will never use more than 4 GB of memory (2 GB without the "4 GB patch") no matter what. The programs just aren't capable of accessing any more memory than that.
+
: Thanks to '''madmongo''' and '''user826''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
'''Skyrim SE''' is basically a 64 bit port of '''Skyrim''' using the updated '''Creation Engine''' that they developed for '''Fallout 4 (FO4)'''. For porting objects from one game to another, we don't really care about that. What we care about is whether the NIF file format changed between '''Skyrim''' and '''Skyrim SE'''. There are plenty of programs which come in 32 and 64 bit versions, and both use the same '''data format''' to store their data '''''if you select it''''', so you can use either the 32 bit or the 64 bit version.
 
 
 
For '''Skyrim SE''' though, they were playing around with the '''Creation Engine''' for '''FO4''' development, and they made changes to the NIF format for '''FO4'''. It's not known how many of those changes (if any) were made to the NIF format for '''Skyrim SE''', but if you can't easily import meshes from '''Skyrim SE''' into '''Blender''' (for example), it's because the tool set hasn't been updated to handle the data format difference. It's a data format difference, not a 32 vs 64 bit difference.
 
</div>
 
</div>
 
 
 
<span id="Tip-PluginCopy"></span>
 
====TIP: Copying between plugins====
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">The import options for other formats (example: '''fbx''') or even newer version ".blend" format files into the FNV recommended version of '''Blender (v2.49b)''' are more limited in terms of results than with later versions of '''Blender'''.  It is solvable with an annoying two-step process, but by using a later version of '''Blender''' that has an import option for the model format in question you can export it from that version as an "OBJ" file, then read the "OBJ" into '''v2.49b''', which can then export it as a "NIF" file.  However, it is worth noting that the NIF tools will fail in all kinds of ways if the model is too complex, so that may be an issue no matter how you do it.
* The Trick is to make an ESP first, only dependent on the main master file.  Save and close it.
 
: Best way to make a new ESP file is to drop something in the "Render" window, then save and name the file.  So loading a cell first is needed.  Suggest Wasteland cell / Good Springs.  You can of course delete that cell later if it's not needed for your purposes.
 
* Then open the GECK adding the other files from which you want to use assets, with your new .ESP as the "active file".</div>
 
  
=== Creature Creation ===
+
Some have found that with a three-step process of, after importing the "OBJ" file into '''v2.49b''', they then export it as a '''.3DS''' format file, and then re-import the '''.3DS''' file into '''v2.49b''' before then exporting it as a "NIF" file, they get a better result.
 +
</div>
 +
 
 +
=== Collision ===
 
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 +
* [http://www.nexusmods.com/oblivion/mods/19739/? Blender Video Tutorial - Convex Collision] Video.
 +
* [http://youtu.be/sADeZhuv748 Fallout to Blender and back: Collision Meshes - Part 1] Video.
 +
* [http://www.youtube.com/watch?v=56LwyhJ4u5Q Fallout to Blender and back: Collision Meshes - Part 2] Video.
 +
* [http://youtu.be/AD4uywa1-pE GECK: Collision creation in Blender] Video.
  
The process of creating a "creature" is essentially the same as creating a "NPC Companion", but without the "companion wheel".
+
<span id="Tip-CollisionSounds"></span>
 
+
====TIP Collision Impact Sounds====
* [http://www.nexusmods.com/fallout3/mods/6306/? Adding a custom creature to Fallout 3 Tutorial by Ominus] PDF.  Very Basic.
+
: Thanks to '''pixelhate''' and '''miguick''' of the Nexus Fallout "Mod Talk" forum for the basis of the following:  
* [http://geck.bethsoft.com/index.php?title=Bethsoft_Tutorial_NPC_population Bethsoft Tutorial NPC population] HTML.  Covers the basic placement of leveled lists for enemy spawning and the use of generic patrol and sandbox package behaviors.
 
* [http://www.nexusmods.com/newvegas/mods/60497/? Bringing Life to the Mojave by Mindboggles] PDF.
 
* [http://www.youtube.com/watch?v=8YVZ0FoXXcc GECK Tutorial - Creature/NPC Companion by Seddon4494] Video.
 
* [http://www.youtube.com/watch?v=JIHh6-4k_q4 GECK Tutorial: Custom Creature Part 1 (of 4) by gerokeymaster] Video.
 
 
 
<span id="Tip-EmbeddedWeapon"></span>
 
====TIP: Locate Embedded Creature Weapon====
 
: Thanks to '''uhmattbravo''' of the Nexus FalloutNV 'New Vegas GECK and Modders' sub-forum for the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">In FO3 or FNV the impact sound of one material upon another (e.g. a shell casing falling upon the ground, a footstep on a wooden stair, etc.) is referenced in the collision object as "HAV_MAT" (Havok Material). But it doesn't handle the sound only; it combines it with the particles emitted when hit or shot as well as the decals associated.  "Havok Material" will decide: The impact sound, the decal, the particle effect on impact, the sound when walking over a surface, and the colliding sound upon dropping, kicking, or grabbing an object.  These are hard coded in the game engine and cannot be changed as far as we know.  What the actor is wearing does not affect this; only the action being taken.
* If you're using an existing creature, the quickest way to locate an embedded weapon would be to look at one of it's existing weapons in '''GECK'''.
+
 
* If it came from a resource, and doesn't have any existing weapons, open the skeleton in '''Nifskope''' and look at the end of bones where it would be logical to fire from. Typically it's named projectile node or something similar, but it's also one of the few (if not only) bones that doesn't start with ''bip01''.
+
However, there is an INI file setting under "[Audio]":
</div>
+
<pre>
 +
fPlayerFootVolume=x
 +
</pre>
 +
which has a "x" float type value of "0.65" by default.  Setting "x" to "0" will make your footsteps totally silent. You can alter it in scripts using '''NVSE''''s ''SetNumericINISetting'' command, as in:
 +
<pre>
 +
SetNumericINISetting "fPlayerFootVolume:Audio" x
 +
</pre>
  
=== Custom NPCs ===
+
Modders have found 96 "Havok Materials" which are combinations of different things mentioned before. 32 of them are the most commonly used by the game.  Bear in mind that the names in the drop down list don't reflect the effect at all and can be misleading; so some experimentation may be called for to achieve the desired sound.
Other sections have relevant information to this subject.  The following "Tips" in particular are applicable.
 
* See the [[#Dialogue & Lip-synch|Dialogue & Lip-synch]] section regarding scripting "Dialogue" and "Conversations".
 
:* [[#Tip-GenericDialog | TIP: Adding Generic Dialog.]]
 
:* [[#Tip-Translators|TIP: Conversation/Quest system.]]
 
:* [[#Tip-OCE|TIP: Obsidian Conversation Editor (OCE).]]
 
:* [[#TIP-RandomNPCcomments|Tip: Random NPC Comments.]]
 
:* [[#Tip-DialogTabs|TIP: Standard Dialog.]]
 
  
* See the [[#Scripting|Scripting]] section regarding:
+
There's a drop down list in '''NifSkope''' or your preferred texture editor from which you can choose the most fitting one.
:* types of scripts: Objects, Quests, and "Base Effects".
+
 
:* [[#TIP-EditorIDNames|'''TIP: Do not begin Editor-IDs with numbers.''']]
+
In '''NifSkope:''' open the "Block" list window, select the ''BHKCollisionObject'', expand and look into each of the ''Nodes'' in the "Block Details" window.
:* [[#Tip-CompoundConditionals|TIP: Debugging Compound Conditionals.]]
+
 
:* [[#Tip-Debugging|TIP: Debugging data to file.]]
+
Depending on the type and structure of the Collision, you should find one or two places where HAV_MAT is noted: double click on it to access the drop down list.
:* [[#Tip-EventHandler|TIP: Don't overlook EventHandlers.]]
+
 
:* [[#Tip-Encapsulation|TIP: Encapsulation - Parens, Brackets, and Braces.]]
+
The material you set in the ''bhkRigidBody(T)'' overides any setting on the lower blocks. To get multiple "Havok Materials" with a single NIF, you have to nest multiple ''NiNodes'' and create a new ''bhkColisionBlock'' for each material you use. Check to make sure that the ''Layer'' and ''Layer Copy'' entries in your ''bhkRigidBody(T)'' and the ''Layer'' setting inside ''Data Layers'' in your ''bhkNiTriStripShape'' all match. Collision sequences are one of the few places in a ".NIF" file where the exact order is essential.
:* [[#Tip-FunctionParameters|TIP: Function parameter separation with commas.]]
 
:* [[#Tip-ParsingLines|TIP: GECK parses the entire line before evaluating.]]
 
:* [[#Tip-NPCWpnChoice|TIP: NPC Weapon Choice.]]
 
:* [[#TIP-MsgVariable|TIP: Pass a variable number into a script message.]]
 
:* [[#Tip-Notes|TIP: Passing a 'Note' to the player.]]
 
:* [[#Tip-Recipes|TIP: Passing a 'Recipe' to the player.]]
 
  
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]<br>
+
Don't forget that the "armature/skeleton" can have it's own HAV_MAT as well.
  
"All '''Companions''' are ''NPCs'', but not all ''NPCs'' are '''Companions'''."  Both are discussed in this section, but please note and bear in mind the distinction when used.
+
If you alter the mesh NIFs for your mod, you will have to include them in your package.  There are basically two ways of doing so:
 +
* If the items are replacements for vanilla items and should affect all those items in game: place the modified meshes, keeping the original naming, in the "Data" loose folder reproducing exactly the original folder structure. These will then override the ones in the vanilla BSA file when "ArchiveInvalidation" is toggled. In that case, you shouldn't need to make any changes to your ESP/ESM files to have the new meshes active.
 +
* If the items are specific to your mod and should coexist with vanilla items: place the modified meshes, with new names, in a folder structure specific to your mod.  You will then be creating new unique instances of the items using those meshes under that unique path and have to include them in your ESP/ESM files.
 +
</div>
  
* [http://www.nexusmods.com/newvegas/mods/45278/? Advanced Companion creation guide with Companion Wheel] HTML. (Most recommended.)
+
<span id="Tip-ObjectCollision"></span>
* [http://www.nexusmods.com/fallout3/mods/5506 CMF Companion Tutorial] RTF by '''Darkfirebird CMF'''.
 
* [http://forums.nexusmods.com/index.php?/topic/900821-fnv-companion-tutorial/ FNV Companion Tutorial] Forum Thread by '''trilioth'''.
 
* [http://www.youtube.com/playlist?list=PLo2FGzSVbkcPedlm9zZ981YvUy7DoSQew GECK: Companion Tutorial playlist by cgy95] Video series.
 
* [http://geck.technodeep.net/index.php/Creating_a_new_vendor GECK: Creating a new vendor] Wiki tutorial.
 
* [http://www.youtube.com/watch?v=O9wnoZ7tKro GECK: Creating an NPC] Video.
 
* [http://www.youtube.com/watch?v=NuFepoBHptk GECK: Custom NPC and Dialog] Video.
 
* [http://forums.nexusmods.com/index.php?/topic/5184015-guide-replacing-vanilla-hair-with-modded-hair/ GUIDE: Replacing Vanilla Hair with Modded Hair] Forum Thread.
 
* [http://www.nexusmods.com/newvegas/mods/61538/? Hairs - Eyes - Races Auto - Patcher] mod by '''Fallout 2AM'''.
 
* [http://www.nexusmods.com/newvegas/mods/56009/? Jokerine's Misc Resources Tutorials and Novac Bungalow: Quick 'n' Dirty Merchant] PDF.
 
* [http://www.nexusmods.com/newvegas/mods/38059/? NCCS - NosCo Companion System] Mod.  Ready-made basic, customizable companions without the "companion wheel" (available as a plugin).  The "companion scripts" make useful examples.  There's a guide that comes with it; it's really a case of loading it up in the GECK, duplicating one of the NCCS NPCs, switching it to one of the premade scripts and dumping it in game.  Ta-da: the basic companion is done and then all you have to do is customise it.
 
* [http://www.nexusmods.com/newvegas/mods/41652/? Rivens Tattoo Flash Sheets] Resource. (Copy-and-paste tattoos.)
 
* [http://www.nexusmods.com/newvegas/mods/62261 Tutorial: How to Make a Custom Race] PDF by '''jim_uk'''.
 
* [http://www.nexusmods.com/newvegas/mods/43286 Tutorial: Creating a custom PC Race] RTF by '''MagicThize'''.
 
* [http://www.nexusmods.com/newvegas/mods/62328 Tutorial: How to Make a Freakish Custom Race (Tutorial)] PDFs by '''lazyradly, beardofsocrates, and FancyPants'''.  Details on how to create ".EGMs", ".EGTs", proper NIFs, etc.
 
  
<span id="Tip-ActorHeight"></span>
+
==== TIP Custom Object Collision ====
==== TIP: Actor height in '''GECK''' ====
+
: Thanks to '''madmongo''' and '''pixelhate''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">If you want to make an Actor taller or shorter in the '''GECK''', just modify their '''Height''' on the ''Traits'' tab. It's a little confusing because most Actors have a value of "0.00" for height, which just means ''use the default'': "0.00" is the same as setting the height to "1.00" (told you it's confusing). If you set it to something other than zero, then it's a percentage scale factor. In other words, if you set the height to "0.95" then they'll be "95 percent" as tall as the default, or about 5 percent shorterSetting the height to "1.05" would make them 5 percent taller (105 percent of normal height).
+
">Sometimes (even though you added "collision" to an object) when you initially place it on a shelf or other surface with collision just fine, it seems to fall at least partially through the surface when the cell reloads. If precisely aligning your object with the surface results in it sinking, try placing the object's Z-axis just slightly above the surface collision boundary and let it drop into collision with the surface. However, this only works if the object is a "[http://geckwiki.com/index.php/Movable_Static Movable Static]" based upon "Havok Materials", whose weight gives them "gravity" physics(See also [[#TIP: Collision Impact Sounds|TIP: Collision Impact Sounds]] and the GECK entry for [http://geckwiki.com/index.php/Object_palette Object Palette].)
  
'''Body meshes''' can just be copied from '''FO3''' to '''FNV''' (and vice-versa, but that's illegal "porting": so, personal use only). The skeleton is the same. The only thing that is different between the two games as far as body parts are concerned is "hair" and "hats", which end up rotated by 90 degrees between the two games. You can fix that in '''NifSkope''' by just rotating the part by 90 degrees.  (See [[#TIP:_Head_Parts_Rotated|TIP: Head Parts Rotated]] under the "Custom Items" section.) You don't need to re-parent meshes to armatures and that sort of thing.
+
Part of the issue can be in how you created the collision mesh.  For simple objects, just copy the mesh for your custom object from the vanilla object mesh.  However, that doesn't work so well for complex objects with a complex collision mesh.  It's preferable to use a simple box collision (which can be created in '''Nifskope''' instead of your "mesh editor"). For "havoked" or "grabable" objects: primative collision (sphere, box, or capsule) are preferable to avoid engine problems.
 +
</div>
  
If you want your Actor to be about a foot shorter, that's about 84 percent at the default height of about 6 feet, so set their height to "0.84".
+
=== Conversions ===
</div>
+
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 +
* [http://forums.nexusmods.com/index.php?/topic/250761-converting-fo3-mod-for-fnv/ Converting FO3 Mod for FNV] Thread.
 +
* [http://taleoftwowastelands.com/content/fnv-edit-series-converting-fo3-mods Converting F03 mods to TTW & FNV] Wiki.
 +
* [http://www.loverslab.com/topic/27557-new-clothing-body-style-converter-beta-v089f-10-26-2014/ New Clothing Body Style Converter] Tool, behind a "gated" "Adult (18+) Only site".
 +
* [http://www.youtube.com/watch?v=NPKrwES9Cb4 FNVEdit Creating compatibility patches for "Brumbeks Inventory Sorting" (BIS) by JaHn3tiC] Video.
 +
* [http://www.youtube.com/watch?v=z61u0bQUmgM FNVEdit Making a Feature (Basic Compatibility) Patch by Roy Batty] Video.
 +
* [http://www.nexusmods.com/newvegas/mods/38413/? FNVEdit Training Manual] PDF. Generally applies to all 'xEdit' versions for other games.  Chapter 7 is on converting FO3 mods to FNV.
 +
* [http://www.grammarly.com/ Grammarly] pretty well regarded grammar checker, with free versions of their plugins for browsers.
 +
* [http://www.nexusmods.com/newvegas/mods/62261/? How to make a Custom Race] PDF.
 +
* [http://tone-analyzer-demo.mybluemix.net/ Tone Analyzer] uses linguistic analysis to detect three types of tones from written text: emotions, social tendencies, and writing style. Users can use the online Tone Analyzer service to analyze conversations and communications.
 +
: Tools behind a "gated" "Adult (18+) Only site" in their "modder resources" section.
 +
:* [http://www.loverslab.com/topic/27557-new-clothing-body-style-converter-beta-v089f-10-26-2014/ New Clothing Body Style Converter] Tool
 +
:* [http://www.loverslab.com/topic/37660-clothing-converter-lattice-library-share-your-clothing-converter-lattices/ Clothing Converter Lattice Library] Resource.
  
<span id="Tip-GetDistance"></span>
+
<span id="Tip-MeshConversion"></span>
====TIP: AI Packages and Distance====
+
====TIP Converting meshes====
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
: Thanks to '''madmongo''' and '''MA48A5''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Supposing you want your character to meet up with an NPC at some X-Marker location, but they aren't there when you "fast travel" to that location?  You need to "teleport" them ,but you don't want to just make them "vanish".  Here is one way to handle it.
+
">Other games has meshes you would like to use; either vanilla or from mods.  Which game is better to get a mesh from? Quality wise, and which game is easiest to convert said mesh to '''FNV'''?  '''Oblivion''', '''Skyrim''', or '''Skyrim Special Edition'''?
 +
 
 +
If this is for your own personal use, there's no issue. If this is for a mod that you plan on releasing on the '''Nexus''' (or anywhere else), then you can't use assets from other games (period).  They are copyright protected against "distribution" without permission.  Not even from other Bethesda games in the same series like '''Fallout'''(The exception is if the resources are already included in the "destination" game's files even though not used.)
  
In the "Dialog Result Script" where you make the NPC start using your "AI Package" to send them to that location, also start a "quest script" (e.g. "ThisQuestName").  This quest should have a processing delay of perhaps one second, and then check for the player to be a certain distance away from the NPC, and for the NPC to not be in the player's view ("Line of Sight": LoS).  Once it's found that both requirements are satisfied, the NPC is teleported to the marker and the quest was ended.  The quest is set to be stopped on proper completion of the AI package as well, in case it's still running.
+
You can only use assets from other mods if the mod author gives you explicit permission to do so (e.g. "this is a modder's resource").
  
The example script below uses the '''JIP LN NVSE''' function ''GetDistance2D'', but it will work fine with the vanilla ''GetDistance'' function as well.
+
That said, the game engine for '''Oblivion''' is fairly close to the game engine for '''FO3/FNV'''. They changed quite a bit for '''Skyrim'''. In any event, the skeletons for the player and for NPCs is different for any of the TES games. If you are porting over armor or clothing, you'll need to unparent the mesh from its original armature and reparent the mesh to the '''FNV''' skeleton, and of course reassign all of the bone weights as you'd expect from doing that sort of thing.
<pre>
 
Begin GameMode
 
    ; separation of player and NPC check
 
    If player.GetDistance2D refNPC >= 2048
 
        If player.GetLOS refNPC == 0
 
            refNPC.moveto refMarker
 
            ; maybe remove their AI package or add another one or whatever here?  maybe EVP?
 
            StopQuest ThisQuestName
 
        EndIf
 
    EndIf
 
End
 
  
Begin GameMode
+
Statics don't have a skeleton so those will port much more easily.
    ; NPC near X-Marker check
+
 
    if refNPC.GetDistance2D refMarker <= 64
+
Some things just won't port.  '''Skyrim Special Edition''', being 64-bit, is about impossible to convert to a 32-bit game.<span style="color: orange; background-color:#424242;">[[#Tip-MeshConversionFootnote1|(See also Footnote [1]]])</span> So that leaves '''Skyrim''' and '''Oblivion'''.  '''Skyrim''' armor that uses ''wings'' for example won't ever animate properly in '''FNV''' no matter what you do, because the '''FNV''' skeleton doesn't include ''wings''. To make them work, you'd have to not only create a new skeleton/armature, but you'd also have to create a whole bunch of animations to go with the new skeleton. Otherwise, the best you can do is have ''static wings'', which will look a bit funny(There is one armature with support for '''''moving wings''''' by '''Deedes''' (2014) on Nexus with versions for [http://www.nexusmods.com/fallout3/mods/20620 FO3: The Skeleton] and [http://www.nexusmods.com/newvegas/mods/56657 FNV: The Skeleton].  You would have to re-parent the mesh to that armature.) 
        StopQuest ThisQuestName
+
 
    endif
+
The [http://www.loverslab.com/topic/27557-new-clothing-body-style-converter-beta-v089f-10-26-2014/ New Clothing Body Style Converter] Tool, behind a "gated" "Adult (18+) Only site" in their "modder resources" section, is designed to facilitate converting "armor" and "clothing" between different body types.  However, it is still in "Beta" status since 2014, but does work with upper/lower body meshes and CBBE bodies.  Note you will need either an existing [http://www.loverslab.com/topic/37660-clothing-converter-lattice-library-share-your-clothing-converter-lattices/ Clothing Converter Lattice Library] or to make one yourself.
End</pre>
+
 
''GetLOS'' isn't always reliable, so in some situations it may be preferred just to increase the distance; maybe use ''GetDistance3D''.  ''GetLOS'' has returned "true" when the NPC or object was at the very edge of the player's camera, and has not realized the player couldn't see the NPC. These both require an extreme circumstance, and most of the time it works fine; but it's best to test each situation.
+
'''Skyrim''', being a newer game, has more detailed meshes in general, and mod authors have generally followed suit and have created similarly more detailed custom meshes. While this does make for higher quality 3d models, you can run into difficulty if you use a lot of higher quality models and textures in '''FNV''' since it's an older 32-bit game and it will only use 2 GB of memory by default. You can double that to 4 GB if you install the 4 GB patch, but that's as far as you can take it.  (32-bits can't address any more than 4GB.) Your PC may have gobs more memory than that, but '''FNV''' won't use it. So it's very easy to run the game out of memory if you use high resolution textures and high quality models.
</div>
+
 
 +
The recommendation is almost never use any textures larger than 1024 x 1024 pixels for '''FNV''' unless it absolutely needs a higher resolution due to the nature of the 3D model, just because of the memory issue.  Also try to keep the triangle count (vertices) as low as possible. If you use a lot of 4096 x 4096 textures, your game will look prettier, but it's also going to crash a lot more often.  (A 4096 x 4096 pixel image with 16 bit color resolution is 32 MB of data. If your screen is displaying 100 different models with textures that size, that's 3.2 GB of data just for the textures. Since a 32 bit program can only handle 4 GB of data, you can see how trying to display a lot of high resolution models is going to run the game out of memory very quickly.) The texture caching system in '''FNV''' seems to leak memory. The more you stress it, the sooner it will run the game out of memory and crash.
  
<span id="Tip-NPCPreview"></span>
+
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
====TIP: Avoid CTD previewing NPCs====
+
style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
+
/* Remove the next four 'white-space' lines to restore default white-space processing. */
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
+
white-space: pre-wrap;      /* css-3 */
background-color:#333333;padding:3px;
+
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 +
white-space: -pre-wrap;      /* Opera 4-6 */
 +
white-space: -o-pre-wrap;    /* Opera 7+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">To avoid crashing the GECK when you desire to "preview" an NPC, try opening their face "advanced" tab first. Then go back to one of the other tabs to check the "Preview Full". And when editing, click "Ok" for closing the NPC window, and then save the file instead of switching to the other tabs. Don't leave "edits" hanging when switching among tabs.</div>
+
">
 +
<span style="color: orange; background-color:#424242;" id="Tip-MeshConversionFootnote1">Footnote [1]:</span> This statement deserves some clarification.
 +
 
 +
A lot of people seem to think that anything made with a 64 bit program can't be compatible with stuff made by a 32 bit program. That's not true. What matters is the data format that the programs use. If the format is the same, then the data will work for both the 32 and 64 bit programs. There's nothing special about the data created by a 64 bit program. It's just data.  The key is in the format.
 +
 
 +
32 bit programs can't access more than 4 GB of memory. This is because 2 to the 32nd power is 4 GB, so if all you have is 32 bits available to specify a memory location, it has to be in the lower 4 GB of memory. This is why FO3 and FNV will never use more than 4 GB of memory (2 GB without the "4 GB patch") no matter what. The programs just aren't capable of accessing any more memory than that.
  
<span id="Tip-OnlyOneRace"></span>
+
'''Skyrim SE''' is basically a 64 bit port of '''Skyrim''' using the updated '''Creation Engine''' that they developed for '''Fallout 4 (FO4)'''. For porting objects from one game to another, we don't really care about that. What we care about is whether the NIF file format changed between '''Skyrim''' and '''Skyrim SE'''. There are plenty of programs which come in 32 and 64 bit versions, and both use the same '''data format''' to store their data '''''if you select it''''', so you can use either the 32 bit or the 64 bit version.
====TIP: Changing only one race====
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">Since the '''GECK''' is really an evil Vault-Tek experiment designed to test modder's frustration levels, one of the annoying things that it does is any time you even click on a race to view it, it marks that race as changed. Your mod will therefore not only create your custom race, but it will also overwrite any other mod's changes to the (Caucasian, Asian, Asian Child, Ghoul, etc.) races. If you don't want your mod to change these other races, when you start up the '''GECK''': select your mod and select ''Details''. Then select the races other than your custom race one by one, and press the ''<Delete>'' key. That will flag those changes so that they don't get loaded when you next load up the GECK. Now load your mod up as usual and save it. That will get rid of the extra races in your mod that you probably didn't want to modify.
 
  
Alternately, you can use FNVEdit to remove the extra race records. It's a bit less clicking and fiddling to do it in the GECK, but either way works.
+
For '''Skyrim SE''' though, they were playing around with the '''Creation Engine''' for '''FO4''' development, and they made changes to the NIF format for '''FO4'''. It's not known how many of those changes (if any) were made to the NIF format for '''Skyrim SE''', but if you can't easily import meshes from '''Skyrim SE''' into '''Blender''' (for example), it's because the tool set hasn't been updated to handle the data format difference. It's a data format difference, not a 32 vs 64 bit difference.
 +
</div>
 
</div>
 
</div>
  
<span id="TIP-CompanionWheel"></span>
+
<span id="Tip-PluginCopy"></span>
====TIP: Companion Wheel====
+
====TIP Copying between plugins====
: Thanks to '''madmongo''' of the Nexus FalloutNV 'New Vegas GECK and Modders' sub-forum for the following basic summary:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">To make the companion wheel work, you MUST use the specific dialog options and variables shown in the [http://www.nexusmods.com/newvegas/mods/45278/? Advanced Companion creation guide with Companion Wheel] tutorial, as those are the options that the command wheel is expecting.  Hopefully when converting an existing one, the original companion has enough dialog options that you can just copy the voice files to the dialog topics that you need.  The tutorial has two quests, one that runs the companion and one that is only to hire the companion. You don't really need a quest to hire the companion. You can just do it through dialog if you really want to keep it simple.
+
">
 +
* The Trick is to make an ESP first, only dependent on the main master file.  Save and close it.
 +
: Best way to make a new ESP file is to drop something in the "Render" window, then save and name the file. So loading a cell first is needed.  Suggest Wasteland cell / Good Springs. You can of course delete that cell later if it's not needed for your purposes.
 +
* Then open the GECK adding the other files from which you want to use assets, with your new .ESP as the "active file".</div>
  
Only one companion conversation option should be active at a time.  In other words, if you already have a dialog option for the companion to follow you, you need to disable that conversation option and use the existing '''FollowersLetsGo''' topic instead. Similarly, if you have a wait option, you need to disable that and use '''FollowersWait''' instead. Using ''SetPlayerTeammate 1'' in the hiring script is enough make the command wheel appear whenever you talk to the NPC, but the command wheel options won't actually work unless you use the '''Followers''' topics: such as '''FollowersWait, FollowersLetsGo, FollowersTrade''', and the various '''FollowersTactics'''' options.
+
=== Creature Creation ===
 +
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
  
If the topics aren't showing up, check to make sure you have ''Top Level'' checked (upper right on the quest form) and make sure that the conditions are valid. Also, trading (''OpenTeammateContainer'') won't work unless the NPC is set to be a teammate
+
The process of creating a "creature" is essentially the same as creating a "NPC Companion", but without the "companion wheel".
(you've done a ''SetPlayerTeammate 1'' on the NPC, which is usually done when hiring the NPC).
 
  
Make sure you have a line with ''SetPlayerTeammate 0'' when firing the companion so the command wheel will no longer show up when you talk to themThe tutorial has the details of exactly which topics you need to use.
+
* [http://www.nexusmods.com/fallout3/mods/6306/? Adding a custom creature to Fallout 3 Tutorial by Ominus] PDFVery Basic.
</div>
+
* [http://geck.bethsoft.com/index.php?title=Bethsoft_Tutorial_NPC_population Bethsoft Tutorial NPC population] HTML.  Covers the basic placement of leveled lists for enemy spawning and the use of generic patrol and sandbox package behaviors.
 +
* [http://www.nexusmods.com/newvegas/mods/60497/? Bringing Life to the Mojave by Mindboggles] PDF.
 +
* [http://www.youtube.com/watch?v=8YVZ0FoXXcc GECK Tutorial - Creature/NPC Companion by Seddon4494] Video.
 +
* [http://www.youtube.com/watch?v=JIHh6-4k_q4 GECK Tutorial: Custom Creature Part 1 (of 4) by gerokeymaster] Video.
  
span id="Tip-CustomRaceFaces"></span>
+
<span id="Tip-EmbeddedWeapon"></span>
====TIP: Custom Race & Faces====
+
====TIP Locate Embedded Creature Weapon====
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
: Thanks to '''uhmattbravo''' of the Nexus FalloutNV 'New Vegas GECK and Modders' sub-forum for the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">A ''custom race'' doesn't give you a ''custom face''. (The ''head'' mesh is separate from the ''body'' mesh and the ''race'' textures.  See [[#Tip-CustomSkinTextures|TIP: Custom Race & Skin Textures.]]) It gives you a custom face blueprint that is further modified by all of the '''FaceGen''' stuff (see [[#FaceGen:_Heads,_Faces,_Hairs,_and_Helmets|FaceGen: Heads, Faces, Hairs, and Helmets]] section) when you actually apply it to your NPC or player preset. If the custom race version is pretty close to what you want, then you'll probably want to adjust all of the sliders in both the ''Geometry'' and the ''Texture'' section of the NPC pretty close to the middle (zero) for each slider. There are some shading and tinting effects that always get applied whether you want them or not, which is a royal pain in the backside sometimes. Unfortunately, there's no known way to disable them.
+
">
 +
* If you're using an existing creature, the quickest way to locate an embedded weapon would be to look at one of it's existing weapons in '''GECK'''.
 +
* If it came from a resource, and doesn't have any existing weapons, open the skeleton in '''Nifskope''' and look at the end of bones where it would be logical to fire from. Typically it's named projectile node or something similar, but it's also one of the few (if not only) bones that doesn't start with ''bip01''.
 
</div>
 
</div>
  
<span id="Tip-CustomSkinTextures"></span>
+
=== Custom NPCs ===
 +
Other sections have relevant information to this subject.  The following "Tips" in particular are applicable.
 +
* See the [[#Dialogue & Lip-synch|Dialogue & Lip-synch]] section regarding scripting "Dialogue" and "Conversations".
 +
:* [[#Tip-GenericDialog | TIP: Adding Generic Dialog.]]
 +
:* [[#Tip-Translators|TIP: Conversation/Quest system.]]
 +
:* [[#Tip-OCE|TIP: Obsidian Conversation Editor (OCE).]]
 +
:* [[#TIP-RandomNPCcomments|Tip: Random NPC Comments.]]
 +
:* [[#Tip-DialogTabs|TIP: Standard Dialog.]]
  
====TIP: Custom Race & Skin Textures====
+
* See the [[#Scripting|Scripting]] section regarding:
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
:* types of scripts: Objects, Quests, and "Base Effects".
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
+
:* [[#TIP-EditorIDNames|'''TIP: Do not begin Editor-IDs with numbers.''']]
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
+
:* [[#Tip-CompoundConditionals|TIP: Debugging Compound Conditionals.]]
background-color:#333333;padding:3px;
+
:* [[#Tip-Debugging|TIP: Debugging data to file.]]
word-wrap: break-word;      /* Internet Explorer 5.5+ */
+
:* [[#Tip-EventHandler|TIP: Don't overlook EventHandlers.]]
">Suppose you want to add tattoos (or scars or whatever decoration) to the skin of a particular NPC or race.  The body texture is controlled by the race, not by the mesh "NIF" file. You need to change this in the '''GECK'''.  '''NifSkope''' won't help you here.
+
:* [[#Tip-Encapsulation|TIP: Encapsulation - Parens, Brackets, and Braces.]]
 +
:* [[#Tip-FunctionParameters|TIP: Function parameter separation with commas.]]
 +
:* [[#Tip-ParsingLines|TIP: GECK parses the entire line before evaluating.]]
 +
:* [[#Tip-NPCWpnChoice|TIP: NPC Weapon Choice.]]
 +
:* [[#TIP-MsgVariable|TIP: Pass a variable number into a script message.]]
 +
:* [[#Tip-Notes|TIP: Passing a 'Note' to the player.]]
 +
:* [[#Tip-Recipes|TIP: Passing a 'Recipe' to the player.]]
 +
 
 +
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]<br>
  
You are probably going to want to create a ''custom race'' for your character, otherwise the tattoo will show up on every NPC who is a member of that race.
+
"All '''Companions''' are ''NPCs'', but not all ''NPCs'' are '''Companions'''."  Both are discussed in this section, but please note and bear in mind the distinction when used.
  
To create a ''custom race'', open up the '''GECK''' with at least the '''Fallout New Vegas.ESM''' file selected, select the ''Actor Data | Race'' tab on the left (in the Object Window), double click on one of the races to bring up the ''Race'' form, and now select one of the races to duplicate(Note there is a "TestQACaucasian" race that is not otherwise used if you want to try out the process.) If your tattooed character is ''Caucasian'', for example, right-click on the ''Caucasian'' race and select ''Duplicate''.
+
* [http://www.nexusmods.com/newvegas/mods/45278/? Advanced Companion creation guide with Companion Wheel] HTML. (Most recommended.)
 +
* [http://www.nexusmods.com/fallout3/mods/5506 CMF Companion Tutorial] RTF by '''Darkfirebird CMF'''.
 +
* [http://forums.nexusmods.com/index.php?/topic/900821-fnv-companion-tutorial/ FNV Companion Tutorial] Forum Thread by '''trilioth'''.
 +
* [http://geckwiki.com/index.php/Adding_items_to_vendors GECK: Adding items to vendors] Wiki tutorial.
 +
* [http://www.youtube.com/playlist?list=PLo2FGzSVbkcPedlm9zZ981YvUy7DoSQew GECK: Companion Tutorial playlist by cgy95] Video series.
 +
* [http://geckwiki.com/index.php?title=Creating_a_new_vendor GECK: Creating a new vendor] Wiki tutorial.
 +
* [http://www.youtube.com/watch?v=O9wnoZ7tKro GECK: Creating an NPC] Video.
 +
* [http://www.youtube.com/watch?v=NuFepoBHptk GECK: Custom NPC and Dialog] Video.
 +
* [http://forums.nexusmods.com/index.php?/topic/5184015-guide-replacing-vanilla-hair-with-modded-hair/ GUIDE: Replacing Vanilla Hair with Modded Hair] Forum Thread.
 +
* [http://www.nexusmods.com/newvegas/mods/61538/? Hairs - Eyes - Races Auto - Patcher] mod by '''Fallout 2AM'''.
 +
* [http://www.nexusmods.com/newvegas/mods/56009/? Jokerine's Misc Resources Tutorials and Novac Bungalow: Quick 'n' Dirty Merchant] PDF.
 +
* [http://www.nexusmods.com/newvegas/mods/38059/? NCCS - NosCo Companion System] Mod.  Ready-made basic, customizable companions without the "companion wheel" (available as a plugin).  The "companion scripts" make useful examples.  There's a guide that comes with it; it's really a case of loading it up in the GECK, duplicating one of the NCCS NPCs, switching it to one of the premade scripts and dumping it in gameTa-da: the basic companion is done and then all you have to do is customise it.
 +
* [http://www.nexusmods.com/newvegas/mods/41652/? Rivens Tattoo Flash Sheets] Resource. (Copy-and-paste tattoos.)
 +
* [http://www.nexusmods.com/newvegas/mods/62261 Tutorial: How to Make a Custom Race] PDF by '''jim_uk'''.
 +
* [http://www.nexusmods.com/newvegas/mods/43286 Tutorial: Creating a custom PC Race] RTF by '''MagicThize'''.
 +
* [http://www.nexusmods.com/newvegas/mods/62328 Tutorial: How to Make a Freakish Custom Race (Tutorial)] PDFs by '''lazyradly, beardofsocrates, and FancyPants'''.  Details on how to create ".EGMs", ".EGTs", proper NIFs, etc.
  
 +
<span id="Tip-ActorHeight"></span>
 +
==== TIP Actor height in GECK ====
 +
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
style="margin:0px 10px 10px 10px;border:1px solid #00C600;color: green;
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
background-color:#fff5f5;padding:3px;
+
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Important Note: Since the '''GECK''' is an evil Vault-Tec tool designed to test modder's frustration levels, it's important to note that, for no other reason than it's evil, it has now decided to mark your original vanilla ''Caucasian'' race as modified, even though you haven't made any modifications to it, thus guaranteeing that your tattoo mod will conflict with any other mods that modify the ''Caucasian'' race. Stupid '''GECK'''.  (See also [[#Tip-OnlyOneRace|TIP: Changing only one race.]]) Fortunately, fixing this is fairly simple. You can use '''FNVEdit''' to remove the modified ''Caucasian'' race from your mod, OR you can just save your mod, start up the '''GECK''' again, select ''Data'', and instead of just selecting your new mod, highlight your new mod and select the '''Details''' button (at the bottom next to the '''Set as Active File''' button). There should be a '''RACE''' entry under the ''Type Column'', with the '''Caucasian''' Editor-IDHighlight that and press the ''<Delete>'' key. This will mark the modified ''Caucasian'' race as not to be loaded by the '''GECK'''. Select the '''Close''' button, and now load up your mod in the '''GECK'''. With that your mod no longer includes the modified '''Caucasian''' race, so save your mod, and now the unintentionally modified vanilla ''Caucasian'' race is permanently gone from your mod.</div>
+
">If you want to make an Actor taller or shorter in the '''GECK''', just modify their '''Height''' on the ''Traits'' tab. It's a little confusing because most Actors have a value of "0.00" for height, which just means ''use the default'': "0.00" is the same as setting the height to "1.00" (told you it's confusing). If you set it to something other than zero, then it's a percentage scale factor. In other words, if you set the height to "0.95" then they'll be "95 percent" as tall as the default, or about 5 percent shorterSetting the height to "1.05" would make them 5 percent taller (105 percent of normal height).
  
Now that you have a modified race to work with, again select ''Race'' on the left side and double-click on your "new race" to bring up the ''Race'' form with your "new race" selected. <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: red;
+
'''Body meshes''' can just be copied from '''FO3''' to '''FNV''' (and vice-versa, but that's illegal "porting": so, personal use only). The skeleton is the same. The only thing that is different between the two games as far as body parts are concerned is "hair" and "hats", which end up rotated by 90 degrees between the two games. You can fix that in '''NifSkope''' by just rotating the part by 90 degrees.  (See [[#TIP:_Head_Parts_Rotated|TIP: Head Parts Rotated]] under the "Custom Items" section.)  You don't need to re-parent meshes to armatures and that sort of thing.
background-color:#fff5f5;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">Make sure you do not even click on any other race, or that race will be marked as modified by your mod</span> (stupid '''GECK'''). Again, if you goof up and accidentally click on another race, you can mark it as deleted during load and get rid of it that way, or you can clear it out using '''FNVEdit'''.
 
  
Make sure the ''Playable'' box is checked. As long as you copied from another playable race, it should be checked already.
+
If you want your Actor to be about a foot shorter, that's about 84 percent at the default height of about 6 feet, so set their height to "0.84".
 +
</div>
  
Select the ''Text Data'' tab at the top of the ''Race'' form, and change the name of your "new race". If you don't do this, when you go to select your race during character creation, you'll have two races that both say ''Caucasian'' (or whatever race you copied) and you won't be able to tell which race is which. So change it to something like ''Tattoo Race'' or ''Caucasian Tattoo'' or whatever you want to call it.
+
<span id="TIP-AIPackageBasics"></span>
 
+
==== TIP AI Package Basics ====
If you are only modifying the female body texture, check the ''Female'' box down at the bottom where it says ''editing''. (There is a box for ''Male'' and ''Female'', and ''Male'' is checked by default.)
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
There are four textures that define a human body: The ''body'' texture (includes ''torso, arms, legs, and feet''), ''left hand, right hand, and head''. All of these except the ''head'' are found on the ''Body Data'' tab. The default human bodies use the same texture for both the right and left hand. For my tattooed characters, I have given them custom tattoos on each hand and therefore have ended up with unique textures for both the left and right hands. Just click on ''Edit'' and select your new textures. If you are only replacing the body texture, then you only need to modify the ''Upper Body Texture'' and you can leave the hand textures alone.
+
background-color:#333333;padding:3px;
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px solid #00C600;color: green;
 
background-color:#fff5f5;padding:3px;
 
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Another important note: You only select the main texture file (i.e. '''upperbodyfemale.dds''') in the '''GECK'''. The '''GECK''', and the game, assume that the ''normal map'' and ''skin'' files are in the same folder, and have exactly the same name as the main texture, except with "_n" for the normal map and "_sk" for the skin appended to the base filename. In other words:
+
">You need to understand the difference between an [http://geckwiki.com/index.php?title=GetCurrentAIPackage AIPackage] and an [http://geckwiki.com/index.php?title=GetCurrentAIProcedure AIProcedure]. Also, check out the [http://geckwiki.com/index.php?title=Category:AI_Functions Category:AI Functions] to understand the less obvious things you can do with them.  (Take the time to read the linked wiki pages.)
: If your tattooed texture is called '''upperbodyfemale.dds''':
 
:* the normal map has to be '''upperbodyfemale_n.dds''', and
 
:* the skin needs to be '''upperbodyfemale_sk.dds'''.  
 
: If your tattooed texture is called '''tattoobody.dds''', then
 
:* the normal map needs to be '''tattoobody_n.dds''', and
 
:* the skin needs to be '''tattoobody_sk.dds'''.  
 
Typically, if you are only adding tattoos to an existing texture, you can just copy the "_n" and "_sk" files from the original body to the folder with your new tattoo texture. Each modified texture (body, left hand, right hand, head) that you have needs a matching "_n" and "_sk" file.</div>
 
  
It should go without saying that all of these textures have to be somewhere in your "Data\Textures" folder.
+
First you have to chose the correct type of [http://geckwiki.com/index.php?title=Category:Packages Package] to use; investigating how each is intended to be used and actually functions in practice for your purposes.  Remember: only one '''Package''' will run on any given Actor at a time; but that package can have several '''Procedures''' within it to deal with different circumstances.  While there is overlap between the two, note that '''Procedures''' is a longer list.  Don't get ahead of yourself: work on and refine each '''Procedure''' by itself before you attempt to combine them into a comprehensive '''Package'''.  (You will use "condition flags" to control which gets used when.  More on this later.)
  
The ''head'' texture works the same, except it is under the ''Face Data'' tab instead of the ''Body Data'' tab with all of the other textures.
+
For example: "Stalking" would be a '''Procedure''' that is more than just a simple "follower" script because you want the Actor to try to remain unnoticed. For one thing, you might want to use an "Escort" or "Guard" base package instead of "Follow". "Sneaking" is inherently slower than normal movement, but NPCs "cheat" by "teleporting" when they get too far away from the target they are following.  (You  might not have noticed this unless you checked on companions behind yourself frequently in rough terrain.)  But you might find you need to shift in and out of "sneak" mode.  Various '''Target Followers''' may affect what you need for the effective trailing distance to avoid having aggressive ones attacking your "stalker".
  
Once you have all of your modifications done and you have all of the files in the right place, you can click the '''preview boxes''' to look at your race's ''Head'' or ''Full'' view.
+
Once you get that functional, you might want a "flee" '''Procedure''' that will keep that Actor at a proper distance from the '''Target''' without losing track of them so it can resume "following".  A "special case" to test is if your "stalker" is fleeing while the '''Target''' changes cells.  In which case, what are you going to have your "stalker" do to "pick up the scent" of their '''Target''' again?
  
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
+
When the Actor gets far enough from the '''Target''', they then might need a '''Procedure''' to find somewhere to "hide" (break line-of-sight from the '''Target'''), wait a reasonable amount of time for any followers to stop "searching for enemies", and then resume the "Follow" / "Stalk" AI procedure.
style="margin:0px 10px 10px 10px;border:1px solid #00C600;color: green;
 
background-color:#fff5f5;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">Something else to note: if you make changes to the ''head'' texture and '''preview''' it, further changes to the ''head'' texture don't always show up in the '''GECK'''. It caches a copy of your ''head'' texture and sometimes won't show any newer version in the preview window. You can shut down the GECK and reload your mod to properly preview your head texture changes if that happens. ''It will usually pick up modifications to the '''body''' texture if you preview again though.'' It's only the ''head'' texture that gets stuck (it has the same issue for textures for items and other non-NPC things). See also [[#Tip-FaceFeatures|TIP: Switching Custom Facial Features.]]</div>
 
  
If you are using a custom body for your player, you can select the NIF for that on the ''Body Data'' tab as well. There is an ''Upper Body'' model, and a ''Left'' and ''Right Hand'' model. For hand and body NIFs, all you need is the NIF in your '''Meshes''' folder. ''Head'' meshes need an "EGM" file as well, and the file name again needs to match. If your NIF is '''CustomHead.nif''' then the "EGM" needs to be '''CustomHead.egm''', for example.
+
AI packages are in a [http://geckwiki.com/index.php?title=AI_Packages_Tab priority list] of "conditions".  ("Conditions" are just variables, often called "flags", you define and set to control things.  A common use is a "do once" variable in a "quest" script.  You are going to need to "set" and "clear" a number of them for this to indicate when to use only one procedure or package at a time.)  The first package that meets all of it's conditions as "true" then is used. While the [http://geckwiki.com/index.php?title=AddScriptPackage AddScriptPackage] and [http://geckwiki.com/index.php?title=RemoveScriptPackage RemoveScriptPackage] functions might seem appropriate to  generally use, they have major limitations.  (See [[#TIP_Using_AI_Packages|TIP Using AI Packages]] and the linked description for more details on this.)  Just adding a package does not place the package within the [http://geckwiki.com/index.php?title=AI_Packages_Tab priority list]; instead it overrides the list for immediate implementation but goes away once completed and won't matter after that as it's conditions are never evaluated after that point. Typically you will want to place your package in the [https://geckwiki.com/index.php?title=AI_Packages_Tab AI Packages Tab] list of packages for your "stalker" Actor, set the appropriate "conditional flag variables", and use the "Evaluate Package" (EVP) function to cause the list to be processed again to determine which is now the "first true" package.  Note that you do not use EVP with '''AddScriptPackage'''.  That function performs the equivalent immediately when called.  
  
If all you are doing is adding a texture to whatever the default mesh is on your system for that race, then you probably don't need to worry about custom NIFs. This is true even if you are using a ''body replacer'', since they tend to place themselves in the same location as the default vanilla body NIFs in the folder structure. In other words, if you are using say the "Type 3 body replacer" and your "tattoo texture" is for "Type 3", you already have custom NIFs in your '''Meshes\Characters...''' folder for the "Type 3", and those are already what gets loaded by the GECK for each race type. You don't need to have a custom "Type 3" NIF for your character.
+
Each '''Package''' needs to consider that it may encounter conditions that require another '''Package''' or '''Procedure''' to take precedence and execute.  You do not simply "resume" an AI package where you left off.  It starts over whatever the current situation is when it gets invoked.  That could be in a completely different cell than where it left off. This is why it is important to keep your "condition flags" current and updated as things change.
  
On the other hand, if you want a custom NIF just for your character so that they use a different mesh than the default races, then you will need to specify a custom NIF in the ''race'' in the '''GECK'''. Whatever ''body texture'' is defined in the NIF ends up getting ignored by the game, though. The game will use the custom texture defined in the '''GECK''' instead.
+
See also:
 +
* [[#TIP_AI_Packages_and_Distance|TIP AI Packages and Distance]]
 +
* [[#TIP_Making_NPCs_move_aka_AI_Packages|TIP Making NPCs move aka AI Packages]]
 
</div>
 
</div>
  
<span id="Tip-Hostility"></span>
+
<span id="Tip-GetDistance"></span>
====TIP: Hostility between NPCs====
+
 
 +
====TIP AI Packages and Distance====
 +
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Hostilities will not immediately break out between two NPCs when they come into proximity simply because they are in "Enemy" [[#Factions|Factions]]. Their actions are influenced by the NPCs personal "aggression" and "[http://geck.technodeep.net/index.php/Confidence confidence]" numbers (on the GECK "[http://geck.technodeep.net/index.php/AI_Data_Tab AI Data Tab]" page and the resulting "Threat Ratio" at the time.
+
">Supposing you want your character to meet up with an NPC at some X-Marker location, but they aren't there when you "fast travel" to that location? You need to "teleport" them ,but you don't want to just make them "vanish". Here is one way to handle it.
  
You can use the "[http://geck.technodeep.net/index.php/SetActorValue setav]" command in script to change the "[http://geck.technodeep.net/index.php/ActorValue#User_Defined_Actor_Values Actor Value]" for permanent changes or "[http://geck.technodeep.net/index.php/DamageActorValue DamageActorValue]" and "[http://geck.technodeep.net/index.php/RestoreActorValue RestoreActorValue]" for temporary changes to the "[http://geck.technodeep.net/index.php/Stats_List Stats List]". (See the GECK "[http://geck.technodeep.net/index.php/Actor_Value_Codes Actor Value Code]" list.) Be careful about the scope of effect of your changesRead the warnings under "[http://geck.technodeep.net/index.php/ActorValue Actor Value]" carefully.
+
In the "Dialog Result Script" where you make the NPC start using your "AI Package" to send them to that location, also start a "quest script" (e.g. "ThisQuestName"). This quest should have a processing delay of perhaps one second, and then check for the player to be a certain distance away from the NPC, and for the NPC to not be in the player's view ("Line of Sight": LoS)Once it's found that both requirements are satisfied, the NPC is teleported to the marker and the quest was endedThe quest is set to be stopped on proper completion of the AI package as well, in case it's still running.
  
There are ten "user defined/mod actor values". They have no defined game functions, but can be used by quests to establish permanent data on the actor. Keep in mind that setting one of the variables on an actor implicitly defines that variable for ALL actors, not just in your modUsing these values to store extra information has the potential to cause conflicts with other mods. <span style="color: red; background-color:#fff5f5;">If you need to store information on an actor, use a token (an unplayable, therefore invisible, piece of armour) instead.</span>
+
The example script below uses the '''JIP LN NVSE''' function ''GetDistance2D'', but it will work fine with the vanilla ''GetDistance'' function as well.
</div>
+
<pre>
 
+
Begin GameMode
<span id="Tip-InterruptCombat"></span>
+
    ; separation of player and NPC check
====TIP: Interrupt combat for dialog====
+
    If player.GetDistance2D refNPC >= 2048
: Thanks to '''clanky4''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
        If player.GetLOS refNPC == 0
 +
            refNPC.moveto refMarker
 +
            ; maybe remove their AI package or add another one or whatever here?  maybe EVP?
 +
            StopQuest ThisQuestName
 +
        EndIf
 +
    EndIf
 +
End
 +
 
 +
Begin GameMode
 +
    ; NPC near X-Marker check
 +
    if refNPC.GetDistance2D refMarker <= 64
 +
        StopQuest ThisQuestName
 +
    endif
 +
End</pre>
 +
''GetLOS'' isn't always reliable, so in some situations it may be preferred just to increase the distance; maybe use ''GetDistance3D''''GetLOS'' has returned "true" when the NPC or object was at the very edge of the player's camera, and has not realized the player couldn't see the NPC.  These both require an extreme circumstance, and most of the time it works fine; but it's best to test each situation.
 +
</div>
 +
 
 +
<span id="Tip-NPCPreview"></span>
 +
====TIP Avoid CTD previewing NPCs====
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Suppose you want an NPC (once engaged) to interrupt combat in order to switch to some dialog: such as to offer to surrender when their HP drops low enough(An example of this is during the "Dog/God" fight in the kitchen of the Sierra Madre Casino, but that script is a mess to try to interpret.)
+
">To avoid crashing the GECK when you desire to "preview" an NPC, try opening their face "advanced" tab firstThen go back to one of the other tabs to check the "Preview Full".  And when editing, click "Ok" for closing the NPC window, and then save the file instead of switching to the other tabs. Don't leave "edits" hanging when switching among tabs.</div>
  
When the conditions for that interruption are correct, use the command:
+
<span id="Tip-OnlyOneRace"></span>
<div name="Simulated code box" class="boilerplate metadata" id="SimCodeBox"  
+
====TIP Changing only one race====
style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray;  
+
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
background-color:#424242; padding:3px;"
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
/* Remove the next four 'white-space' lines to restore default white-space processing. */
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
white-space: pre-wrap;      /* css-3 */
+
background-color:#333333;padding:3px;
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 
white-space: -pre-wrap;      /* Opera 4-6 */
 
white-space: -o-pre-wrap;    /* Opera 7+ */
 
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">PlayerRef.[http://geckwiki.com/index.php/StopCombatAlarmOnActor StopCombatAlarmOnActor]
+
">Since the '''GECK''' is really an evil Vault-Tek experiment designed to test modder's frustration levels, one of the annoying things that it does is any time you even click on a race to view it, it marks that race as changed. Your mod will therefore not only create your custom race, but it will also overwrite any other mod's changes to the (Caucasian, Asian, Asian Child, Ghoul, etc.) races. If you don't want your mod to change these other races, when you start up the '''GECK''': select your mod and select ''Details''. Then select the races other than your custom race one by one, and press the ''<Delete>'' key. That will flag those changes so that they don't get loaded when you next load up the GECK. Now load your mod up as usual and save it. That will get rid of the extra races in your mod that you probably didn't want to modify.
</div>
 
This ends the fighting flag for all enemies targeting the specified actor (e.g. PlayerRef). All hostile actors that are in combat with that actor will return to their normal routines. Now they can enter into dialog (or other activities such as a "run away" travel package).
 
  
If you wish to only stop the fighting flag for a single actor, refer to [http://geckwiki.com/index.php/StopCombat StopCombat].
+
Alternately, you can use FNVEdit to remove the extra race records. It's a bit less clicking and fiddling to do it in the GECK, but either way works.
 
</div>
 
</div>
  
<span id="Tip-NPCMovement"></span>
+
<span id="Tip-CharGenFacePresets"></span>
====TIP: Making NPCs move (aka "AI Packages")====
+
====TIP CharGen Face Presets====
: Thanks to '''madmongo''', '''EPDGaffney''', and '''FiftyTifty''' of the Nexus FalloutNV 'New Vegas GECK and Modders' and '''kingbeast88''' of the 'New Vegas Mod Troubleshooting' sub-forums for the following basic summary of how to get NPCs to move:
+
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following.
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">An NPC that just stands there typically is doing so because they don't have an [http://geck.technodeep.net/index.php/AI_Packages_Tab GECK: AI package] to run.
+
">When you want to take a Actor's (Player or NPC) face data to or from a save game file and turn it into a "CharGen Face Preset":
 +
* [http://www.nexusmods.com/newvegas/mods/35769/ FaceGen Save Face Ripper for FNVEdit] tool to rip face hex data from save files for use in '''FNVEdit'''.
 +
* [http://www.nexusmods.com/newvegas/mods/56009? Jokerine's Misc Resources and Tutorials - FNV] has a step-by-step tutorial on the process.
  
A typical companion will have a companion script which will have defined a number of [http://geck.technodeep.net/index.php/Category:Packages GECK: Packages]: a '''Follow''' default package, a '''Follow Long''' package, an '''Idle/Wait''' package, and a '''Non-hired''' package (they may use the same package for ''Wait'' and '''Non-hired''', like a ''sandbox'' type package, for example). Each of the packages must have a condition variable, which will typically be the equivalent of "'''if (''IsFollowingDefault'' == 1)'''" for the follow default package, or ''IsFollowingLong'' for the follow long package, or ''HasBeenHired'' is set to zero for the '''Not-hired''' ''sandbox'' (or whatever) package, and "'''if (''waiting'' == 1)'''" for the '''Wait''' package. If you don't have a condition, then the package will want to always run. Those variables (e.g. ''IsFollowingDefault'', ''IsFollowingLong'', etc.) all have to be defined in the NPC's script. You set the various variables to match what you want the character to do as the way you control which package is used, then do an ''[http://geck.bethsoft.com/index.php?title=EvaluatePackage EvaluatePackage] (.EVP)'' function on the NPC to get them to switch.
+
Once you have the face in the '''GECK''', you can copy the face from one Actor to another by opening both Actors in the '''GECK'''. There is a copy and paste option under the ''Face Advanced'' tab.  
  
Function ''[http://geckwiki.com/index.php/ResetAI ResetAI]'' clears all current AI behaviors from an actor. Combat, pathing, and packages are re-evaluated.  This is a severe command that affects all AI behavior.  Usually, you just want to have an actor re-evaluate its current package. In that case, use ''EvaluatePackage'' instead. (When using the number of "tokens" present in an Actor's inventory to control AI packages, one author found it necessary to use ''ResetAI'' instead of ''EVP'' in order to get their script to function correctly more often than the first time. The cause behind this behavior is unknown.)
+
There are two bugs you need to be aware of.
 +
* First, you need to copy the hair color over to the target Actor first (the three RGB values under the ''Face'' tab); otherwise when you change the hair color the FaceGen data will change slightly.
 +
* The second thing is that when you do copy and paste from the ''Face Advanced'' tab, whatever option is selected (by default it's the first one, ''Brow Ridge High/Low'') will not be copied. So go to the source Actor, press ''Copy'', go to the target Actor, press ''Paste'', then change the selection from ''Brow Ridge High/Low'' (or whatever is currently selected) to something else and press ''Paste'' again.
  
See also [http://geckwiki.com/index.php/How_Are_Packages_Evaluated How Are Packages Evaluated].
+
The '''Character Gen Preset''' shouldn't have any factions or inventory or anything else. You can open up one of the existing presets (they all have "CG" at the start of their Editor-ID) and save it with a new Editor-ID and it should be set up correctly. If you are making a new one from scratch instead, make sure you check ''Is CharGen Face Preset''. The '''GECK''' is a buggy mess, so if you change any of the flags on the left, save the Actor and re-open before changing tabs and doing something else or your changes to the check boxes can get lost.
 +
</div>
  
So, if you want your NPC to '''Follow''' you, it's necessary to script the following in the NPC's conversation quest (replace "MyNPCREF" with the NPC's actual Ref-ID, obviously):
+
<span id="TIP-CompanionWheel"></span>
 +
 
 +
====TIP Companion Wheel====
 +
: Thanks to '''madmongo''' of the Nexus FalloutNV 'New Vegas GECK and Modders' sub-forum for the following basic summary:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
background-color:#424242;padding:3px;
+
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">To make the companion wheel work, you MUST use the specific dialog options and variables shown in the [http://www.nexusmods.com/newvegas/mods/45278/? Advanced Companion creation guide with Companion Wheel] tutorial, as those are the options that the command wheel is expecting.  Hopefully when converting an existing one, the original companion has enough dialog options that you can just copy the voice files to the dialog topics that you need.  The tutorial has two quests, one that runs the companion and one that is only to hire the companion. You don't really need a quest to hire the companion. You can just do it through dialog if you really want to keep it simple.
: Set IsFollowingDefault to 1
+
 
: Set IsFollowingLong to 0
+
Only one companion conversation option should be active at a time.  In other words, if you already have a dialog option for the companion to follow you, you need to disable that conversation option and use the existing '''FollowersLetsGo''' topic instead. Similarly, if you have a wait option, you need to disable that and use '''FollowersWait''' instead. Using ''SetPlayerTeammate 1'' in the hiring script is enough make the command wheel appear whenever you talk to the NPC, but the command wheel options won't actually work unless you use the '''Followers''' topics: such as '''FollowersWait, FollowersLetsGo, FollowersTrade''', and the various '''FollowersTactics'''' options.
: Set waiting to 0
+
 
: MyNPCREF.evp
+
If the topics aren't showing up, check to make sure you have ''Top Level'' checked (upper right on the quest form) and make sure that the conditions are valid. Also, trading (''OpenTeammateContainer'') won't work unless the NPC is set to be a teammate
 +
(you've done a ''SetPlayerTeammate 1'' on the NPC, which is usually done when hiring the NPC).
 +
 
 +
Make sure you have a line with ''SetPlayerTeammate 0'' when firing the companion so the command wheel will no longer show up when you talk to them.  The tutorial has the details of exactly which topics you need to use.
 
</div>
 
</div>
If you want the NPC to '''Follow Long''', you would do the following:
+
 
 +
span id="Tip-CustomRaceFaces"></span>
 +
====TIP Custom Race and Faces====
 +
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
background-color:#424242;padding:3px;
+
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">A ''custom race'' doesn't give you a ''custom face''.  (The ''head'' mesh is separate from the ''body'' mesh and the ''race'' textures.  See [[#Tip-CustomSkinTextures|TIP: Custom Race & Skin Textures.]]) It gives you a custom face blueprint that is further modified by all of the '''FaceGen''' stuff (see [[#FaceGen:_Heads,_Faces,_Hairs,_and_Helmets|FaceGen: Heads, Faces, Hairs, and Helmets]] section) when you actually apply it to your NPC or player preset. If the custom race version is pretty close to what you want, then you'll probably want to adjust all of the  sliders in both the ''Geometry'' and the ''Texture'' section of the NPC pretty close to the middle (zero) for each slider. There are some shading and tinting effects that always get applied whether you want them or not, which is a royal pain in the backside sometimes. Unfortunately, there's no known way to disable them.
: Set IsFollowingDefault to 0
 
: Set IsFollowingLong to 1
 
: Set waiting to 0
 
: MyNPCREF.evp
 
 
</div>
 
</div>
: <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: green;
 
background-color:#fff5f5;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">(Also, on the NPC object: uncheck the ''no low-level processing'' box if they need to follow you through portals consistently.)</span>
 
  
And if you want the NPC to '''Wait''', you would do the following:
+
<span id="Tip-CustomSkinTextures"></span>
 +
 
 +
====TIP Custom Race and Skin Textures====
 +
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
background-color:#424242;padding:3px;
+
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">Suppose you want to add tattoos (or scars or whatever decoration) to the skin of a particular NPC or race.  The body texture is controlled by the race, not by the mesh "NIF" file. You need to change this in the '''GECK'''.  '''NifSkope''' won't help you here.
: Set IsFollowingDefault to 0
+
 
: Set IsFollowingLong to 0
+
You are probably going to want to create a ''custom race'' for your character, otherwise the tattoo will show up on every NPC who is a member of that race.
: Set waiting to 1
+
 
: MyNPCREF.evp
+
To create a ''custom race'', open up the '''GECK''' with at least the '''Fallout New Vegas.ESM''' file selected, select the ''Actor Data | Race'' tab on the left (in the Object Window), double click on one of the races to bring up the ''Race'' form, and now select one of the races to duplicate.  (Note there is a "TestQACaucasian" race that is not otherwise used if you want to try out the process.)  If your tattooed character is ''Caucasian'', for example, right-click on the ''Caucasian'' race and select ''Duplicate''.
</div>
+
 
: <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: green;
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px solid #00C600;color: green;
 
background-color:#fff5f5;padding:3px;
 
background-color:#fff5f5;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">(Don't forget to set the ''Guard Location'' on the '''Wait''' package to "Near Current Location" instead of the default "Near Editor Location", or the companion will run off to wait at their spawn site.)</span>
+
">Important Note: Since the '''GECK''' is an evil Vault-Tec tool designed to test modder's frustration levels, it's important to note that, for no other reason than it's evil, it has now decided to mark your original vanilla ''Caucasian'' race as modified, even though you haven't made any modifications to it, thus guaranteeing that your tattoo mod will conflict with any other mods that modify the ''Caucasian'' race. Stupid '''GECK'''.  (See also [[#Tip-OnlyOneRace|TIP: Changing only one race.]]) Fortunately, fixing this is fairly simple. You can use '''FNVEdit''' to remove the modified ''Caucasian'' race from your mod, OR you can just save your mod, start up the '''GECK''' again, select ''Data'', and instead of just selecting your new mod, highlight your new mod and select the '''Details''' button (at the bottom next to the '''Set as Active File''' button). There should be a '''RACE''' entry under the ''Type Column'', with the '''Caucasian''' Editor-ID.  Highlight that and press the ''<Delete>'' key. This will mark the modified ''Caucasian'' race as not to be loaded by the '''GECK'''. Select the '''Close''' button, and now load up your mod in the '''GECK'''. With that your mod no longer includes the modified '''Caucasian''' race, so save your mod, and now the unintentionally modified vanilla ''Caucasian'' race is permanently gone from your mod.</div>
  
Note that you want to set variables to enable your packages, and also clear variables to stop the other packages from trying to run. You want to set it up so that the only condition that evaluates to '''true''' is the one that's for the package you want the NPC to run. For example: if you want the NPC to follow the "default" package, you need to enable the '''IsFollowingDefault''' variable while disabling both the '''IsFollowingLong''' and the '''Wait''' package variables.
+
Now that you have a modified race to work with, again select ''Race'' on the left side and double-click on your "new race" to bring up the ''Race'' form with your "new race" selected. <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: red;
 +
background-color:#fff5f5;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Make sure you do not even click on any other race, or that race will be marked as modified by your mod</span> (stupid '''GECK'''). Again, if you goof up and accidentally click on another race, you can mark it as deleted during load and get rid of it that way, or you can clear it out using '''FNVEdit'''.
  
The ''HasBeenHired'' variable would be used to enable or disable various conversation options, and would also be set when the NPC is hired and cleared when the NPC is fired (and again, an ''.EVP'' would be done to get the character to ''sandbox'' when not hired so they don't just stand there like an idiot).
+
Make sure the ''Playable'' box is checked. As long as you copied from another playable race, it should be checked already.
  
If you want a fully functional command wheel, you '''''have to use the conversation topics''''' that the command wheel expects.
+
Select the ''Text Data'' tab at the top of the ''Race'' form, and change the name of your "new race". If you don't do this, when you go to select your race during character creation, you'll have two races that both say ''Caucasian'' (or whatever race you copied) and you won't be able to tell which race is which. So change it to something like ''Tattoo Race'' or ''Caucasian Tattoo'' or whatever you want to call it.
  
The first tutorial listed ('Advanced Companion creation guide with Companion Wheel') is recommended for learning to use the "companion command wheel".
+
If you are only modifying the female body texture, check the ''Female'' box down at the bottom where it says ''editing''. (There is a box for ''Male'' and ''Female'', and ''Male'' is checked by default.)
  
[[File:EPDGaffney_AIPackage-GoingHome.png|thumbnail|100px|AIPackage-GoingHome_Fig-01]]
+
There are four textures that define a human body: The ''body'' texture (includes ''torso, arms, legs, and feet''), ''left hand, right hand, and head''. All of these except the ''head'' are found on the ''Body Data'' tab. The default human bodies use the same texture for both the right and left hand. For my tattooed characters, I have given them custom tattoos on each hand and therefore have ended up with unique textures for both the left and right hands. Just click on ''Edit'' and select your new textures. If you are only replacing the body texture, then you only need to modify the ''Upper Body Texture'' and you can leave the hand textures alone.
Some people prefer to follow the simpler instructions and example in the [http://forums.nexusmods.com/index.php?/topic/900821-fnv-companion-tutorial/ FNV Companion Tutorial] Thread by '''trilioth''' (even though it does not include how to use the "companion wheel"), but get confused at "Step 3: Create AI Packages".
 
  
The way this was done in the vanilla game (and the [[:File:EPDGaffney_AIPackage-GoingHome.png|AIPackage-GoingHome_Fig-01]] image here) was using quest variables, whereas '''trilioth''''s tutorial uses script variables.  Follow the tutorial, as based on the preceding steps you should have these variables in your object script, not your quest script. The way you create the package is the same otherwise. (See [[:File:EPDGaffney_AIPackage-GoingHome.png|AIPackage-GoingHome_Fig-01]]. {{Thumbnail_enlargement_message}})
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px solid #00C600;color: green;
 +
background-color:#fff5f5;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Another important note: You only select the main texture file (i.e. '''upperbodyfemale.dds''') in the '''GECK'''. The '''GECK''', and the game, assume that the ''normal map'' and ''skin'' files are in the same folder, and have exactly the same name as the main texture, except with "_n" for the normal map and "_sk" for the skin appended to the base filename. In other words:
 +
: If your tattooed texture is called '''upperbodyfemale.dds''':
 +
:* the normal map has to be '''upperbodyfemale_n.dds''', and
 +
:* the skin needs to be '''upperbodyfemale_sk.dds'''.
 +
: If your tattooed texture is called '''tattoobody.dds''', then
 +
:* the normal map needs to be '''tattoobody_n.dds''', and
 +
:* the skin needs to be '''tattoobody_sk.dds'''.  
 +
Typically, if you are only adding tattoos to an existing texture, you can just copy the "_n" and "_sk" files from the original body to the folder with your new tattoo texture. Each modified texture (body, left hand, right hand, head) that you have needs a matching "_n" and "_sk" file.</div>
  
<span style="text-align: left; color: red; background-color:#fff5f5;">(WARNING: There is a bug in GECK on versions of Windows after Win7 that causes the columns under the "Conditions" tab to be collapsed to the left and appear to not be present.  Accessing this field in the "AI Package" form consistently causes this bug to trigger, and it then affects other "list box" type fields in other forms.  Please see the [[#Issue:_GECK_is_missing_text_in_fields|Issue: GECK is missing text in fields]] entry for suggestions on dealing with this.)</span>
+
It should go without saying that all of these textures have to be somewhere in your "Data\Textures" folder.
  
For '''Patrol''' packages your NPC needs to be linked to your first "X marker" in the navmeshed patrol path.  (See the [[#Tip-NavMeshExteriors|TIP: Navmeshing Exterior cells.]])  All "X markers" in the patrol path need a ''unique ID'', need to be ''persistent'', and linked to each other in the succession you wish it traversed. "Idle markers" can be used but need ''duration'' times set and need to be made ''persistent''.
+
The ''head'' texture works the same, except it is under the ''Face Data'' tab instead of the ''Body Data'' tab with all of the other textures.
  
To make a new '''Patrol''' package with a unique ID: Just edit a base package to your liking; then change the Editor-ID name.  GECK will create a new form.  Make sure the package type is '''Patrol''', the ''starting location'' is a linked reference (e.g. "X marker"), and flagged ''repeatable''. Then give the NPC the new package and link your NPC to the first marker in the patrol path.
+
Once you have all of your modifications done and you have all of the files in the right place, you can click the '''preview boxes''' to look at your race's ''Head'' or ''Full'' view.
  
An NPC not waking up from sleep is an indication the time schedule conflicts with another package.  All it should need is a package type of '''Sleep''', a ''schedule time'' and ''duration'' (do not allow the times to overlap with other packages), flag enable ''fallout behavior'' & for ''location'': the ''name of a cell'' or a linked reference (which needs to be selected) or a ''near reference'' (if you have multiple beds for instance and don't care which they use).
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px solid #00C600;color: green;
 +
background-color:#fff5f5;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Something else to note: if you make changes to the ''head'' texture and '''preview''' it, further changes to the ''head'' texture don't always show up in the '''GECK'''. It caches a copy of your ''head'' texture and sometimes won't show any newer version in the preview window. You can shut down the GECK and reload your mod to properly preview your head texture changes if that happens. ''It will usually pick up modifications to the '''body''' texture if you preview again though.'' It's only the ''head'' texture that gets stuck (it has the same issue for textures for items and other non-NPC things). See also [[#Tip-FaceFeatures|TIP: Switching Custom Facial Features.]]</div>
  
'''Exterior sandbox''' type packages need a package type of ''sandbox'', and a ''wander location'' set with a ''radius''. Set whatever flags you want in: ''allowed behavior'', enabled ''fallout behavior'' in flags, and a non overlapping time scheduled.
+
If you are using a custom body for your player, you can select the NIF for that on the ''Body Data'' tab as well. There is an ''Upper Body'' model, and a ''Left'' and ''Right Hand'' model. For hand and body NIFs, all you need is the NIF in your '''Meshes''' folder. ''Head'' meshes need an "EGM" file as well, and the file name again needs to match. If your NIF is '''CustomHead.nif''' then the "EGM" needs to be '''CustomHead.egm''', for example.
  
When you send someone away (i.e. "no longer hired" or "go home"), set the "GoHome" package to be a "sandbox" type instead of "travel", and they will automatically run off to the "home" location to sandbox there. The game scripts often teleport actors to that location first when they want to avoid encountering "hostiles" enroute.  Be sure you first set the conditions you are using as appropriate (i.e. "not hired", "available for hire", etc.) before an ".evp" command to take immediate effect.
+
If all you are doing is adding a texture to whatever the default mesh is on your system for that race, then you probably don't need to worry about custom NIFs. This is true even if you are using a ''body replacer'', since they tend to place themselves in the same location as the default vanilla body NIFs in the folder structure. In other words, if you are using say the "Type 3 body replacer" and your "tattoo texture" is for "Type 3", you already have custom NIFs in your '''Meshes\Characters...''' folder for the "Type 3", and those are already what gets loaded by the GECK for each race type. You don't need to have a custom "Type 3" NIF for your character.
  
Be very careful using "[http://geck.technodeep.net/index.php/AddScriptPackage AddScriptPackage] <packagename>". In practice, whenever an NPC teleports (fast travel, goes through a door, etc) they tend to stop running whatever AI package was added through '''AddScriptPackage''', and then use a suitable sandbox package. It's a useful function for some things, but it won't work in cases like this (traversing cells).
+
On the other hand, if you want a custom NIF just for your character so that they use a different mesh than the default races, then you will need to specify a custom NIF in the ''race'' in the '''GECK'''. Whatever ''body texture'' is defined in the NIF ends up getting ignored by the game, though. The game will use the custom texture defined in the '''GECK''' instead.
 
 
If your NPCs take off for parts unknown when following a package, make sure you have a "North Marker" placed in the cell.
 
 
 
To make the NPC go back to Goodsprings (for example), you need a package that sends him there. The condition for the package will be similar to "<CompanionREF>.HasBeenHired == 0". You don't necessarily need to make an Xmarker the destination. You can have the package be a sandbox inside the "Goodsprings Saloon" cell if you want. Then he'll just sandbox around inside the Saloon whenever he isn't hired and he'll go back there if you fire him.
 
See also [[#TIP-AIPackages|TIP: Using AI Packages.]]
 
 
</div>
 
</div>
  
<span id="Tip-MerchantInventory"></span>
+
<span id="Tip-Hostility"></span>
 
+
====TIP Hostility between NPCs====
==== TIP: Merchant Inventory ====
 
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Let's suppose you want to have a merchant sell certain items only if you succeed in a "speech check".  The solution to adding this inventory leads to some interesting bits of information pertaining to inventories in general.
+
">Hostilities will not immediately break out between two NPCs when they come into proximity simply because they are in "Enemy" [[#Factions|Factions]]Their actions are influenced by the NPCs personal "aggression" and "[http://geckwiki.com/index.php?title=Confidence confidence]" numbers (on the GECK "[http://geckwiki.com/index.php?title=AI_Data_Tab AI Data Tab]" page and the resulting "Threat Ratio" at the time.
  
Merchants will sell any items that are marked as owned by them as long as their container or the item is in the same cell when the [http://geckwiki.com/index.php/ShowBarterMenu ShowBarterMenu] function is called. This includes items lying about the shop outside an obvious container (apparently the shop itself, i.e. the "interior cell", can count as one if solely owned by the NPC; as exemplified by buying Chet's silenced pistol from him removes the one in his display case and that doesn't appear to be specifically scripted anywhere)Of course, the merchant in question must be able to sell that type of item (e.g. the merchant must have the AID service ticked in their NPC form or the wine in their owned fridge won't be available to buy in the barter menu).
+
You can use the "[http://geckwiki.com/index.php?title=SetActorValue setav]" command in script to change the "[http://geckwiki.com/index.php?title=ActorValue#User_Defined_Actor_Values Actor Value]" for permanent changes or "[http://geckwiki.com/index.php?title=DamageActorValue DamageActorValue]" and "[http://geckwiki.com/index.php?title=RestoreActorValue RestoreActorValue]" for temporary changes to the "[http://geckwiki.com/index.php?title=Stats_List Stats List]". (See the GECK "[http://geckwiki.com/index.php?title=Actor_Value_Codes Actor Value Code]" list.)  Be careful about the scope of effect of your changesRead the warnings under "[http://geckwiki.com/index.php?title=ActorValue Actor Value]" carefully.
  
The tested conditions determining what can be sold are:
+
There are ten "user defined/mod actor values". They have no defined game functions, but can be used by quests to establish permanent data on the actor. Keep in mind that setting one of the variables on an actor implicitly defines that variable for ALL actors, not just in your mod. Using these values to store extra information has the potential to cause conflicts with other mods. <span style="color: red; background-color:#fff5f5;">If you need to store information on an actor, use a token (an unplayable, therefore invisible, piece of armour) instead.</span>
# Any item that is owned by the merchant, in the cell with them, enabled, and a type that they can sell will turn up in their barter menu.
 
# These items do not need to be in containers.
 
# Additionally, the merchant's own personal inventory is an "owned container", and anything reverse-pick-pocketted onto their person (or presumeably added via script, though this was not tested) becomes part of their barter menu.
 
# Likewise, placing the player's items into the merchant's owned containers makes these items part of the barter menu as well.  ("Ownership" automatically changes as soon as the transfer completes; i.e. item is released.)
 
# If the cell (this usually refers to an "interior cell") is marked as owned by them, all items in that cell without explicit ownership will belong to them, as usual, and these items will be available for purchase as well.
 
# An item that is marked as belonging to the merchant will be available for purchase even if the entire cell is not marked as owned by them.
 
# If something is owned by the merchant and it was originally put in one cell, transferring it to their current cell makes it immediately part of their barter menu.
 
# Disabling and enabling owned items works to control whether these owned items are eligible to be in the barter menu (provided they meet the other criteria).
 
# Items that are owned by a faction of which the NPC is a member will NOT be available in that NPC's barter menu; ownership must be theirs alone (which is the case when the interior cell is owned only by the NPC).
 
 
 
Bottom line seems to be, if the merchant owns it and it's in the cell they're in when you open their barter menu, as long as they sell that form type, it should be there to buy.  The editor location has no impact.
 
 
 
So, what you would do is set up your secret items container in advance and leave it out of reach in that cell (typically below "ground level").  Then when the secret stash should become available to the player for purchase, run [http://geckwiki.com/index.php/SetOwnership SetOwnership] on the container or item (either of which needs a Reference ID and to be marked as a persistent reference).
 
 
 
This normally means the vendor must be in that cell, so it may be a good idea to give them dialogue about how the merchant needs to meet them at a location in that cell, should the player ever speak to them when they are in a different cell.  Alternatively, you could script an owned container to be transferred to the current cell in that circumstance.  You could use an invisible model for the container and place it near the merchant before opening the barter menu.  It's not believed you need collision on the container but that has not been tested.  If you do need collision, the container should just be scaled down to nothing to avoid weird collision experiences.
 
 
</div>
 
</div>
  
<span id="Tip-CompanionPerks"></span>
+
<span id="Tip-InterruptCombat"></span>
  
====TIP: Perks for Companions====
+
====TIP Interrupt combat for dialog====
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for providing the following quotation:
+
: Thanks to '''clanky4''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">It is generally understood that you cannot add Perks to '''Companions''' in the same way as to the PlayerHowever, according to a [http://fallout.gamepedia.com/Blog:News/New_Vegas_dev_quote_roundup J.E. Sawyer (FNV project director) Q&A roundup]:
+
">Suppose you want an NPC (once engaged) to interrupt combat in order to switch to some dialog: such as to offer to surrender when their HP drops low enough.  (An example of this is during the "Dog/God" fight in the kitchen of the Sierra Madre Casino, but that script is a mess to try to interpret.)
Quote:
 
;<blockquote>
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: white;
 
background-color:#666666;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">There is an undocumented feature in F:NV that some modders may find useful. It is the ability to give perks to companions. Or, more accurately, it is the ability to add perks to a special list on the player that will have an effect on any active followers. Here's how it works:
 
<pre>player.addperk XXXXXXXXXXXXX 1</pre>
 
The "1" means "put this on the special list for companions". Companions will still not store/keep perks, but we give the player a second list of non-displayed perks that only apply to companions. If you want the effect to apply to all companions, you do not need to conditionalize the perk owner conditions for the perk's entry points. If you want the perk to be special for the companion, check the NPC's ID or ref in the perk owner conditions.
 
  
I recommend making special companion versions of perks even if you want to use existing effects. E.g. if you want to give Raul the equivalent of Shotgun Surgeon for some reason, make a special "RaulShotgunSurgeonPerk" that's filtered just to him, and add it to the player with player.addperk RaulShotgunSurgeonPerk 1 the first time Raul is hired. Even if Raul leaves the party, you shouldn't have to worry about the perk hanging out on the player as long as the perk owner conditions are filtered properly.
+
When the conditions for that interruption are correct, use the command:
 +
<div name="Simulated code box" class="boilerplate metadata" id="SimCodeBox"
 +
style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray;
 +
background-color:#424242; padding:3px;"
 +
/* Remove the next four 'white-space' lines to restore default white-space processing. */
 +
white-space: pre-wrap;      /* css-3 */
 +
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 +
white-space: -pre-wrap;      /* Opera 4-6 */
 +
white-space: -o-pre-wrap;    /* Opera 7+ */
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">PlayerRef.[http://geckwiki.com/index.php/StopCombatAlarmOnActor StopCombatAlarmOnActor]
 +
</div>
 +
This ends the fighting flag for all enemies targeting the specified actor (e.g. PlayerRef). All hostile actors that are in combat with that actor will return to their normal routines. Now they can enter into dialog (or other activities such as a "run away" travel package).
  
N.B.: The effects will ONLY work while a companion is in the party. So in the above scenario, Raul would no longer have the benefits of RaulShotgunSurgeon if he left the party.</div>
+
If you wish to only stop the fighting flag for a single actor, refer to [http://geckwiki.com/index.php/StopCombat StopCombat].
;</blockquote>
 
This tip applies to '''"companions"''' only.  Some test results of using this "feature" are found at the end of this [http://forums.bethsoft.com/topic/1142430-perks-on-companions/?p=16697594&fromsearch=1#entry16697594 Bethsoft 'Perks on Companions' thread].
 
 
</div>
 
</div>
  
<span id="Tip-FaceFeatures"></span>
+
<span id="Tip-NPCMovement"></span>
====TIP: Switching Custom Facial Features====
+
====TIP Making NPCs move aka AI Packages====
: Thanks to '''rikkurikku''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
: Thanks to '''madmongo''', '''EPDGaffney''', '''FiftyTifty''', and '''UnvalidUserName''' of the Nexus FalloutNV 'New Vegas GECK and Modders' and '''kingbeast88''' of the 'New Vegas Mod Troubleshooting' sub-forums for the following basic summary of how to get NPCs to move:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">For example: Let us say you want to switch between the normal actor's face, and one that is "bloodied". Set up your "bloody" face version texture as a different race and use the ''[http://geckwiki.com/index.php/SetRace SetRace]'' function to switch, followed by "Update3D" to refresh the display in-game.  This applies to both the Player and NPCsSee [[#TIP: Custom Race & Skin Textures|TIP: Custom Race & Skin Textures]] regarding creating a "custom race" and the appropriate folders.<br>
+
">An NPC that just stands there typically is doing so because they don't have an [http://geckwiki.com/index.php?title=AI_Packages_Tab GECK: AI package] to run.
When switching among custom facial features (such as eyes or hair), switch to a "vanilla" feature first, and then switch to a new "custom" look.  The GECK gets confused if you try to switch straight from one custom feature to another.
+
 
</div>
+
A typical companion will have a companion script which will have defined a number of [http://geckwiki.com/index.php?title=Category:Packages GECK: Packages]: a '''Follow''' default package, a '''Follow Long''' package, an '''Idle/Wait''' package, and a '''Non-hired''' package (they may use the same package for ''Wait'' and '''Non-hired''', like a ''sandbox'' type package, for example). Each of the packages must have a condition variable, which will typically be the equivalent of "'''if (''IsFollowingDefault'' == 1)'''" for the follow default package, or ''IsFollowingLong'' for the follow long package, or ''HasBeenHired'' is set to zero for the '''Not-hired''' ''sandbox'' (or whatever) package, and "'''if (''waiting'' == 1)'''" for the '''Wait''' package. If you don't have a condition, then the package will want to always run. Those variables (e.g. ''IsFollowingDefault'', ''IsFollowingLong'', etc.) all have to be defined in the NPC's script. You set the various variables to match what you want the character to do as the way you control which package is used, then do an ''[http://geck.bethsoft.com/index.php?title=EvaluatePackage EvaluatePackage] (.EVP)'' function on the NPC to get them to switch.
 +
 
 +
Function ''[http://geckwiki.com/index.php/ResetAI ResetAI]'' clears all current AI behaviors from an actor. Combat, pathing, and packages are re-evaluated.  This is a severe command that affects all AI behavior.  Usually, you just want to have an actor re-evaluate its current package. In that case, use ''EvaluatePackage'' instead(When using the number of "tokens" present in an Actor's inventory to control AI packages, one author found it necessary to use ''ResetAI'' instead of ''EVP'' in order to get their script to function correctly more often than the first time.  The cause behind this behavior is unknown.)
  
<span id="Tip-MakingNPCs"></span>
+
See also [http://geckwiki.com/index.php/How_Are_Packages_Evaluated How Are Packages Evaluated].
  
====TIP: Trick with making NPCs====
+
===== Following =====
 +
So, if you want your NPC to '''Follow''' you, it's necessary to script the following in the NPC's conversation quest (replace "MyNPCREF" with the NPC's actual Ref-ID, obviously):
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
background-color:#333333;padding:3px;
+
background-color:#424242;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">If you create the NPC in an ESP, you can run into the infamous "head/body mismatch" bug. There are some settings you can change that fix the bug on some computers, but if you want it to work on all systems, define the NPC in an ESM file.
+
">
* See also sections [[#Dialogue & Lip-synch|Dialogue & Lip-synch]] and [[#Scripting|Scripting]] for related info.</div>
+
: Set IsFollowingDefault to 1
 
+
: Set IsFollowingLong to 0
<span id="TIP-AIPackages"></span>
+
: Set waiting to 0
====TIP: Using AI Packages====
+
: MyNPCREF.evp
 +
</div>
 +
If you want the NPC to '''Follow Long''', you would do the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
background-color:#333333;padding:3px;
+
background-color:#424242;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">
 
">
* You can activate dialogue and travel packages by using the [http://geck.bethsoft.com/index.php?title=AddScriptPackage AddScriptPackage] function, usually in a "dialogue result" or "base effect" script.  This has the advantage that a package added in this fashion will take precedence over all other packages until it is done, and terminate as soon as it is able (check the ''Must Complete'' and/or ''Must Reach Location'' flags to prevent premature termination, but be sure you provide the means to determine it '''''IS''''' completed).
+
: Set IsFollowingDefault to 0
* <span style="color: red; background-color:#fff5f5;">An actor can have only one script package active at a time.</span>  When calling the function twice on the same actor, the second package replaces the first one added.  Unless the ''AddScriptPackage'' has some constraint on it (''Must Complete'' and/or ''Must Reach Location''), it will be removed the next time the actor reevaluates his package.
+
: Set IsFollowingLong to 1
* Actors evaluate their packages every 10 seconds. If no packages have true conditions then the actor will just stand there by default, unless they are in combat. So if you want a package to take effect right away, set the conditions for the package and call the [http://geck.bethsoft.com/index.php?title=EvaluatePackage EvaluatePackage] (.EVP) function on the actor: [http://geck.bethsoft.com/index.php?title=EvaluatePackage ActorREF.evp].
+
: Set waiting to 0
* Sometimes it can be difficult to get the ''AddScriptPackage'' to trigger, or you don't want it to take precedence over all other packages.  The usual method to assign AI packages is to attach the package directly to the actor and give it conditions to trigger or disable activation.  On the NPC/Creature object, the first package from the top of the list ''that has true conditions'' will be the one in effect when packages are evaluated.
+
: MyNPCREF.evp
* Check that the order of your packages and their conditions do not prevent some from ever triggering.  Treat each as if a part of a series of nested "IF ELSE" blocks. ('''IF < condition > is "true" then do "this package", ELSE do "that"''', where "that" can be another ("nested") "IF ELSE" block.)  The last "ELSE" should trigger an "idle" or similar "default" package.
+
</div>
* The [http://geck.bethsoft.com/index.php?title=RemoveScriptPackage RemoveScriptPackage] function is only used for packages added by way of the ''AddScriptPackage'' function.  Once you remove an added script, the actor will automatically re-evaluate and determine which package should take it's place.
+
: <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: green;
* AI Packages attached directly to the actor are activated or deactivated by setting the variables used in the conditional tests.  If they are only in effect in very specific circumstances (such as being in a particular cell or location), then use another variable set in a quest script to determine if the circumstances exist to avoid making the full condition checks unnecessarily.
+
background-color:#fff5f5;padding:3px;
* If an Actor won't use a particular weapon type, make sure they have a "combat style" appropriate for that weapon in the package; and that the weapon has a "health" greater than zero.  They will always use the "best" weapon in their inventory for the combat situation.
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
* If the AI Package has a "schedule" or timing (''start time'' and ''duration'') to it's events, make sure that schedule does not overlap or conflict with any other package assigned to the NPC.  A scheduling conflict will prevent either package from running.
+
">(Also, on the NPC object: uncheck the ''no low-level processing'' box if they need to follow you through portals consistently.)</span>
  
See also [[#Tip-NPCMovement|TIP: Making NPCs move (aka "AI Packages").]]
+
And if you want the NPC to '''Wait''', you would do the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#424242;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">
 +
: Set IsFollowingDefault to 0
 +
: Set IsFollowingLong to 0
 +
: Set waiting to 1
 +
: MyNPCREF.evp
 
</div>
 
</div>
 +
: <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: green;
 +
background-color:#fff5f5;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">(Don't forget to set the ''Guard Location'' on the '''Wait''' package to "Near Current Location" instead of the default "Near Editor Location", or the companion will run off to wait at their spawn site.)</span>
  
=== Dialogue & Lip-synch ===
+
Note that you want to set variables to enable your packages, and also clear variables to stop the other packages from trying to run. You want to set it up so that the only condition that evaluates to '''true''' is the one that's for the package you want the NPC to run. For example: if you want the NPC to follow the "default" package, you need to enable the '''IsFollowingDefault''' variable while disabling both the '''IsFollowingLong''' and the '''Wait''' package variables.
Other sections have relevant information to this subject. The following "Tips" in particular are applicable.
+
 
 +
===== Conversations =====
 +
The ''HasBeenHired'' variable would be used to enable or disable various conversation options, and would also be set when the NPC is hired and cleared when the NPC is fired (and again, an ''.EVP'' would be done to get the character to ''sandbox'' when not hired so they don't just stand there like an idiot).
  
* See the [[#Custom NPCs|Custom NPCs]] section regarding scripting "AI Packages".
+
If you want a fully functional command wheel, you '''''have to use the conversation topics''''' that the command wheel expects.
:* [[#TIP-CompanionWheel|TIP: Companion Wheel.]]
 
:* [[#Tip-Hostility|TIP: Hostility between NPCs.]]
 
:* [[#Tip-NPCMovement|TIP: Making NPCs move (aka "AI Packages").]]
 
:* [[#Tip-CompanionPerks|TIP: Perks for Companions.]]
 
:* [[#TIP-AIPackages|TIP: Using AI Packages.]]
 
  
* See the [[#Scripting|Scripting]] section regarding:
+
The first tutorial listed ('Advanced Companion creation guide with Companion Wheel') is recommended for learning to use the "companion command wheel".
:* types of scripts: Objects, Quests, and "Base Effects".
+
 
:* [[#TIP-EditorIDNames|'''TIP: Do not begin Editor-IDs with numbers.''']]
+
[[File:EPDGaffney_AIPackage-GoingHome.png|thumbnail|100px|AIPackage-GoingHome_Fig-01]]
:* [[#Tip-CompoundConditionals|TIP: Debugging Compound Conditionals.]]
+
Some people prefer to follow the simpler instructions and example in the [http://forums.nexusmods.com/index.php?/topic/900821-fnv-companion-tutorial/ FNV Companion Tutorial] Thread by '''trilioth''' (even though it does not include how to use the "companion wheel"), but get confused at "Step 3: Create AI Packages".
:* [[#Tip-Debugging|TIP: Debugging data to file.]]
+
 
:* [[#Tip-EventHandler|TIP: Don't overlook EventHandlers.]]
+
The way this was done in the vanilla game (and the [[:File:EPDGaffney_AIPackage-GoingHome.png|AIPackage-GoingHome_Fig-01]] image here) was using quest variables, whereas '''trilioth''''s tutorial uses script variables.  Follow the tutorial, as based on the preceding steps you should have these variables in your object script, not your quest script.  The way you create the package is the same otherwise. (See [[:File:EPDGaffney_AIPackage-GoingHome.png|AIPackage-GoingHome_Fig-01]].  {{Thumbnail_enlargement_message}})
:* [[#Tip-Encapsulation|TIP: Encapsulation - Parens, Brackets, and Braces.]]
 
:* [[#Tip-FunctionParameters|TIP: Function parameter separation with commas.]]
 
:* [[#Tip-ParsingLines|TIP: GECK parses the entire line before evaluating.]]
 
:* [[#Tip-NPCWpnChoice|TIP: NPC Weapon Choice.]]
 
:* [[#TIP-MsgVariable|TIP: Pass a variable number into a script message.]]
 
:* [[#Tip-Notes|TIP: Passing a 'Note' to the player.]]
 
:* [[#Tip-Recipes|TIP: Passing a 'Recipe' to the player.]]
 
  
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
<span style="text-align: left; color: red; background-color:#fff5f5;">(WARNING: There is a bug in '''GECK''' on versions of '''Windows''' after Win7 that causes the columns under the "Conditions" tab to be collapsed to the left and appear to not be presentAccessing this field in the "AI Package" form consistently causes this bug to trigger, and it then affects other "list box" type fields in other formsPlease see the [[#Issue:_GECK_is_missing_text_in_fields|Issue: GECK is missing text in fields]] entry for suggestions on dealing with this.)</span>
* [http://forums.nexusmods.com/index.php?/topic/449620-a-very-basic-dialogue-tutorial/ A very basic dialogue tutorial] Thread.
 
* [http://www.youtube.com/watch?v=NWtIRBPVedw GECK: Tutorial - Dialog and Lip Synch] Video by Seddon4494.
 
* [http://www.youtube.com/watch?v=zK09aDY8FHY GECK: Advanced Dialogue: Topic with multiple sub-topics] Video by Seddon4494.
 
* [http://www.youtube.com/watch?v=haHdenMkeOw GECK: Companion Idle Chatter] video.
 
* [http://www.moddb.com/mods/explorer/tutorials/geck-custom-holotape-voice GECK: Custom Holotape + Voice] Wiki.
 
* [http://geck.bethsoft.com/index.php?title=Quest_and_Dialogue_Tutorial GECK: Dialogue Tutorial] Wiki.
 
* [http://youtu.be/NWtIRBPVedw GECK: Dialogue and Lip Synch] Video.
 
* [http://www.youtube.com/watch?v=NvQCChzifyQ GECK: Dialogue with Lip Files] Video.
 
* [http://www.youtube.com/watch?v=BQdUQmIdvUc GECK: How to make an NPC with Basic Dialogue] Video.
 
* [http://forums.nexusmods.com/index.php?/topic/826465-idle-animation-list/ GECK: Idle Animation List] Forum Thread.
 
* [http://www.youtube.com/watch?v=rcqbF0zpxtQ GECK: NPCs talk to each other] Video.
 
* [http://www.nexusmods.com/newvegas/mods/61248/? FonixData.cdf ( Easier .Lip Files ) by DingraThePishvaz] Mod. Alternative to either Skyrim or Oblivion Lip-sun generator for FNVNOTE: This must be installed under the "Data\Sound\voice\processing" folder.
 
* [http://www.nexusmods.com/newvegas/mods/48239/? Guide to fix the lip sync function in the GECK by Capt Mitch] Text file, using Skyrim Lip-sync toolOblivion Lip-sync tool will work as well, but is not as good as Skyrim's.
 
* [http://www.nexusmods.com/newvegas/mods/63317/? Lazy Voice Finder - FInd voice assets just you want] Mod.
 
* [http://www.oddcast.com/home/demos/tts/tts_example.php?sitepal Online Text to Speech Demo] Web site.
 
* [http://addons.mozilla.org/en-US/firefox/addon/text-to-voice/ FireFox Text-to-Speech Addon] Firefox plugin w/downloadable audio.
 
* [http://www.nexusmods.com/newvegas/mods/63034/? FEEL - Facial Expression Editor (Limited - pfft...) by Fallout 2AM] in-game facial expression editor.
 
  
<span id="Tip-GenericDialog"></span>
+
===== Package Types =====
====TIP: Adding Generic Dialog====
+
For '''Patrol''' packages your "Patrol Leader" NPC needs to be linked to your first "X marker" in the navmeshed patrol path.  (See the [[#Tip-NavMeshExteriors|TIP: Navmeshing Exterior cells.]])  All "X markers" in the patrol path need a ''unique ID'', need to be ''persistent'', and linked to each other in the succession you wish it traversed. "Idle markers" can be used but need ''duration'' times set and need to be made ''persistent''.  Patrol packages might be buggy with idle markers: they worked in Fallout 3, but in the experience of mod creators have issues in '''New Vegas'''.  For parties of more than one Actor, the remainder should "Guard" the "Patrol Leader" in order to react to threats to that Leader.
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">So, you want your NPC/Vendor to have some ''generic dialog'' (meaning: re-use existing dialog already in the game that is not situation specific; like "Hello").
 
  
There are two ways you can do this.
+
To make a new '''Patrol''' package with a unique ID: Just edit a base package to your liking; then change the Editor-ID name.  '''GECK''' will create a new form.  Make sure the package type is '''Patrol''', the ''starting location'' is a linked reference (e.g. "X marker"), and flagged ''repeatable''. Then give the NPC the new package and link your NPC to the first marker in the patrol path.
  
* One is to extract all of the voice sounds and corresponding LIP files from the game "Fallout - Sound.BSA file" to some other folder (NOT to "Data"); then go through and pick and choose which lines you want; and just create new dialog topics and responses for your NPCs that use those lines verbatim. Then just copy/paste and rename your voice files for the new dialog. For some things, this will be the faster way of doing it.
+
An NPC not waking up from sleep is an indication the time schedule conflicts with another package.  All it should need is a package type of '''Sleep''', a ''schedule time'' and ''duration'' (do not allow the times to overlap with other packages), flag enable ''fallout behavior'' & for ''location'': the ''name of a cell'' or a linked reference (which needs to be selected) or a ''near reference'' (if you have multiple beds for instance and don't care which they use).
  
* For ''Vendors'' though, it's probably faster to integrate them into the existing vendor system. This will probably require a bit more digging through the '''GECK''' to make sure you get your NPC correctly configured. You'll probably need the voice type to be set to the proper type of the existing vendor you are modeling yours after, the NPC's class to be set to what the vendor dialog expects, and you'll probably need to add the appropriate factions for vendors to your NPC. Just go through the configuration of an existing similar vendor NPC and you should be able to figure it all out.
+
''Sandboxing'' chooses things completely at random, including just standing where they are and picking idles from the idle manager. '''Exterior sandbox''' type packages need a package type of ''sandbox'', and a ''wander location'' set with a ''radius'', rather than just in a particular cell.  Set whatever flags you want in: ''allowed behavior'', enabled ''fallout behavior'' in flags, and a non overlapping time scheduled.
  
See also [[#Tip-DialogTabs | TIP: Standard Dialog.]]
+
You'll also want to avoid locking/unlocking doors in ''packages'', as this is completely broken and unreliable in '''New Vegas'''.
</div>
 
  
<span id="Tip-Translators"></span>
+
When you send someone away (i.e. "no longer hired" or "go home"), set the "GoHome" package to be a "sandbox" type instead of "travel", and they will automatically run off to the "home" location to sandbox there.  The game scripts often teleport actors to that location first when they want to avoid encountering "hostiles" enroute.  Be sure you first set the conditions you are using as appropriate (i.e. "not hired", "available for hire", etc.) before an ".EVP" command to take immediate effect.
====TIP: Conversation/Quest system====
+
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the following:
+
Be very careful using "[http://geckwiki.com/index.php?title=AddScriptPackage AddScriptPackage] <packagename>". In practice, whenever an NPC teleports (fast travel, goes through a door, etc) they tend to stop running whatever AI package was added through '''AddScriptPackage''', and then use a suitable sandbox package. It's a useful function for some things, but it won't work in cases like this (traversing cells).
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">The conversation/quest system for Fallout New Vegas seems like nonsense until you realize it evolved out of the conversation/quest system for Morrowind. In Morrowind, different people could say the same topics, and most of it wasn't voiced; so it made a lot of sense to group things by '''quests''' and '''topics''' instead of by '''speaker'''.
 
  
What this means for FNV is that some dialog is spread out through a lot of different quests. If you want to edit '''Doc Mitchell''''s dialog during your initial character creation, for example, that's in the various ''VCGxx'' quests (''VCG01'', ''VCG02'', etc). His healing options are in ''VDoctors'', the same quest as for all of the other wasteland doctors. If you right click on '''Doc Mitchell''''s ID in the GECK and select "Use Info", you'll get a list of topics where his ID is used.
+
If your NPCs take off for parts unknown when following a package, make sure you have a "North Marker" placed in the cell.
</div>
 
  
<span id="TIP-CuttingLipFiles"></span>
+
To make the NPC go back to Goodsprings (for example), you need a package that sends him there. The condition for the package will be similar to "<CompanionREF>.HasBeenHired == 0". You don't necessarily need to make an Xmarker the destination. You can have the package be a sandbox inside the "Goodsprings Saloon" cell if you want. Then he'll just ''sandbox'' around inside the Saloon whenever he isn't hired and he'll go back there if you fire him.
====Tip: Cutting Lip files to match dialog====
+
See also [[#TIP-AIPackages|TIP: Using AI Packages.]]
:  Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">Assuming you are cutting up existing voice files to make new dialog. What I typically do is import the existing voice clip into '''Audacity''' (see [[#Programs and Tools | Programs and Tools]]) and chop it down to the part I want, then export that as a '''WAV''' file and rename it to match the file name that the GECK expects in the dialog quest. Make sure you export it as a WAV and not an OGG. The Lip generator wants a WAV file.
 
  
Instead of trying to cut down the lip file to match, just regenerate the lip file from scratch. Click on the voice file in the box at the bottom of the dialog editing box to highlight it, then click on "From WAV" and click on "Generate Lip File", which should now no longer be grayed out. If you don't seem to be able to actually generate a LIP file, double-check that your voice file is in MONO (and not Stereo) mode.
+
===== Teleporting and Following Navmeshes =====
 +
In order  for a companion to ''teleport'' to you when you go through a door (or otherwise ''teleport'' elsewhere, as when using '''Fast Travel'''), all the companion needs is to be set as ''your companion'', i.e. you executed the script command '''SetPlayerTeammate 1'''.
  
This of course requires that you have copied the lip generator from Oblivion or Skyrim, or the alternative [http://www.nexusmods.com/newvegas/mods/61248/? FonixData.cdf]. In Oblivion the lip generator's in '''\Sound\Processing''', which is where it belongs in FNV as well. (See the links above for options.)  <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: green;
+
Additionally, for a companion to follow you, the companion needs to have a ''follow package'' and that package needs a conditional variable on it which is "true", and all other packages that the companion has need conditions that are "false" at the same time so that they will not run instead of the ''follow package''.
background-color:#fff5f5;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">NOTE: The '''FonixData.cdf''' tool must be installed under the '''sound\voice\processing''' folder.</span>
 
  
Helpful tip - I will often record a very short bit of blank audio in the dialog editing box just so it puts a blank WAV and LIP file in the right directory where it's expecting it. Then I just go to that folder and delete those "dummy files", which seems kinda stupid, but it gets the folders all created properly and named properly and stops me from doing stupid things like typing one of the folder names wrong. Then I copy and paste the file name from the GECK onto my newly edited WAV so that I can't make a stupid typo there as well.
+
For example. let's say your NPC has a ''follow package'' and a ''wait package'', and a variable '''npc_following''' and a variable '''npc_waiting'''. The ''follow package'' has the condition '''"if npc_following = 1"''' and the ''wait package'' has the condition '''"if npc_waiting = 1"'''. If you '''"set npc_following to 1"''' and '''"set npc_waiting to 0"''', and then execute an '''EVP''' command on the NPC, then they should follow you. If you want them to ''wait'', '''"set npc_following to 0"''' and '''"set npc_waiting to 1"'''. If you accidentally set both variables to 1 then either package could execute (depending upon their sequence in the packages list), so the NPC might follow you or they might not. If you accidentally set both variables to 0 then the companion will not do anything.
</div>
 
  
<span id="Tip-GetSpeaker"></span>
+
The other thing that might stop a companion from moving is if they aren't on a valid '''Navmesh'''. If the area that they are in isn't '''Navmeshed''', then they will just stand there.
==== TIP: Get the current speaker reference ====
 
: Thanks to '''FiftyTifty''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">Suppose you want to identify the current speaker of a line of dialog for use as a later reference.  Dialog "inherits" it's implied speaker from it's topic, so you need to use the "[http://geckwiki.com/index.php/GetActionRef GetActionRef]" function, placed inside the dialog "Result Script (End)" block.
 
  
See also the GECKWiki "[http://geckwiki.com/index.php/Calling_reference Calling reference]" page.  
+
===== Waves of Actors =====
 +
To get "waves" of Actors to move according to a given package, first place the Actors of each wave where you want them to spawn, keeping them initially disabled.  However, instead of disabling the Actors all individually, have an ''xMarker'' for each "wave"; and for all of the Actors in that wave, set their "enable ref" to be the ''xMarker'' for that "wave". Have all of the waves' ''xMarkers'' initially set to disabled and then enable each wave ''xMarker'' ref with a quest script at intervals as desired each time if the player is in the correct Cell. The advantage of this method is that your script has one line for each wave and you don't need to keep track of all of the Actor ref-IDs; only your wave ''xMarker'' ref-IDs and you only have as many of them as you have waves.
 
</div>
 
</div>
  
<span id="Tip-TopicVoices"></span>
+
<span id="Tip-MerchantInventory"></span>
====TIP: How to generate '''.lip''' files====
+
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
==== TIP Merchant Inventory ====
 +
: Thanks to '''EPDGaffney''' and '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">There are two parts to '''''Voices''''' in topics: the sound file, which is usually a '''.WAV''' or an '''.OGG''' format file, and the lip file ('''.LIP'''). The sound file has (obviously) the spoken sound, and the lip file has the synchronized lip movements. Without the lip file, the NPC's lips won't move as they speak, which is very weird.
+
">The '''GECK''' tutorial [http://geckwiki.com/index.php/Adding_items_to_vendors Adding items to vendors] fails to point out that you can only have one merchant/vendor container in a different cell (such as "VendorChestsCell"). For example, if you open up the '''GECK''' and go to the '''NovacGiftShop''' cell and double click on '''Cliff Briscoe''' (which brings up his "reference editor"), and then click on the "Merchant" tab, you will see where his merchant chest gets linked in even though it's in a different cell. You can change that link to a different container, but you can't add a second container there.
 +
 
 +
If you want to add a second container, you can't place it in a different cell. It has to be in the cell where the merchant is located and the cell has to have its ownership set to the merchant. And of course the container has to be persistent and its ownership has to be set to the merchant.
  
The GECK as it ships is missing its lip file generator. Bethesda has updated the GECK a couple of times since its first release and still hasn't bothered to put the lip generator in it.  (They seem to like making things difficult for us.) You can use the one provided with the Oblivion or Skyrim CK installed on your computer: the same lip generator is in the '''\sound\processing''' folder. Just copy that folder to your FNV directory and you're good to go.  Or there is a "third-party" lip generator: [http://www.nexusmods.com/newvegas/mods/61248/? FonixData.cdf ( Easier .Lip Files )] Mod by '''DingraThePishvaz'''.  <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: green;
+
You can place the container in the shop (hidden behind a wall or underground if you'd like), or you can place the items individually in the shop.
background-color:#fff5f5;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">NOTE: The '''FonixData.cdf''' tool must be installed under the '''sound\voice\processing''' folder.</span>
 
  
Now the question is: where is your sound coming from? If you are going to be speaking into a microphone, just bring up the topic and hit "record" near the bottom of the window. Don't forget to "save" it when you are done. If you don't like what you just said or you made a mistake, flubbed the line, whatever: then don't hit "save", and instead just hit "record" and try another "take". When you click "save" it only saves your last "take". If you have the lip generator installed, the GECK will automatically create both the '''.WAV''' and '''.LIP''' files.
+
Another approach is to add the items directly to the merchant's original container. There are two ways to do this. First, you can just edit the original container. That works, but breaks compatibility with any mods that also edit that container. The second way to do it is to use a script to add the items to the container, like making a quest with a quest script that is set to run once to add the items. Since you aren't actually modifying the container permanently, this second approach won't break things if another mod also wants to modify the same container.
  
If your sound is coming from an already existing '''.WAV''' file, it needs to be in the exact location that the GECK expects it to be in and it has to have the exact name that the GECK wants it to have. If you look down near the bottom of the topic, you'll see the file name that it wants, without the '''.WAV''' extension, which will have the topic name in it and will also have what looks like a bunch of random letters and numbers in it (they aren't random; they are '''hexadecimal'''). Sometimes the easiest way to make sure your file ends up in the right place is to record a quick 2 second ''dummy'' hello or something into the microphone and save it, then go under the '''\sound''' folder and find your mod and voice type (etc.) until you land on the files you just created. If you have to create all of the folders yourself it's very easy to make a mistake. This way (i.e. by recording ''dummy'' files) you make sure that the folder names are right and everything is in the right place. Then delete the '''.WAV''' and '''.LIP''' dummy files that you just generated, and put the actual '''.WAV''' file that you want to use in its place. You can copy the file name from the topic screen and paste that into the file name of the '''.WAV''' file.  The file names are too long and contain too many letters and numbers, so changing the name manually isn't recommended; copy-and-paste is safer.
+
Let's suppose you want to have a merchant sell certain items only if you succeed in a "speech check". The solution to adding this inventory leads to some interesting bits of information pertaining to inventories in general.
  
Now you have a '''.WAV''' but no '''.LIP''' fileYou'll need to close the topic and re-open it, as the topic window doesn't refresh when you change the filesNow you should see a "Y" under your '''.WAV''' near the bottom, and you should see your '''.WAV''' file listed. Select your '''.WAV''' file, click on "from wav" and click on "generate lip file", and the GECK will create the '''.LIP''' file for you. You can also do this to create '''.LIP''' files from any dialog you may have recorded before realizing that you didn't have a working '''.LIP''' generator.
+
Merchants will sell any items that are marked as owned by them as long as their container or the item is in the same cell when the [http://geckwiki.com/index.php/ShowBarterMenu ShowBarterMenu] function is called.  This includes items lying about the shop outside an obvious container (apparently the shop itself, i.e. the "interior cell", can count as one if '''solely owned''' by the NPC; as exemplified by buying Chet's silenced pistol from him removes the one in his display case and that doesn't appear to be specifically scripted anywhere)Of course, the merchant in question must be able to sell that type of item (e.g. the merchant must have the AID service ticked in their NPC form or the wine in their owned fridge won't be available to buy in the barter menu).
 +
 
 +
The tested conditions determining what can be sold are:
 +
# Any item that is owned by the merchant, in the cell with them, enabled, and a type that they can sell will turn up in their barter menu.
 +
# These items do not need to be in containers.
 +
# Additionally, the merchant's own personal inventory is an "owned container", and anything reverse-pickpocketed onto their person (or presumably added via script, though this was not tested) becomes part of their barter menu.
 +
# Likewise, placing the player's items into the merchant's owned containers makes these items part of the barter menu as well("Ownership" automatically changes as soon as the transfer completes; i.e. item is released.)
 +
# If the cell (this usually refers to an "interior cell") is marked as owned by them, all items in that cell without explicit ownership will belong to them, as usual, and these items will be available for purchase as well.
 +
# An item that is marked as belonging to the merchant will be available for purchase even if the entire cell is not marked as owned by them.
 +
# If something is owned by the merchant and it was originally put in one cell, transferring it to their current cell makes it immediately part of their barter menu.
 +
# Disabling and enabling owned items works to control whether these owned items are eligible to be in the barter menu (provided they meet the other criteria).
 +
# Items that are owned by a faction of which the NPC is a member will NOT be available in that NPC's barter menu; ownership must be theirs alone (which is the case when the interior cell is owned only by the NPC).
 +
 
 +
Bottom line seems to be, if the merchant owns it and it's in the cell they're in when you open their barter menu, as long as they sell that form type, it should be there to buy. The editor location has no impact.
 +
 
 +
So, what you would do is set up your secret items container in advance and leave it out of reach in that cell. Then when the secret stash should become available to the player for purchase, run [http://geckwiki.com/index.php/SetOwnership SetOwnership] on the container or item (either of which needs a Reference ID and to be marked as a persistent reference).
 +
 
 +
This normally means the vendor must be in that cell, so it may be a good idea to give them dialogue about how the merchant needs to meet them at a location in that cell, should the player ever speak to them when they are in a different cell. Alternatively, you could script an owned container to be transferred to the current cell in that circumstance. You could use an invisible model for the container and place it near the merchant before opening the barter menu. It's not believed you need collision on the container but that has not been tested.  If you do need collision, the container should just be scaled down to nothing to avoid weird collision experiences.
 
</div>
 
</div>
  
<span id="Tip-NoDriver"></span>
+
<span id="TIP-CompanionXP"></span>
==== TIP: No sound driver available error message ====
+
 
 +
==== TIP Only Combat Teammates give XP to Player ====
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
Line 1,986: Line 2,153:
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">So, you keep getting an error message saying "Error: No sound driver available for use" every time you open the dialogue window.  What gives and how do you make it go away?
+
">Followers don't give their kill XP to the Player unless they have been "hired" as "companions" or otherwise had the function [http://geckwiki.com/index.php/SetPlayerTeammate SetPlayerTeammate 1] appliedThe XP sharing is apparently a built-in engine function specific to "combat teammates" and not those with simply a "follow" AI package.
 
 
It's not necessarily an audio driver problem.  It doesn't matter where your '''GECK''' is installed.
 
 
 
The form in the '''GECK''' where you edit dialog is also where you record audio for that dialog. If you do not have a microphone or some sort of ''line input'' connected to your computer, the '''GECK''' can't find anything to record audio from and gives you that error.
 
 
 
Plug in a microphone and the error will go away. Depending upon your version of '''Windows''', something other than a microphone (such as headphones) plugged into the line input will also make the error go away.
 
 
 
Some audio drivers will have a ''virtual audio source'' of some sort that will be enough for the '''GECK''' to think that it has something to record fromIf nothing else, many audio drivers used to have a loopback so that they could record whatever was going out through the speakers. (Microsoft and the audio driver manufacturers have moved away from this since some folks were using it to illegally record the audio off of '''YouTube''' videos and the like.)
 
 
 
Look under the '''Windows''' "Control Panel | System | Sound | Input | Device Properties".  There should be a drop-down box in the "Device Properties" window that lets you enable various devices (e.g. "Stereo Mix (Realtek Audio)") that (regardless of whether they actually function or not) will be sufficient to get rid of the error message in '''GECK'''.
 
 
 
If you have something configured or plugged into one of your sound card's inputs and you still have the error, then you have an audio driver problem.
 
 
</div>
 
</div>
  
<span id="Tip-OCE"></span>
+
<span id="Tip-CompanionPerks"></span>
  
====TIP: Obsidian Conversation Editor (OCE)====
+
====TIP Perks for Companions====
: Thanks to ''' EDPGaffney''' (the "I" in the following) of the Nexus "New Vegas GECK and Modders" forum for the details of this tip:
+
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for providing the following quotation:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">'''Obsidian''' wrote the '''Conversation Editor''' (OCE) to help them do dialogue in this game in a way that was workable for so many branching paths and such. It comes with the "New Vegas G.E.C.K." and can be accessed by clicking the last button on the right on the top toolbar, which looks like the symbol for a "right-justified" paragraph. Its interface looks very similar to the ''Dialogue Tree'' in the '''Quest''' window that most people seem to use even in this game. (I suspect because of all the Fallout 3 tutorials, and that OCE wasn't available in Fallout 3). Some of its advantages are:
+
">It is generally understood that you cannot add Perks to '''Companions''' in the same way as to the Player.  However, according to a [http://fallout.gamepedia.com/Blog:News/New_Vegas_dev_quote_roundup J.E. Sawyer (FNV project director) Q&A roundup]:
* loading things much faster,
+
Quote:
* never crashing (at least for me after weeks of editing hundreds of lines),
+
;<blockquote>
* not having that Windows 10 bug unless you open certain other things in the G.E.C.K.,
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
* being able to save your mod with it open,
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: white;
* inheriting the speaking NPC (and optionally other conditions if you tell it to, I think) so that you needn't enter it for every single line,
+
background-color:#666666;padding:3px;
* being able to edit conversations in a more visually comprehensible way (as a tree, with entries you can modify in the same window),
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
* making new dialogue by simply adding a child to the last thing you wrote and typing it into the same window as the rest of the conversation,
+
">There is an undocumented feature in F:NV that some modders may find useful. It is the ability to give perks to companions. Or, more accurately, it is the ability to add perks to a special list on the player that will have an effect on any active followers. Here's how it works:
* being able to copy topics and then paste them as links or simply pasting the topic as a new topic with the same text and conditions,
+
<pre>player.addperk XXXXXXXXXXXXX 1</pre>
* and having access to every feature of the Fallout 3 method (well, theoretically; I'm still not sure about recording).</div>
+
The "1" means "put this on the special list for companions". Companions will still not store/keep perks, but we give the player a second list of non-displayed perks that only apply to companions. If you want the effect to apply to all companions, you do not need to conditionalize the perk owner conditions for the perk's entry points. If you want the perk to be special for the companion, check the NPC's ID or ref in the perk owner conditions.
 +
 
 +
I recommend making special companion versions of perks even if you want to use existing effects. E.g. if you want to give Raul the equivalent of Shotgun Surgeon for some reason, make a special "RaulShotgunSurgeonPerk" that's filtered just to him, and add it to the player with player.addperk RaulShotgunSurgeonPerk 1 the first time Raul is hired. Even if Raul leaves the party, you shouldn't have to worry about the perk hanging out on the player as long as the perk owner conditions are filtered properly.
 +
 
 +
N.B.: The effects will ONLY work while a companion is in the party. So in the above scenario, Raul would no longer have the benefits of RaulShotgunSurgeon if he left the party.</div>
 +
;</blockquote>
 +
This tip applies to '''"companions"''' only.  Some test results of using this "feature" are found at the end of this [http://forums.bethsoft.com/topic/1142430-perks-on-companions/?p=16697594&fromsearch=1#entry16697594 Bethsoft 'Perks on Companions' thread].
 +
</div>
  
<span id="TIP-RandomNPCcomments"></span>
+
<span id="Tip-FaceFeatures"></span>
====Tip: Random NPC Comments====
+
====TIP Switching Custom Facial Features====
 +
: Thanks to '''rikkurikku''' and '''Budong''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Drop in Xmarkers at the locations where you want to provide specific comments, and give them a unique Ref-ID.   Then put in a condition of:
+
">For example: Let us say you want to switch between the normal actor's face, and one that is "bloodied". Set up your "bloody" face version texture as a different race and use the JIP ''[http://geckwiki.com/index.php/SetRace SetRace]'' function to switch, followed by "Update3D" to refresh the display in-game.  This applies to both the Player and NPCs.  See [[#TIP: Custom Race & Skin Textures|TIP: Custom Race & Skin Textures]] regarding creating a "custom race" and the appropriate folders.<br>
"Subject: GetDistance to that XmarkerRef < 10000" (as an abstract, pseudo example) on each of the Info/response entries, in addition to a "GetIsID" condition.
+
 
If the 150 char limit isn't enough then add another 150 char block in the Response field.
+
'''Budong''' added:<br>
On the Topic text (at the top) say something like: "Do you have any info on this place?".  Flag it as a top level dialogue; then the priority will determine where it shows in the list of options after their "Greeting".
+
If you want to ensure compatibility for everyone, you can accomplish the same thing entirely without needing the JIP NVSE Plugin.  Set up one race for your "healthy" NPC, and another race for the "injured" NPC.  Link them to one another via the ''YoungerRace'' and ''OlderRace'' options in the '''RaceEditor''', then call the ''AgeRace'' function to visually clobber/heal them. Entirely vanilla and will work for everyone.
If you're not within the maximum distance to any marker then that option shouldn't show up as a dialogue option for the player. - Source: Mktavish, Nexus forums
+
 
 +
When switching among custom facial features (such as eyes or hair), switch to a "vanilla" feature first, and then switch to a new "custom" look. The '''GECK''' gets confused if you try to switch straight from one custom feature to another.<br>
 
</div>
 
</div>
  
<span id="Tip-DialogTabs"></span>
+
<span id="Tip-MakingNPCs"></span>
====TIP: Standard Dialog====
+
 
 +
====TIP Trick with making NPCs====
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Certain bits of dialog are standard, but have to be added from the correct tab in the '''Quest Stages'''.
+
">If you create the NPC in an ESP, you can run into the infamous "head/body mismatch" bug. There are some settings you can change that fix the bug on some computers, but if you want it to work on all systems, define the NPC in an ESM file.
* ''GREETING'' only shows up as an option in the ''topics tab'' of your Quest when you < right-click > on the '''Topics''' tab in the left-hand pane of the GECK "Object Window" under the "Actor Data/Quest" section; and then also select/highlight the ''info response'' field in the top right-hand pane: where it shows a piece of the text and conditions. Then you go to that small "list box" on the right side labeled "Add Topic"  and < right-click > in there to select from the list of existing ''topics'', or select '''New''' to add a completely new one.  In case it isn't clear: this ''GREETING'' is the NPC's first response when the Player first initiates dialog. It does not appear again.  Do not confuse it with ''Hello'' which is all actors' way to start conversations.  See the Community GECK wiki topic [http://geck.technodeep.net/index.php/Quest_and_Dialogue_Tutorial Quest and Dialogue Tutorial].
+
* See also sections [[#Dialogue & Lip-synch|Dialogue & Lip-synch]] and [[#Scripting|Scripting]] for related info.</div>
* Once created, ''Hello'' and ''GOODBYE'' only show up as dialog options upon < right-click > on the '''Conversation''' tab and select ''Add Topic''.  They should be "top level", with a priority of 5.  ''Hello'' is generally used for conversations between two or more NPCs, without the Player.  ''GOODBYE'' is essential to be able to terminate a conversation.  If in the '''Topics''' tab you do not set up any topic flagged as ''GOODBYE'', the dialog will end with one of those ''GOODBYE''s from the '''Conversation''' tab.  See the Community GECK wiki topic [http://geck.technodeep.net/index.php/How_to_script_conversation_between_two_or_more_NPCs How to script conversation between two or more NPCs].
 
* You will need "sound" (and corresponding ".lip") files for your dialog lines so they take the appropriate amount of time before proceeding to the next line.  Otherwise they may appear to "skip" over some lines or cut each other off.  "Silent" sound files are common for this purpose when the actor is not voiced, but still needed to establish the timing.
 
* Sort your list of dialog '''Topics''' by ''Priority''.  ("1" is highest, "100" is lowest.)  Place the ''GREETING''  and ''GOODBYE'' Topics at the top of the list.  '''Topics''' are processed from the top down until it finds the first one with all conditions "true".
 
* Order your list of "conditional" ''responses'' in each '''Topic''' by priority as well.  Consider all the conditional responses as an "IF ... ELSEIF ... ELSE ... ENDIF" block.  The first ''response'' which tests as "all true" will be "the winner" and processing will skip to it's "Result Script".
 
* "Conditional tests" override ''Priority'' values.  Think of "Priority" as a way to group ''Topic'' statements; but NOT as a "tie breaker" ... especially in the case of those ''responses'' which otherwise have the same conditions.  The order of the placement of the response lines within a ''Topic'' determines the order they are tested.  Only the first which succeeds is processed.  Later responses with the same conditions will never get processed.  Use conditional tests to ensure only one response is appropriate at a time.
 
* Any dialog that does not have a "conditional test" should be considered as if in the "ELSE" portion of the hypothetical "IF ... ELSEIF ... ELSE ... ENDIF" block.  Again, if more than one response falls into this "condition", only the first will ever get processed.
 
</div>
 
  
=== FaceGen: Heads, Faces, Hairs, and Helmets ===
+
<span id="Tip-TempCompanion"></span>
: This information is compiled from a number of threads, guides, and articles by authors such as '''DrakeTheDragon''', '''throttlekitty''', '''Ghogiel''', '''scanti''', and '''Skree000'''.  It is an overview at best.
+
==== TIP Turn a Temporary Companion into a Permanent one ====
 +
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Supposing you want to turn a "temporary" quest companion into a permanent one (for example '''Corporal Halford''')How would you go about it?
  
* [http://www.nexusmods.com/oblivion/mods/9360 The Conformulator] Mod Tool.
+
The recommended tutorial, which includes using a companion wheel, is: [http://www.nexusmods.com/newvegas/mods/45278 Advanced Companion creation guide with Companion Wheel]. Since the NPC already exists and has a quest for hiring, you don't need to make the hiring quest part of the tutorial.  Make sure you use the existing functions as shown in the tutorial instead of creating your own. Those functions are what makes the companion wheel work.  See also [[#TIP_Companion_Wheel|TIP Companion Wheel]].
* [[Working with Skyrim head TRIs|Working with Skyrim head TRIs]] (Wiki) for additional tutorials and resources.
 
* [http://oblivion.nexusmods.com/mods/20166 Head06 Resource] Oblivion Mod by '''Throttlekitty''' as a reference example.
 
  
The heads of characters and NPCs in Bethesda games are created using the builtin [http://facegen.com/index.htm FaceGen] tool, which is a licensed '''Singular Immersion ''FaceGen Modeler'''''.  According to the FaceGen site "Customizer" tool [http://facegen.com/customizer_help.htm user manual] the resulting information is stored in the following files.
+
When I made a companion out of '''Corporal Betsy''' I found it easiest to make a duplicate and then swap out the duplicate <span style="color: red; background-color:#fff5f5;">once the vanilla quests were done</span>. The advantage of this is that you don't have to hack into the existing quests and dialog, other than to add the hiring option (which triggers the swap) at the appropriate conversation stage.
 
+
</div>
Each model part consists of one or more of the following file types, with the same root name:
 
# TRI. This is the base mesh, which includes UVs and information about morph targets but not the FaceGen shape changes.
 
# BMP. This is the base texture.
 
# EGM. This is the statistical shape information, which is used to modify the base face shape. Without this file, the mesh will never change shape.
 
# EGT. This is the statistical texture information, which is used to modify the base texture image. Without this file, the texture image is fixed.
 
# FIM. This is the UV remapping transform, which is used to transform the detail texture in the FG file (taken from a photograph) into the UV layout of this mesh. Without this file, a mesh cannot have a detail texture applied.
 
 
 
EGM, EGT, and TRI extension files are in turn are used to construct "OBJ" (whole head mesh) files.  This is because "faces", "hair", and "helmets" have to be able to "morph" or "conform" to the underlying "head" mesh.  Different heads can be used with the same body to provide the customized faces of PlayerCharacters.
 
 
 
Note that everything related to the head must be placed in a BSA for it to be processed properly by the game engine.  Otherwise the "loose files" do not get "conformed" to the head mesh properly.  (Use the "BSArch" tool linked in the [[#Packaging_Tools|Packaging Tools]] section to '''''create/update''''' your BSA file.)
 
  
 +
<span id="TIP-AIPackages"></span>
 +
====TIP Using AI Packages====
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">From '''DrakeTheDragon''':<br>
+
">
Be aware that for EGM and TRI files it is one whole head mesh (OBJ) per morph, the base mesh with the morph applied to its fullest, and when you import them into modeling apps it is paramount the vertex count and order isn't even remotely touched, or they'll be useless to you as they won't fit into the EGM/TRI file afterwards anymore later. Morph offsets are calculated from the difference between the neutral base mesh's vertices and the morphed mesh's vertices, and this can't work when one or more sets of them don't have identical vertex indices anymore. Don't use any fancy scripted modification tools from your modeling app or anything else complex which could likely alter the vertex order either. If I remember right, even alterations to the UV map can change the vertex order and render the OBJ useless beyond repair already.
+
* You can activate dialogue and travel packages by using the [http://geck.bethsoft.com/index.php?title=AddScriptPackage AddScriptPackage] function, usually in a "dialogue result" or "base effect" script.  This has the advantage that a package added in this fashion will take precedence over all other packages until it is done, and terminate as soon as it is able (check the ''Must Complete'' and/or ''Must Reach Location'' flags to prevent premature termination, but be sure you provide the means to determine it '''''IS''''' completed).
 
+
* <span style="color: red; background-color:#fff5f5;">An actor can have only one script package active at a time.</span> When calling the function twice on the same actor, the second package replaces the first one addedUnless the ''AddScriptPackage'' has some constraint on it (''Must Complete'' and/or ''Must Reach Location''), it will be removed the next time the actor reevaluates his package.
[The '''Oblivion''' mod [http://www.nexusmods.com/oblivion/mods/18566 Adding Eye Morphs to FaceGen Files]] is a guide for much more than just adding "eye morphs".  It's an invaluable resource and a profound guide how to do all of it at the same time. It covers the basics and all possible tasks likewise and, again, it goes far beyond just eye morphs in all departments[Curator: As '''Oblivion''' utilizes the same underlying '''Gamebryo''' game engine as FO3 and FNV, it is still applicable in general. It includes the necessary tools by '''Scanti'''. There is a later version of [http://www.nexusmods.com/oblivion/mods/9360 The Conformulator] than the one in that package.]
+
* Actors evaluate their packages every 10 seconds. If no packages have true conditions then the actor will just stand there by default, unless they are in combat. So if you want a package to take effect right away, set the conditions for the package and call the [http://geck.bethsoft.com/index.php?title=EvaluatePackage EvaluatePackage] (.EVP) function on the actor: [http://geck.bethsoft.com/index.php?title=EvaluatePackage ActorREF.evp].
 
+
* Sometimes it can be difficult to get the ''AddScriptPackage'' to trigger, or you don't want it to take precedence over all other packages.  The usual method to assign AI packages is to attach the package directly to the actor and give it conditions to trigger or disable activation.  On the NPC/Creature object, the first package from the top of the list ''that has true conditions'' will be the one in effect when packages are evaluated.
Last I heard the latest [http://www.niftools.org/ NIF Tools] im-/export scripts for '''Blender''' could also be used to create EGM files, but '''Scanti's Conformulator''' is still the better solution and can be used for far more than just that.
+
* Check that the order of your packages and their conditions do not prevent some from ever triggering.  Treat each as if a part of a series of nested "IF ELSE" blocks. ('''IF < condition > is "true" then do "this package", ELSE do "that"''', where "that" can be another ("nested") "IF ELSE" block.)  The last "ELSE" should trigger an "idle" or similar "default" package.
 
+
* The [http://geck.bethsoft.com/index.php?title=RemoveScriptPackage RemoveScriptPackage] function is only used for packages added by way of the ''AddScriptPackage'' function.  Once you remove an added script, the actor will automatically re-evaluate and determine which package should take it's place.
I'm 3 years behind though [in Oct 2013] and not 'up to date' with the most recent developments anymore.
+
* AI Packages attached directly to the actor are activated or deactivated by setting the variables used in the conditional tests.  If they are only in effect in very specific circumstances (such as being in a particular cell or location), then use another variable set in a quest script to determine if the circumstances exist to avoid making the full condition checks unnecessarily.
</div>
+
* If an Actor won't use a particular weapon type, make sure they have a "combat style" appropriate for that weapon in the package; and that the weapon has a "health" greater than zero.  They will always use the "best" weapon in their inventory for the combat situation.
 +
* If the AI Package has a "schedule" or timing (''start time'' and ''duration'') to it's events, make sure that schedule does not overlap or conflict with any other package assigned to the NPC.  A scheduling conflict will prevent either package from running.
  
 +
* Be aware that for Actors with the "No Low Level Processing (LLP)" flag set: The Actor does not update its AI unless the player is in the same cell as it.
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
+
style="margin:0px 10px 10px 30px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">From '''Ghogiel''':<br>
+
">LLP behaves differently, depending on whether the object is persistent or not, and on whether the object is in an interior or an exterior cell:
It's rather easy to use '''The Conformulator'''. I've used it for years since it was very first released.
+
 +
* Persistent in an interior: All functions should always work reliably.
 +
* Persistent in an exterior: If the Actor is in the same cell, or the cell is currently buffered (i.e. within loaded ''uGrids'') - all functions should always work reliably. Otherwise, some functions will fail (example: GetParentCell).
 +
* Non-persistent in either an interior or an exterior: If the cell is currently buffered - all functions should always work reliably. Otherwise, all functions will always fail.
  
Once you have your Fallout NIF, just export from '''Nifskope''' to OBJ, and use that in the '''Conformulator''' instead of trying to use a NIF as input.
+
Keep in mind an Actor may not be unloaded immediately when changing cells, while persistent ones and quest NPCs marked in their base form will process more frequently.
  
So you have your final F3 NIF. (Try not to do anything else to this NIF: nothing that will reorder the vertex numbering index!)
+
If you place an actor in the world with the '''GECK''' and mark that REF as persistent - then they are persistent regardless of the LLP setting. They can always be referenced by a script.
  
* Open it in '''Nifskope'''.
+
You can use the '''JIP LN NVSE''' function [http://geckwiki.com/index.php/SetPersistent SetPersistent] to set a non-persistent (dynamic, aka "spawned") reference to persistent at runtime.
* Export as OBJ file type.
 
* Open '''Conformulator'''.
 
* Input that OBJ file.
 
* In the TRI file input field, select the "humanhead.tri" file.
 
* Hit <conformulate>.
 
  
I've experimented with using stuff like, a simple primitive box, make a TRI from the head onto that, then use that TRI to bake the EGMs onto final helmets (the theory is, the helmet mesh(or whatever) will deform much more uniformly in all directions) as an attempt to try to get around odd deformations on some headwear.
+
You might want to also be aware of and test for an Actor's "processing level" with the [http://geckwiki.com/index.php/GetActorProcessingLevel GetActorProcessingLevel] function.
 
 
Most of the time the quality is set to "vertice". You only need to get more fiddly if your headware deforms oddly (e.g. the brim of a hat bending a bit).  Which is where using the box method I mentioned above was developed for. Or trying to copy the face morphs from one TRI to a new one. And hair morphs. Otherwise I can't see how you can mess up.
 
 
</div>
 
</div>
 +
See also [[#Tip-NPCMovement|TIP: Making NPCs move (aka "AI Packages").]]
 +
</div>
 +
 +
=== Dialogue and Lipsynch ===
 +
Other sections have relevant information to this subject.  The following "Tips" in particular are applicable.
 +
 +
* See the [[#Custom NPCs|Custom NPCs]] section regarding scripting "AI Packages".
 +
:* [[#TIP-CompanionWheel|TIP: Companion Wheel.]]
 +
:* [[#Tip-Hostility|TIP: Hostility between NPCs.]]
 +
:* [[#Tip-NPCMovement|TIP: Making NPCs move (aka "AI Packages").]]
 +
:* [[#Tip-CompanionPerks|TIP: Perks for Companions.]]
 +
:* [[#TIP-AIPackages|TIP: Using AI Packages.]]
  
 +
* See the [[#Scripting|Scripting]] section regarding:
 +
:* types of scripts: Objects, Quests, and "Base Effects".
 +
:* [[#TIP-EditorIDNames|'''TIP: Do not begin Editor-IDs with numbers.''']]
 +
:* [[#Tip-CompoundConditionals|TIP: Debugging Compound Conditionals.]]
 +
:* [[#Tip-Debugging|TIP: Debugging data to file.]]
 +
:* [[#Tip-EventHandler|TIP: Don't overlook EventHandlers.]]
 +
:* [[#Tip-Encapsulation|TIP: Encapsulation - Parens, Brackets, and Braces.]]
 +
:* [[#Tip-FunctionParameters|TIP: Function parameter separation with commas.]]
 +
:* [[#Tip-ParsingLines|TIP: GECK parses the entire line before evaluating.]]
 +
:* [[#Tip-NPCWpnChoice|TIP: NPC Weapon Choice.]]
 +
:* [[#TIP-MsgVariable|TIP: Pass a variable number into a script message.]]
 +
:* [[#Tip-Notes|TIP: Passing a 'Note' to the player.]]
 +
:* [[#Tip-Recipes|TIP: Passing a 'Recipe' to the player.]]
 +
 +
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 +
* [http://forums.nexusmods.com/index.php?/topic/449620-a-very-basic-dialogue-tutorial/ A very basic dialogue tutorial] Thread.
 +
* [http://www.youtube.com/watch?v=mm_fF4VHhw4&feature=related Crow`s Tutorial on Dialogue] Video.
 +
* [http://www.nexusmods.com/newvegas/mods/63034/? FEEL - Facial Expression Editor (Limited - pfft...) by Fallout 2AM] in-game facial expression editor.
 +
* [http://addons.mozilla.org/en-US/firefox/addon/text-to-voice/ FireFox Text-to-Speech Addon] Firefox plugin w/downloadable audio.
 +
* [http://www.nexusmods.com/newvegas/mods/61248/? FonixData.cdf ( Easier .Lip Files ) by DingraThePishvaz] Mod. Alternative to either Skyrim or Oblivion Lip-sun generator for FNV.  NOTE: This must be installed under the "Data\Sound\voice\processing" folder.
 +
* [http://www.youtube.com/watch?v=zK09aDY8FHY GECK: Advanced Dialogue: Topic with multiple sub-topics] Video by Seddon4494.
 +
* [http://www.youtube.com/watch?v=haHdenMkeOw GECK: Companion Idle Chatter] Video.
 +
* [http://www.moddb.com/mods/explorer/tutorials/geck-custom-holotape-voice GECK: Custom Holotape + Voice] Wiki.
 +
* [http://youtu.be/NWtIRBPVedw GECK: Dialog and Lip Synch] Video.
 +
* [http://www.youtube.com/watch?v=NWtIRBPVedw GECK: Dialog and Lip Synch Tutorial] Video by Seddon4494.
 +
* [http://www.youtube.com/watch?v=NvQCChzifyQ GECK: Dialogue with Lip Files] Video.
 +
* [http://geck.bethsoft.com/index.php?title=Quest_and_Dialogue_Tutorial GECK: Dialogue Tutorial] Wiki.
 +
* [http://www.youtube.com/watch?v=BQdUQmIdvUc GECK: How to make an NPC with Basic Dialogue] Video.
 +
* [http://forums.nexusmods.com/index.php?/topic/826465-idle-animation-list/ GECK: Idle Animation List] Forum Thread.
 +
* [http://www.youtube.com/watch?v=rcqbF0zpxtQ GECK: NPCs talk to each other] Video.
 +
* [http://www.nexusmods.com/newvegas/mods/48239/? Guide to fix the lip sync function in the GECK by Capt Mitch] Text file, using Skyrim Lip-sync tool.  Oblivion Lip-sync tool will work as well, but is not as good as Skyrim's.
 +
* [http://www.nexusmods.com/newvegas/mods/63317/? Lazy Voice Finder - FInd voice assets just you want] Mod.
 +
* [http://www.oddcast.com/home/demos/tts/tts_example.php?sitepal Online Text to Speech Demo] Web site.
 +
* [http://www.youtube.com/watch?v=NvQCChzifyQ Qenosa's Tutorial on Dialogue and NPC creation] Video.
 +
 +
<span id="Tip-AnimationDialog"></span>
 +
==== TIP Adding Animation/Video to Dialog ====
 +
: Thanks to '''Radioactivelad''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">From '''ThrottleKitty''':<br>
+
">[https://geckwiki.com/index.php?title=Animation_Tab Animations] in [https://geckwiki.com/index.php?title=Dialogue Dialogue] are simply assigned in the "Response Dialog" box where you entered the dialogue. You can also have the NPC just play a selection of animations based on the emotion assigned to that dialogue.
[http://www.nexusmods.com/oblivion/mods/18566/? Adding Eye Morphs to FaceGen Files] is just about all I know about EGM/TRI/EGT files, and some tools to work with them aside from '''The Conformulator'''.
 
  
For the problem with the mouth not moving, there's a couple of solutions; first the problem! '''The Conformulator''' compares your mesh to the original NIF/TRI/EGM files and creates morphs based on those offsets. So if the mouth isn't 100% perfect, you'll get a 'bad' morph. With my [http://oblivion.nexusmods.com/mods/20166 Head06] mod, the goal was to create a high-res version of the original, and stay true to the form. Even with small differences between the mouths, I ended up with a 'sticky mouth' look when talking. (So maybe the first solution isn't much of one).
+
Unfortunately there is no interface to actually tell what the animations are, but you can "preview"  them in the "idle animations" section of AI packages.
  
I got around this by slightly opening the mouth a very little bit, a tip I got from '''Scanti'''. The vertices are too close together and the tolerance of '''The Conformulator''' was as such that it didn't know which way to move those areas. Took a couple tries, but I successfully managed to copy the morphs from the stock head to my custom one.
+
Also it can be somewhat unpredictable whether the animations will play. Some will play consistently, others sporadically, and some not at all. Not sure if the "Use Emotion Animation" has any impact on this. It's probably broken.
 
 
You'll need to use one of the other tools (I used the [hex editor] '''010''' scripts) to take the offending morphs in and out of the TRI file for fixing. You get an OBJ [file] as an output, which can be mangled about, then injected back in.
 
  
The EGT file is a package of 50 textures. The only way you'll be able to reuse the existing ones is if your model has an '''''identical''''' UV layout- or close at least. If not, a bit of [fiddling] of models and UVs should yield a good result for baking the textures from one UV set to another. (short of buying the '''Facegen''' software to do it the right way).
+
A "cut scene" is a "Bink (BIK)" video file and can similarly be triggered by [https://geckwiki.com/index.php?title=PlayBink PlayBink] in a "Result Script".  Please see the "[[#Import_Custom_Videos|Import Custom Videos]]" entry. If you have problems with other sounds while playing the video, see the [https://geckwiki.com/index.php?title=FadeSFX FadeSFX] function.
 
</div>
 
</div>
  
==== Fallout 3 EGM manipulation ====
+
<span id="Tip-GenericDialog"></span>
: The following is based upon a FO3 [http://forums.nexusmods.com/index.php?/topic/92378-what-is-egm-file/ thread entry] by '''Skree000'''.
+
====TIP Adding Generic Dialog====
 +
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">So, you want your NPC/Vendor to have some ''generic dialog'' (meaning: re-use existing dialog already in the game that is not situation specific; like "Hello").
EGMs are data files associated with head "accessories" that help deform them to accommodate the Head-Deformation associated with the Character Creation menu.
 
  
Without an EGM file, your character skull would stick through the hat, hair or helmet model if you made the skull really wide, tall or deep.
+
There are two ways you can do this.
  
EGMs, without requiring a licensed commercial product, are created through a mod tool called '''The Conformulator'''.
+
* One is to extract all of the voice sounds and corresponding LIP files from the game "Fallout - Sound.BSA file" to some other folder (NOT to "Data"); then go through and pick and choose which lines you want; and just create new dialog topics and responses for your NPCs that use those lines verbatim. Then just copy/paste and rename your voice files for the new dialog. For some things, this will be the faster way of doing it.
  
'''The Conformulator''' takes TRI files; which are basically models that have ''Morph Targets''. ''Morph Targets'' are what you manipulate when you change sliders in your character creation screen. These are basically just moveable bones that are skinned to parts of the face. A TRI file is an archive of one model and its morph targets.
+
* For ''Vendors'' though, it's probably faster to integrate them into the existing vendor system. This will probably require a bit more digging through the '''GECK''' to make sure you get your NPC correctly configured. You'll probably need the voice type to be set to the proper type of the existing vendor you are modeling yours after, the NPC's class to be set to what the vendor dialog expects, and you'll probably need to add the appropriate factions for vendors to your NPC. Just go through the configuration of an existing similar vendor NPC and you should be able to figure it all out.
  
'''The Conformulator''' also requires an OBJ or NIF format mesh to 'conform' to the TRI file. Basically it skins the mesh to the TRI file's ''Morph Target'' parameters, so that whenever you 'squash the forehead', the 'forehead region' of the headgear also gets squashed.
+
See also [[#Tip-DialogTabs | TIP: Standard Dialog.]]
 +
</div>
  
'''The Conformulator''' doesn't always do a perfect job, so it has a few options allowing modders to control how sensitive or accurate the conformulation is to the TRI file.
+
<span id="Tip-BatchLips"></span>
 +
==== TIP Batch Lip file generation ====
 +
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">So, the lads at the "New California" mod team happened upon an incredibly useful bit of information regarding a hidden functionality for batch generation of LIP files. The way it works is:
  
EGM's are REQUIRED for any headgear/hair. Without them, it will look awful; as if you have extremely deformed/altered character faces/heads.
+
[[File:GECKFacialAnimation menu.PNG|thumbnail|100px|GECK Facial Animation menu image]]
 +
# Set up all your WAV files in advance, with the correct names and formatting so that they would be "previewable" in the '''GECK''' for the relevant lines of dialogue.
 +
#: Then, once they're all done, you can do the batch process.
 +
# This step is required for '''MO/MO2''' users.  <span style="color:green;background-color:#FFFFFF;">If not using '''MO/MO2''' or a similar "empty Data folder" mod manager, you probably don't need to worry about this step as the folders should already be there under "Data\Sound\Voice".</span>
 +
#: If you are using '''MO/MO2''', go into your vanilla '''Fallout New Vegas Data''' folder and then make all the hierarchies (e.g. "Fallout New Vegas\Data\Sound\Voice\NewCalifornia.esm\PBODocIsaakVoiceType"), but the audio files don't need to be moved from your '''MO/MO2''' folder.
 +
#:[[File:GECKFacialRecreate prompt.PNG|thumbnail|100px|GECK Recreate Facials prompt image]]
 +
#: <span style="color:red;background-color:#FFFFFF;">This was only tested for '''MO2''', but it probably works for other "empty Datafolder" managers such as '''MO'''.  Because '''MO''' and '''MO2''' load everything virtually, it makes sense that the '''GECK''' doesn't know where to put the LIP files unless you make the hierarchy in the vanilla folder.  Users should be able to make LIP files the normal way (individually) as long as the folder structure is there in the vanilla Data folder.</span>
 +
# Whether you skip '''Step 2''' or not, now click on the '''GECK''' menu bar ''Gameplay | Facial Animation... '' option. (See [[:File:GECKFacialAnimation menu.PNG|GECK Facial Animation menu image]].  {{Thumbnail_enlargement_message}})
 +
# You'll be asked: "Do you want to forcibly recreate all facial animation files", and you'll want to choose the "Yes" button.  (See [[:File:GECKFacialRecreate prompt.PNG|GECK Recreate Facials prompt image]].  {{Thumbnail_enlargement_message}})
 +
# The GECK will put up a progress bar and then appear to freeze as it processes in the background.  After the better part of an hour, it should be finished.  However, in practice, it does the last Form-IDs first, meaning after the first couple of minutes it has probably finished with what was needed, and could be force-quit if desired.  They didn't actually try that; but it crashed on its own once and everything seemed fine.
  
To make your own EGM, export an OBJ of your headgear/hair from your modelling program, [Curator: the mesh ''transforms'' are exported when it's output as file type "OBJ" but not in a NIF], and then open '''The Conformulator'''.
+
:: <span style="color:red;background-color:#FFFFFF;">Dialogue topics that are technically vanilla but are modified to add new dialogue, even for characters that are added by a new ESM/ESP; most notably '''GREETING''' but also any of the combat lines or the iron sights one(s), unfortunately have very low Form-IDs, and as such will be among the last to be generated by this batch process.</span>  Probably easier to do those manually unless you plan to set '''GECK''' to do its work and then leave your PC alone for a bit.
 +
</div>
  
* Input the vanilla head TRI file, which is located in the Fallout3.BSA. (Unpack that with one of the BSA extraction tools listed in the [[#Packaging_Tools|Packaging Tools]] section.  Note the warning!)
+
<span id="Tip-Translators"></span>
  
: The TRI files you need are in "\meshes\character\_male\" and the one you want should be called "Humanhead.tri" or something like that. There are also "femalehead.tri" for female versions, if your mesh has problems with one gender over the other.
+
====TIP Conversation or Quest system====
 +
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">The conversation/quest system for Fallout New Vegas seems like nonsense until you realize it evolved out of the conversation/quest system for Morrowind. In Morrowind, different people could say the same topics, and most of it wasn't voiced; so it made a lot of sense to group things by '''quests''' and '''topics''' instead of by '''speaker'''.
  
: For the most part "Humanhead.tri" works just fine, since the only real major differences between male and female heads are slightly different facial ''morph targets'', which aren't really that important for hairdos or hats to fit on the skull. (Skull deforms are all basically akin to each other.)
+
What this means for FNV is that some dialog is spread out through a lot of different quests. If you want to edit '''Doc Mitchell''''s dialog during your initial character creation, for example, that's in the various ''VCGxx'' quests (''VCG01'', ''VCG02'', etc). His healing options are in ''VDoctors'', the same quest as for all of the other wasteland doctors. If you right click on '''Doc Mitchell''''s ID in the GECK and select "Use Info", you'll get a list of topics where his ID is used.
  
* Once your TRI file is plugged in, plug in the OBJ of your headgear/hair mesh.
+
Being part of a ''faction'' and using an existing ''voice type'' is enough to trigger a lot of the dialog in-game. If you only want your Actor to say what you have scripted them to say, and only that, then give them a unique ''voice type''.  Otherwise, generic dialog may get triggered unexpectedly
 +
</div>
  
* Hit "Conformulate".
+
<span id="TIP-CuttingLipFiles"></span>
  
* Done. Your EGM is ready!
+
====Tip Cutting Lip files to match dialog====
 +
:  Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Assuming you are cutting up existing voice files to make new dialog.  What I typically do is import the existing voice clip into '''Audacity''' (see [[#Programs and Tools | Programs and Tools]]) and chop it down to the part I want, then export that as a '''WAV''' file and rename it to match the file name that the GECK expects in the dialog quest. Make sure you export it as a WAV and not an OGG. The Lip generator wants a WAV file.
  
'''GECK''' will auto-detect any EGMs that are present in the folder where the headgear is located. HOWEVER!!! The EGM name must MATCH the .nif file name of the headgear.
+
Instead of trying to cut down the lip file to match, just regenerate the lip file from scratch. Click on the voice file in the box at the bottom of the dialog editing box to highlight it, then click on "From WAV" and click on "Generate Lip File", which should now no longer be grayed out.  If you don't seem to be able to actually generate a LIP file, double-check that your voice file is in MONO (and not Stereo) mode.
</div>
 
  
: Note that if your head "accessory" (hat, helmet, piercings, etc.) is not conforming to the head, you may need to "unequip" and "re-equip" the accessory whenever you edit your face so it will reconform.
+
This of course requires that you have copied the lip generator from Oblivion or Skyrim, or the alternative [http://www.nexusmods.com/newvegas/mods/61248/? FonixData.cdf]. In Oblivion the lip generator's in '''\Sound\Processing''', which is where it belongs in FNV as well. (See the links above for options.) <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: green;
 +
background-color:#fff5f5;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">NOTE: The '''FonixData.cdf''' tool must be installed under the '''sound\voice\processing''' folder.</span>
  
=== Havok Physics ===
+
Helpful tip - I will often record a very short bit of blank audio in the dialog editing box just so it puts a blank WAV and LIP file in the right directory where it's expecting it. Then I just go to that folder and delete those "dummy files", which seems kinda stupid, but it gets the folders all created properly and named properly and stops me from doing stupid things like typing one of the folder names wrong. Then I copy and paste the file name from the GECK onto my newly edited WAV so that I can't make a stupid typo there as well.
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
</div>
* [http://www.nexusmods.com/newvegas/mods/56009/? Jokerine's Misc Resources Tutorials and Novac Bungalow: Havok Removal] PDF.
 
* [[Making_Havok_ragdolls_in_Blender|Making Havok ragdolls in Blender]] Wiki.
 
  
<span id="Tip-HavokDeadNPC"></span>
+
<span id="Tip-GetSpeaker"></span>
====TIP: Havok a dead NPC====
+
==== TIP Get the current speaker reference ====
: Thanks to '''madmongo''' and '''jokerine''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
: Thanks to '''FiftyTifty''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Positioning a "dead" NPC can be frustratingSpawning a dead NPC will have them appear as you left them (usually standing in the "T-crucifix" pose).  Instead have the NPC alive in a temp holding cell, then move them to where you want them to end up and kill them.  If the "dead" NPC just stands there you can have havok kick in if you place a small dummy explosion by the freshly enabled NPC. '''Jokerine''' wrote about that [http://forums.nexusmods.com/index.php?/topic/5831532-egg-planting-script-placeatme-problems/?p=52011812 here]. You could probably copy the same script she wrote there and give it to your NPC.  If you do it that way, they'll havok (have game physics applied) and drop in some random-ish fashion, though not too random since they mostly ended up in the same position on the floor. If you have the NPC move to the same room when the player enters the room, the player will see the NPC appear and then fall to the ground; so best to do this out of sight of the player if possible.
+
">Suppose you want to identify the current speaker of a line of dialog for use as a later referenceDialog "inherits" it's implied speaker from it's topic, so you need to use the "[http://geckwiki.com/index.php/GetActionRef GetActionRef]" function, placed inside the dialog "Result Script (End)" block.
  
Dead NPCs can be havoked in the GECK, though like much in the GECK that seems to be a bit buggy at times. Dead NPCs will spawn as you leave them though, so if you leave them just standing there in the GECK, then they'll just be standing there when the player finds them.
+
See also the GECKWiki "[http://geckwiki.com/index.php/Calling_reference Calling reference]" page.  
 
 
Live NPCs won't havok ''in the GECK'', but if you kill them when they spawn or when a player approaches, they'll havok and fall and will end up in some random-ish position when the player finds them.
 
 
</div>
 
</div>
  
=== Heightmaps ===
+
<span id="Tip-TopicVoices"></span>
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
====TIP How to generate '''lip''' files====
* [http://forums.nexusmods.com/index.php?/topic/517230-tutorial-converting-a-dem-to-a-heightmap/ Converting a "Digital Elevation Map" (DEM) file to a Heightmap] Thread.
+
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
* [http://www.truancyfactory.com/tutorials/fallout3/fallout_worldspace2.html Fallout3 Creating a Heightmap] HTML with images.
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
* [http://forums.nexusmods.com/index.php?/topic/224954-height-map-creation-and-editing-tutorial/ Heightmap creation and editing from imported image/data] Thread.
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">There are two parts to '''''Voices''''' in topics: the sound file, which is usually a '''.WAV''' or an '''.OGG''' format file, and the lip file ('''.LIP'''). The sound file has (obviously) the spoken sound, and the lip file has the synchronized lip movements. Without the lip file, the NPC's lips won't move as they speak, which is very weird.
  
=== Interior Creation===
+
The GECK as it ships is missing its lip file generator. Bethesda has updated the GECK a couple of times since its first release and still hasn't bothered to put the lip generator in it(They seem to like making things difficult for us.) You can use the one provided with the Oblivion or Skyrim CK installed on your computer: the same lip generator is in the '''\sound\processing''' folder. Just copy that folder to your FNV directory and you're good to go.  Or there is a "third-party" lip generator: [http://www.nexusmods.com/newvegas/mods/61248/? FonixData.cdf ( Easier .Lip Files )] Mod by '''DingraThePishvaz'''.  <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: green;
Often neglected topic because the GECK tutorials walk you through the processThanks to '''EPDGaffney''' and '''random411''' of the Nexus Fallout "New Vegas GECK and Modders" forum for pointing out the need for this section.
+
background-color:#fff5f5;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">NOTE: The '''FonixData.cdf''' tool must be installed under the '''sound\voice\processing''' folder.</span>
  
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
Now the question is: where is your sound coming from? If you are going to be speaking into a microphone, just bring up the topic and hit "record" near the bottom of the window. Don't forget to "save" it when you are done. If you don't like what you just said or you made a mistake, flubbed the line, whatever: then don't hit "save", and instead just hit "record" and try another "take". When you click "save" it only saves your last "take". If you have the lip generator installed, the GECK will automatically create both the '''.WAV''' and '''.LIP''' files.
* [http://www.youtube.com/watch?v=qThfCjgNUdE Fallout New Vegas GECK interior building] Video (9:21) by '''deacrb'''.
 
* [http://www.youtube.com/watch?v=0rK5UdhMyas GECK Tutorial - Building a House, Part 1] Video (12:16) by '''Seddon4494'''.
 
* [http://geckwiki.com/index.php/Creating_a_New_Empty_Cell Creating a New Empty Cell] GECK Wiki.  (Note: FNV has fewer pre-made empty buildings than FO3.  "TestQuest01" seems to be all.)
 
  
====Angle & Grid Snapping====
+
If your sound is coming from an already existing '''.WAV''' file, it needs to be in the exact location that the GECK expects it to be in and it has to have the exact name that the GECK wants it to have. If you look down near the bottom of the topic, you'll see the file name that it wants, without the '''.WAV''' extension, which will have the topic name in it and will also have what looks like a bunch of random letters and numbers in it (they aren't random; they are '''hexadecimal'''). Sometimes the easiest way to make sure your file ends up in the right place is to record a quick 2 second ''dummy'' hello or something into the microphone and save it, then go under the '''\sound''' folder and find your mod and voice type (etc.) until you land on the files you just created. If you have to create all of the folders yourself it's very easy to make a mistake. This way (i.e. by recording ''dummy'' files) you make sure that the folder names are right and everything is in the right place. Then delete the '''.WAV''' and '''.LIP''' dummy files that you just generated, and put the actual '''.WAV''' file that you want to use in its place. You can copy the file name from the topic screen and paste that into the file name of the '''.WAV''' file.  The file names are too long and contain too many letters and numbers, so changing the name manually isn't recommended; copy-and-paste is safer.
"Angle snapping" & "grid snapping" buttons are covered under "[http://geckwiki.com/index.php/Categories:Preferences Categories: Preferences]" and in the "[http://geckwiki.com/index.php/Bethsoft_Tutorial_Layout#Grid_and_Angle_Snapping Bethsoft Tutorial Layout] on the GECK Wiki site. You want to enable this and configure the spacing before you start doing anything else.
 
  
====Basic Interior location design guide:====
+
Now you have a '''.WAV''' but no '''.LIP''' file.  You'll need to close the topic and re-open it, as the topic window doesn't refresh when you change the files.  Now you should see a "Y" under your '''.WAV''' near the bottom, and you should see your '''.WAV''' file listed. Select your '''.WAV''' file, click on "from wav" and click on "generate lip file", and the GECK will create the '''.LIP''' file for you. You can also do this to create '''.LIP''' files from any dialog you may have recorded before realizing that you didn't have a working '''.LIP''' generator.
: Thanks to '''djmystro''' of the "Fallout New Vegas" Mod Talk" forum for the basis of this section. He is the "I" reference in the following.  The original source is the thread "[http://forums.nexusmods.com/index.php?/topic/581268-interior-location-creation-tutorial/ Interior Location Creation Tutorial]" in that forum.
+
</div>
  
 +
<span id="Tip-LocatingVoices"></span>
 +
==== TIP Locating voiced dialog ====
 +
: Thanks to '''clanky4''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">I learned a lot of things creating AWOP that seriously sped up my production time creating huge interior locations so I thought I would bundle a load of tips together in a guide to help others getting started with some simple handy facts that will save you a lot of time if you wanna go creating dungeons.
+
">When you want to edit or replace an existing Actor's voice file, how do you go about locating them?
 +
 
 +
You could try using the [https://www.nexusmod...egas/mods/63317 Lazy Voice Finder].  Its a bit similar to the GECK in that you can load up ESM/ESP files to use dialogue data from.
  
Contents:
+
For example, looking for Boone referring to his "beret":
* Position 0
+
* Select "File | Open | '''FalloutNV.esm'''", and select the "OK" button.
* Block Size
+
* Once it is done loading, type "beret" in the search bar and it'll show every dialogue line where an NPC says "beret".
* Handy Keys
+
*: One of those is Boone, or more specifically "'''maleuniquecraigboone'''" saying "I'd really like my beret back, please."
* Havoc Engine
+
* <Right-click> on that selection and then select "Copy asset path" to get the proper location for the dialogue file. In this case:
* Walkthrough
+
*: <code>sound\voice\falloutnv.esm\maleuniquecraigboone\vdialoguec_vdialoguecraigb_0015f1dd_1.ogg</code>
* How I Started
+
*: You can also copy the '''dialogue file''' itself, as well as the '''lip file''', if you wanted those for anything.
* Copied vs New
+
* Now from here all you'd need to do is place a '''.wav''' or '''.ogg''' file with the name you just located (e.g. "vdialoguec_vdialoguecraigb_0015f1dd_1") at the same location:
* Bodging Gaps
+
*: <code>sound\voice\falloutnv.esm\maleuniquecraigboone</code>
* Cave Gaps
+
: to replace that bit of audio.
* Cave Navmesh
 
* Interior Size/Object Count
 
* Adding NPCs
 
* Object Spacing
 
* Fast Navmesh
 
* Fast travel to Object/NPC in Render Windiw
 
* Interior Light and Fog settings.
 
* Locating Objects
 
  
=====Position 0:=====
+
To replace the written dialogue bit you'd need to do some work in the GECK as outlined elsewhere in this section.
On creating a new interior make sure the first block is placed at 0 on all axis. This will make the auto-move functions much simpler and easy to understand (as well as mathematically predictable).
+
</div>
  
=====Block size:=====
+
<span id="TIP-MultipleGreetings"></span>
Each block is by default 256x256 or in caves double or triple that size. There are however exceptions such as the Office and Factory building sets which have a default height of 288 which can cause blocks moved using the auto-align functions to shift out of place vertically requiring maunual reajustment later.
 
  
=====Handy keys:=====
+
====TIP Multiple Greetings====
Note: [RMB = HOLD the <Right mouse button>]
+
: Thanks to '''madmongo''' of the Nexus "Fallout New Vegas Mod Talk" forum for the basis of the following:
* <F> - Drop object onto nearest surface.
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
* <G> - Move object up by a small amount
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
* <F5> - Refreshes the scene allowing for viewing of light effects and such.
+
background-color:#333333;padding:3px;
* <Ctrl+F> - Swap currently selected object(s) [Very useful for taking a clean Vault and making it dirty by just swapping out all references to one type of object such as a Vault wall in a scene to another similar replacement].
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
* <Ctrl-F> (with Navmesh Active) - Checks local Nevmesh for errors and allows for deletion or move to warning triangle.
+
">When deciding what to say, your NPC will go down the list of greetings until it finds the first greeting for which all of the greeting's conditions are true. If your only condition is that the character ID matches your NPC, then as soon as it hits the ''first'' greeting with that condition on the list, your NPC will always say that line and not any others.
* <Ctrl-D> - Duplicates object(s)
 
* <Z+RMB> and move- Rotates selecteds object on it's Z Axis.
 
* <X+RMB> and move - Rotates selected object on it's X Axis
 
* <RMB> & move - Rotates selected object on Y Axis
 
* <A> - Turn full lighting on and off.
 
* <Right-Click> (Navmesh on) - Drop Vertice
 
* A (Navmesh on and exactly *3* vertices selected) - Fill in a Navmesh triangle.
 
  
=====Havoc Engine:=====
+
There are different ways to make an NPC say different things. Many of the vanilla NPCs have the "say once" flag checked. They'll have a bunch of greetings, each with the say once flag, so the first time they'll say the first greeting, the second time they'll say the second, etc. Eventually they run out of greetings and they will then default to a greeting that doesn't have the say once flag set.
To use the Havoc engine (on by defualt in the FO3 GECK) to realistically drop items and reveal the contents of certain vanilla interors you need to do the following:
 
* Open the 'GECKCustom' ini file (usually in My Documents/My Games/Fallout NV)
 
* Find:
 
:* bUseMultibounds=1 and change the 1 to 0.
 
  
[Note that havoc dropped items will hover slightly above the surface they are intended to drop on. For detail objects I recommend using the F-key drop function. However certain objects such as skeletons can only be dropped properly using havoc.]
+
There is also a flag for them to say a particular line once per day.
  
=====Walkthrough:=====
+
If you want them to keep saying a line and not just say it once, another option is to have the line be checked as random. Then they'll pick a random greeting.
Using this info it is relatively quick and painless to create vast rooms.
 
Heres an example of an office block:
 
* Choose entrance location, manually place block at 0 on all axis.
 
* Decide on approximate size of location and how you intend for it to play out.
 
* Find a wall and corner object (or anything else 'room' based that will be used at least once).
 
* Drop them into appropriate positions (place at 0 height manually and use the auto-align features to rotate and slot them into place.
 
* Use Ctrl-D to duplicate any objects needed more than once such as standard room walls and drag them into place.
 
* Use Ctrl-F to select specific wall clusters and replace them with similar objects (e.g OffRmWall01 to OffRmWall02/03) which will vary up the apparance.
 
* Drop in essential clutter objects such as desks, terminals etc... and use the previous functions to duplicate and replace with similar objects. Use G and F to reposition vertically. [Duplicating clusters of stuff can vastly speed up creation.]
 
* Add detail clutter and loot then enemies.
 
* Leave FX untill navmesh is complete.
 
* Clutter from the bottom upwards. Navmesh from the top down.
 
: Clutter from the lowest floor (including basements) and then add later floors so you can see into the room effectively from all angles whilst adding clutter. Resist the urge to navmesh at this stage until the building is complete. This is because dropping a vertice (or green square used to link navmesh trangles) on top of existing navmesh on a lower level is tricky. It requires you to drop it on the floor from an angle where lower levels of navmesh are not in the way/directly underneath.
 
  
* Add FX after navmeshing. Navmesh Vertices get stuck on FX and even spamming the F key repeatedly will not get them to the floor sometimes.
+
What is also done for more control in cases of multiple greetings like this is use a variable in the NPC's script. Then every time they say a given line, increment the variable so that they'll say the next line. When they reach the last line, reset the variable to zero (or whatever number starts your list). This guarantees that they'll say every line, but if you don't have many greetings and you speak to the NPC often you might notice the cycle. So there are advantages and disadvantages over using this compared to using a random greeting.
  
=====How I Started:=====
+
Of course you don't have to "walk the list".  The variable value is just another condition check that can be set by other scripts under desired circumstances; for example, after combat ends.
I did not read any tutorials to get started modding (though once I got to dialogue and quest creation aspects those became very necessary).
 
  
For level design I began by duplicating rarely visited areas from the vanilla game (back then FO3). I them recluttered them myself. I pretty much learned the hard way though. Had I known of the existence of many of the above tips/keys/info I would have got a lot more done a lot faster but thats another story.
+
You can also add conditions to make them say different things. For example, you can check the time of day and have them say good morning, good afternoon, or good evening, or if your NPC is less pleasant you can make them say that they hate mornings if the hour is earlier than 10 am. If you are in a particular location, you can have the NPC check what cell they are in or you can check their distance to a particular marker. That way you can make them say "I love the smell of jet fuel in the morning!" every time they are in Nellis, for example.
  
Basically I took what was there already, searched for the object in the GECK and just looked at all the similar objects. Sometimes just trying stuff out but mostly going in knowing what I wanted and if need be finding the blocks I needed to 'bodge' it together.
+
Be creative and have fun.
  
If I wanted a certain object I thought where I had seen it before and sought it out in it's vanilla location, checked out the name, found it in the list then dropped one into my location (though standard keyboard copy/paste commands work fine, just make sure you have the render window selected before attempting to copy).
+
See also TIPs [[#TIP_Random_NPC_Comments|Random NPC Comments]], [[#TIP_Say_Once_use|Say Once use]], and [[#TIP_Standard_Dialog|Standard Dialog]].
 +
</div>
  
=====Copied vs New=====
+
<span id="Tip-NoDriver"></span>
Eventually I found that copying vanilla areas was more trouble than it was worth. Most are at unpredicatable heights and horizonal positions and a few are even at random angles which makes adding new room blocks onto them very difficult without creating gaps.
 
  
Eventually it becomes easier to create a new room and just copy a load of clutter from a few vanilla areas in bulk and redistribute them rather than the other way around.
+
==== TIP No sound driver available error message ====
 +
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">So, you keep getting an error message saying "Error: No sound driver available for use" every time you open the dialogue window. What gives and how do you make it go away?
  
=====Bodging gaps:=====
+
It's not necessarily an audio driver problem. It doesn't matter where your '''GECK''' is installed.
I like to use certain kits together such as Hotel, Office, Utility, Cave and Vault, sometimes just in one interior (the Dead Money AWOP has lots of these locations). However they are not always designed to fit together leaving gaps often along ceiling joins. Look out for simple blocky objects which can be used to fill gaps such as:
 
* Free Columns (e.g NVGSRmFreCol) [Eseentaly wall-join features]
 
* Wood blocks (e.g CampLog01-04)
 
* Concrete (e.g PowerStationBlock01)
 
* Rubble (e.g OffRubblePile01/IndRubblePileSmall)
 
* Door Frames (e.g OffDoorFrameSmOnly)
 
  
=====Cave Gaps:=====
+
The form in the '''GECK''' where you edit dialog is also where you record audio for that dialog. If you do not have a microphone or some sort of ''line input'' connected to your computer, the '''GECK''' can't find anything to record audio from and gives you that error.
Cave sets are not like other square room sets. They require much more attention as to which block can go where. They are not symettrical and floor and ceiling joins in particualy will be off unless you put the right blocks next to each other at the correct angle.
 
Here's how I do it:
 
* Place intial block at 0 and make sure it is also not at an angle.
 
* Do NOT rotate any blocks (apart from Hallway pieces and corner blocks which are more flexible).
 
* Each cave piece is numbered 1-4. These represent North, South East and West and are consistent throughout.
 
* Drop one in. If you drop a number 2 wall in and need it facing the other way swap it out for a number 4 rather than rotating it 180 degrees. Should be simple from there on out. This way you avoid the gaps.
 
  
=====Cave Navmesh:=====
+
Plug in a microphone and the error will go away. Depending upon your version of '''Windows''', something other than a microphone (such as headphones) plugged into the line input will also make the error go away.
Quick tip for navmeshing caves is to aim for the rocks when dropping vertices. This stops the majority of it going under ground from several vertices being dropped lower than the average ground height.
 
  
=====Interior Size/Object Count:=====
+
Some audio drivers will have a ''virtual audio source'' of some sort that will be enough for the '''GECK''' to think that it has something to record from.  If nothing else, many audio drivers used to have a loopback so that they could record whatever was going out through the speakers. (Microsoft and the audio driver manufacturers have moved away from this since some folks were using it to illegally record the audio off of '''YouTube''' videos and the like.)
Making a location too big and adding too many objects will severely impact on performance. I have found the total object count (from a cigarette to a train cart) should not exceed 1500 or thereabouts (though I have many interiors that push this limit, in some cases maybe a bit too far).
 
  
To create a very big location is still do-able. For example the main sections of the Collpased Underpass from AWOP are structually built from about 40 very large blocks doubled in size though the rooms are probably big enough to contain every Vault in the vanilla game. This cuts down on object count and performace does not take a hit.
+
Look under the '''Windows''' "Control Panel | System | Sound | Input | Device Properties".  There should be a drop-down box in the "Device Properties" window that lets you enable various devices (e.g. "Stereo Mix (Realtek Audio)") that (regardless of whether they actually function or not) will be sufficient to get rid of the error message in '''GECK'''.
  
Which objects/FX/NPCs etc are more likley to trigger a performance hit I have yet to figure out.
+
If you have something configured or plugged into one of your sound card's inputs and you still have the error, then you have an audio driver problem.
 +
</div>
  
=====Adding NPCs:=====
+
<span id="Tip-OCE"></span>
I try and limit NPCs of a certain type to about 20 in any given location with no more than 30 overall. Adding more than this caused many problems when FNV was initially released though I believe the patches have resolved most problems I experienced. Even so having too many NPCs seems to be bad for performace, especially if using vanilla spawns likely to be effected by mods such as IWS or VVV.
 
  
Also when building an interior try and think how the enemies will react to your entrance. If the enemies are spread out inside a building not far apart with someone near the entrance then they are all likely to spot the player upon entry and mob them even from the back of the building.
+
====TIP Obsidian Conversation Editor aka '''OCE'''====
 +
: Thanks to ''' EDPGaffney''' (the "I" in the following) of the Nexus "New Vegas GECK and Modders" forum for the details of this tip:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">'''Obsidian''' wrote the '''Conversation Editor''' (OCE) to help them do dialogue in this game in a way that was workable for so many branching paths and such.  It comes with the "New Vegas G.E.C.K." and can be accessed by clicking the last button on the right on the top toolbar, which looks like the symbol for a "right-justified" paragraph.  Its interface looks very similar to the ''Dialogue Tree'' in the '''Quest''' window that most people seem to use even in this game. (I suspect because of all the Fallout 3 tutorials, and that OCE wasn't available in Fallout 3).  Some of its advantages are:
 +
* loading things much faster,
 +
* never crashing (at least for me after weeks of editing hundreds of lines),
 +
* not having that Windows 10 bug unless you open certain other things in the G.E.C.K.,
 +
* being able to save your mod with it open,
 +
* inheriting the speaking NPC (and optionally other conditions if you tell it to, I think) so that you needn't enter it for every single line,
 +
* being able to edit conversations in a more visually comprehensible way (as a tree, with entries you can modify in the same window),
 +
* making new dialogue by simply adding a child to the last thing you wrote and typing it into the same window as the rest of the conversation,
 +
* being able to copy topics and then paste them as links or simply pasting the topic as a new topic with the same text and conditions,
 +
* and having access to every feature of the Fallout 3 method (well, theoretically; I'm still not sure about recording).</div>
  
There are several ways around this such as adding Guard packages to the NPCs or clustering them in certain spots.
+
<span id="TIP-RandomNPCcomments"></span>
 +
====Tip Random NPC Comments====
 +
: Thanks to '''Mktavish''' of the '''Nexus Fallout New Vegas GECK and Modders''' forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Drop in Xmarkers at the locations where you want to provide specific comments, and give them a unique Ref-ID.  Then put in a condition of:
 +
"Subject: GetDistance to that XmarkerRef < 10000" (as an abstract, pseudo example) on each of the Info/response entries, in addition to a "GetIsID" condition.
 +
If the 150 char limit isn't enough then add another 150 char block in the Response field.
 +
On the Topic text (at the top) say something like: "Do you have any info on this place?".  Flag it as a top level dialogue; then the priority will determine where it shows in the list of options after their "Greeting".
 +
If you're not within the maximum distance to any marker then that option shouldn't show up as a dialogue option for the player.
 +
</div>
  
Personally for tight environments such as hotels and offices with numerous NPCs I like to block off several pathways to slow them down. I also try and crate gaps within the ranks to allow for breathing space for stealthier players to adavance further.
+
: '''Budong''' added the following alternative method:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">NPC is running this script, which basically waits and does nothing until a random amount of time has passed and then forces the NPC to say something to the Player.
  
Think about how far in you want the NPC to get before they are attacked. I usually allow at least one empty room or corridoor on entry so the player can take stock of thier surroundings and if sneaky enough get inside undetected. Vanilla often does this too but not always.
+
<pre>
 +
float m_banterTimer
 +
float m_banterThreshold
  
[This does not matter so much with most Creatures who cannot open doors such as Geckos, Mole Rats & Manises].
+
BEGIN GameMode
 +
  if m_banterTimer < m_banterThreshold
 +
    set m_banterTimer to m_banterTimer + GetSecondsPassed
 +
  else
 +
    set m_banterTimer to 0
 +
    set m_banterThreshold to GetRandomPercent*4
 +
    SayTo player LocationBanter;
 +
  endif ; banterTimer
 +
END</pre>
  
=====Object Spacing:=====
+
Then put all the NPC's banter dialog into the topic called LocationBanter.  The '''location-specific responses''' all have a condition using the '''GetInCell''' function to tie them to specific places and are at the top of the topic's stack so they evaluate first but only trigger when the Player is at a specific location; they're also flagged with "once per day" so you don't get spammed by them. The bonus to this method is that you can have '''generic non-location-specific''' dialog at the BOTTOM of the topic's stack, so if the Player is NOT at a landmark, the NPC still makes amusing observations every now and again. (Plus you are not forced into dropping new objects in cells all over the game; it's just the script and the dialog.  Nice and tidy, easy to manage.)
Try and leave a gap the size of a small door frame (approx 4 office/factory floor tiles if I remember correct) wherever you want NPCs or creatures to walk (or wherever you intend to Navmesh). You can get away with less in some circumstances (small bridges with no wallls either side) but trying to limit that space with clutter or walls will cause problems for 'wide' creatures such as Deathclaws, Super Muntants and Mantises.
+
</div>
  
=====Fast Navmesh:=====
+
<span id="Tip-RecordVoice"></span>
Get used to holding down Ctrl and a when dropping vertices. Every third vertice dropped without releasing control will automatically create a navmesh triange. After this you can just drop a single verice and the last two highlighted vertices will automatically create a nre triange. Sounds complicated but in practice is very simple. This works better outdoors or navmeshing large areas as for cluttered rooms still require a degree of attention as to which vertice goes where which will eventually cuase problems using this approach.
+
==== TIP Record new voice files ====
 
+
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
To navmesh clustered environments such as rubble-strewn offices I used to drop a vertice at every corner and then link up all the triangles after. Now I use a combo of this and the holding Ctrl approach which tends to get the job done very fast.
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Adding original voiced dialog from within the '''GECK''' can make the process less painful. The '''GECK''' will technically record from (accept as input) any standard '''Windows''' audio '''output''' source, but you do have to also have configured '''Windows''' with an '''input''' source (microphone).  See [https://manual.audacityteam.org/man/windows_accessing_the_windows_sound_controls.html#Accessing_the_Settings_dialog Accessing the Windows Sound Controls].
 +
 
 +
What is the '''GECK''' calling your primary sound driver?  Is that your sound card's output?  What happens if you try to record from that?
 +
 
 +
The problem that you are going to run into is that most sound drivers provided by default with '''Windows''' these days don't export the main audio as a device from which the '''GECK''' can record. If your sound driver can do it, then the '''GECK''' can use it. (Check the audio vendor website for possible alternative drivers.)  It's often referred to in '''Windows''' as some sort of "loopback device" or "mixer" in the sound driver options and it is usually disabled by default.  The device name in '''Windows''' may not be obvious (such as "Stereo Mix" or "Wave Out Mix") so experimentation is usually required.
 +
 
 +
Once you have the '''GECK''' recognizing your audio input, you are ready to record.  But you will still need to create "lip files" as described in [[#TIP_Batch_Lip_file_generation|TIP Batch Lip file generation]].
 +
</div>
  
Check out some vanilla navmesh too. It's not that detailed and does not venture into every nook and cranny. Take into account that even melee opponents have a wide radius of attack so you don't need to go right up to every wall. Also if you try and navmesh too small a gap then NPCs will just ignore it as being inaccessable.
+
<span id="Tip-SayOnce"></span>
  
To copy an interior and it's Nevmesh, it is easiest just to duplicate it in the Cell Window. This will copy the navmesh and keep everything in place.
+
==== TIP '''Say Once''' use ====
 +
: Thanks to '''Mktavish''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">The "Say Once" flag is set per "response", not per "Topic".  So basically you take the Topic, and add as many responses to it as you want.  Flag them "top level", and set "priority" for what order each response will be presented in.  You can even set conditions that might change when they are used, such as (for example) a "quest stage" or "gateway variable".  Once they have been spoken, the responses you flag as "Say Once" will no longer be considered in the priority list thereafter.
  
Copying the bulk of an interior from one Cell to another I can't think of a way to take the navmesh with it. There may be one but I don't know it.
+
The dialogue tool is pretty versatile.  But it is not very intuitive either and one of the harder things to get proficient with in the '''GECK'''.  However, there is no one set way to do things. See [[#TIP_Obsidian_Conversation_Editor_aka_OCE|TIP Obsidian Conversation Editor aka OCE]].
 +
</div>
  
With a little practice Navmesh becomes a very easy mindless repetitive task (caves and very uneven landscapes being the exception). Don't be worried about starting again for the most part. Offices and similar can be done in a few minutes. A bit dull but OK if you have some music on or something.
+
<span id="Tip-DialogTabs"></span>
 +
====TIP Standard Dialog====
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">NOTE: Dialog ''quests'' must be checkboxed to "start enabled".  If the ''quest'' isn't "active" the ''topics'' will not be available.
  
=====Fast travel to specific Obecjt/NPC in Render Windiw:=====
+
Certain bits of dialog are standard, but have to be added from the correct tab in the '''Quest Stages'''.
Right click on objec t in the Object Window & select 'Use info'.
+
See the following references:
 +
* [http://geckwiki.com/index.php/Quest_and_Dialogue_Tutorial Quest and Dialogue Tutorial], in particular the "Dialogue Topics" section.
 +
* [http://www.youtube.com/watch?v=mm_fF4VHhw4&feature=related Crow`s Tutorial on Dialogue] Video.
 +
* [http://www.youtube.com/watch?v=NvQCChzifyQ Qenosa's Tutorial on Dialogue and NPC creation] Video.
 +
* [http://geckwiki.com/index.php/Creating_a_new_vendor Creating a new vendor] tutorial on creating dialog for a NPC's interaction with the player.
 +
* [http://geckwiki.com/index.php/StartConversation StartConversation] command forces a conversation between two NPCs, starting with a specified topic.
 +
* [http://geckwiki.com/index.php?title=How_to_script_conversation_between_two_or_more_NPCs How to script conversation between two or more NPCs] tutorial.
 +
* [http://geckwiki.com/index.php/Category:Dialogue GECK Category: Dialogue] This page has a number of important points to bear in mind, such as flags and:
 +
:* '''Prompt:''' This text will be displayed in place of the topic text. If left blank (as is default), the topic text will be used.
 +
:* '''Result Script (Begin):''' This script runs when the Info is played, at the moment the actor starts saying his line.
 +
:* '''Result Script (End):''' This script runs at the moment the actor finishes speaking.
  
This will list each appearance of said object. Then just double click on each in turn to be taken to it's exact location in the Render Window. This works well for books & guns (but not tin cans or anything too common).
+
The following is intended to help clarify the above GECKWiki pages:
 +
* ''GREETING'' only shows up as an option in the ''topics tab'' of your Quest when you < right-click > on the '''Topics''' tab in the left-hand pane of the GECK "Object Window" under the "Actor Data/Quest" section; and then also select/highlight the ''info response'' field in the top right-hand pane: where it shows a piece of the text and conditions.  Then you go to that small "list box" on the right side labeled "Add Topic"  and < right-click > in there to select from the list of existing ''topics'', or select '''New''' to add a completely new one. In case it isn't clear: this ''GREETING'' is the NPC's first response when the Player first initiates dialog.  If you enable (check) the "SayOnce" box, it does not appear again '''''for that Actor'''''.  It can appear for another Actor which meets any qualifying conditions.  Do not confuse it with ''Hello'' which is all actors' way to start conversations, but usually only between NPCs.
 +
* Once created, ''Hello'' and ''GOODBYE'' only show up as dialog options upon < right-click > on the '''Conversation''' tab and select ''Add Topic''.  They should be "top level", with a priority of 5.  ''Hello'' is generally used for conversations between two or more NPCs, without the Player.  ''GOODBYE'' is essential to be able to terminate a conversation.  If in the '''Topics''' tab you do not set up any topic flagged as ''GOODBYE'', the dialog will end with one of those ''GOODBYE''s from the '''Conversation''' tab.
 +
* If you want a character to say a GREETING response (the first thing any Actor will say when activating them) without activating '''Dialogue Mode''' (as in "freeze time, zoom in on their face"), check/enable the GOODBYE flag for the GREETING response.
 +
*: If you have multiple such type responses (for instance: for guards that just say "move along" or "I'm watching you") when the Player tries to talk to them and they shouldn't actually go into full dialog mode, make sure to also check the RANDOM flag.  Or you can use a script variable and a condition to check for it to cycle through a bunch of responses.  Just increment the script variable and make sure to wrap it around to the start when you reach the end of the dialog options. You can also set a variable and create an AI package using the appropriate (e.g. "eating") idle so that the Actor will only say "leave me alone, I'm eating" when they are actually eating.
 +
* For '''combat barks''', you need to use the default topics in the COMBAT tab of your quest.
 +
*: Use the vanilla companion control quest (VNPCFollowers) as a reference if you're wondering how to use each topic.
 +
* You will need Voice "sound" (and corresponding Lip-Sync ".lip") files for your dialog lines so they take the appropriate amount of time before proceeding to the next line.  Otherwise they may appear to "skip" over some lines or cut each other off.  "Silent" sound files are common for this purpose when the actor is not voiced, but still needed to establish the timing.  See the [[#Sound and Voice Tools|Sound and Voice Tools]] section entries for the necessary tools.
 +
* Sort your list of dialog '''Topics''' by ''Priority''.  ("1" is highest, "100" is lowest.)  Place the ''GREETING''  and ''GOODBYE'' Topics at the top of the list.  '''Topics''' are processed from the top down until it finds the first one with all conditions "true".
 +
* Order your list of "conditional test" ''responses'' in each '''Topic''' by priority as well.  Consider all the conditional responses as an "IF ... ELSEIF ... ELSE ... ENDIF" block.  The first ''response'' which tests as "all true" will be "the winner" and processing will skip to it's "Result Script".
 +
* "Conditional tests" override ''Priority'' values.  Think of "Priority" as a way to group ''Topic'' statements; but NOT as a "tie breaker" ... especially in the case of those ''responses'' which otherwise have the same conditions.  The order of the placement of the response lines within a ''Topic'' determines the order they are tested.  Only the first which succeeds is processed.  Later responses with the same conditions will never get processed.  Use conditional tests to ensure only one response is appropriate at a time.  See also the GECKWiki [http://geckwiki.com/index.php/Using_Complex_Conditions Using Complex Conditions] and [http://geckwiki.com/index.php/Causes_of_CTDs Causes of CTDs] pages.
 +
* Any dialog that does not have a "conditional test" should be considered as if in the "ELSE" portion of the hypothetical "IF ... ELSEIF ... ELSE ... ENDIF" block.  Again, if more than one response falls into this "condition", only the first will ever get processed.
 +
* Consider the use of a "''token''" (a piece of equipment flagged "unplayable" (and thus "invisible") placed in the Actor's inventory) along with the [http://geckwiki.com/index.php/GetIsID GetIsID] function to indicate which Actor is currently speaking.  (Otherwise, you would need to convert the "Ref-ID" of the Actor into their "Base-ID" using [http://geckwiki.com/index.php/GetBaseObject GetBaseObject] first in order for ''GetIsID'' to work correctly.  But remember: a "Base-ID" is a template for all "Ref-ID" instances of that form.  If more than one Actor in the conversation is based upon the same form, the "Base-ID" is not unique.  [http://geckwiki.com/index.php/GetIsReference GetIsReference] only works for "persistent" references such as unique Actors; not those dynamically spawned from "lists".  Which is why a "''token''"shifted between the speakers works better.)  You can use a "ResultScript (End)" block for each response to transfer the "token" to another Actor with the [http://geckwiki.com/index.php/MoveToContainer MoveToContainer] function. (An example of the use of a "token" is in the GECKWiki tutorial [http://geckwiki.com/index.php/Adding_an_Options_Menu Adding an Options Menu].  "Tokens" can also be used to store information on an Actor.  See [http://geckwiki.com/index.php/ActorValue ActorValue].)
 +
</div>
  
=====Interior Light and Fog settings:=====
+
<span id="Tip-TextDisplay"></span>
In the interior locations there is an edit window which can be accessed from the Cell View window by right clicking. Im not sure about exterior locations (never edited lighting for them) but with any luck it's similar.
 
  
There's 3 colour boxes in the lighting window. Make sure to uncheck any ticked boxes relating to pre-defdined lighting settings else changing them will not save properly. One of the two on the left is ambient lighting, I'm not sure what the other one is so I generally make them very similar. The one on the right is Fog.
+
==== TIP Text display timing ====
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Many new mod creators think of "voice" and "lip-sync" files as "optional" when they only intend to display a text message.  Then they wonder why sometimes their message only displays briefly in a flash and others wait until something is clicked upon. The latter is because a message displayed under control of a menu block is "paused" until an "input" (key entry or button click) is received.  (Sometimes this is not as obvious as a "button", such as using an elipsis ("...") instead.  Generally not having an obvious means of proceeding is considered "poor design" unless it is deliberate as a form of "visual puzzle".)  This is one way to ensure the message is seen by the Player.
  
There are 4 boxes at the end for entering numerical values for the fog (from memory).
+
If you are not getting display of the Dialog response text outside of a menu, most likely it is because the text has no "voice" audio and/or lip-sync file attached.  (Both are needed.) These files determines how long the text remains on screen before allowing the display to proceed. Even if there is no actual voice to be heard, a "silent" audio file of sufficient length is required to determine the length of the display of the text. The mod [http://www.nexusmods.com/newvegas/mods/63052 Silent Voice Generator] by '''Enter_77''' can generate both silent voice and corresponding lip-sync files of up to 30 seconds duration from exported GECK quest and dialog text documents.  (See "Voices" under the [[#Music_and_Sounds|Music and Sounds]] section. It is recommended placing your own "silent voice" files under their own sub-folder to avoid the risk of overwriting actual voices used by others.)
* For Close - the point at which the fog starts forming around the player (128 is about right for dark areas, 512 is enough for a well lit and spacious office).
+
</div>
Fog Far - The distance at which the fog theoretically becomes a solid wall (anything below 1000 is very close, 2000 is about right for a medium lit tight location but in order to see for long distances a very high value needs to be set (around 4000-6000). To compenstae for this in big dark areas it is best just to set the colours to very dark tones but keep these values high so light spots in the distance are still visible.
 
* Fog Density - Just a multiplier for the amount of fog. 1 is standard.
 
* Fog Clipping - The cut-off point beyond which nothing is visible but the color of the fog (or maybe that unknown block on the left). This should always be a higher value than the "Fog Far" setting to prevent a sudden inpenetrable wall of fog cutting through objects at a certain distance (which can look very bad through scopes and such).
 
  
For reference purposes the height of a standard Office Block unit is 288, a utility hall is 256 and an epic cave is 512.
+
=== FaceGen ''Heads Faces Hairs and Helmets'' ===
 +
: This information is compiled from a number of threads, guides, and articles by authors such as '''DrakeTheDragon''', '''throttlekitty''', '''Ghogiel''', '''scanti''', and '''Skree000'''.  It is an overview at best.
  
=====Locating Objects:=====
+
* [http://www.nexusmods.com/newvegas/mods/66932 Generating EGM files for Headwear and Hairs] PDF tutorial by '''Roy Batty'''.
Once you get used to building interiors the bulk of the time taken to build a level is spent locaing the correct objects in the object window.
+
* [http://www.nexusmods.com/oblivion/mods/9360 The Conformulator] Mod Tool.
 +
* [[Working with Skyrim head TRIs|Working with Skyrim head TRIs]] (Wiki) for additional tutorials and resources.
 +
* [http://oblivion.nexusmods.com/mods/20166 Head06 Resource] Oblivion Mod by '''Throttlekitty''' as a reference example.
  
Here's some stuff that's not so easy to spot and a few general tips:
+
Hair NIFs usually have two models inside of them, one called Hat and one called NoHat. Adjust your alternate hairstyle's Hat model so that it doesn't clip through any hat you want the Actor to wear.
* MINES:
+
 
:* Active Mines (all variants) are found in the 'Projectiles'. folder. Make them friendly to a faction by adding ownership in the edit box after dropping them into the Render Window.
+
The heads of characters and NPCs in Bethesda games are created using the builtin [http://facegen.com/index.htm FaceGen] tool, which is a licensed '''Singular Immersion ''FaceGen Modeler'''''.  According to the FaceGen site "Customizer" tool [http://facegen.com/customizer_help.htm user manual] the resulting information is stored in the following files.
:* Inactive mines are found in the 'Weapons' folder.
+
 
* TRAPS:
+
Each model part consists of one or more of the following file types, with the same root name:
:* All other traps are found in the 'Activator' folder.
+
# TRI. This is the base mesh, which includes UVs and information about morph targets but not the FaceGen shape changes.
:* In FNV GECK look out for the TestTraps cell the editors included which has most of the traps already set out for easy copy/paste.
+
# BMP. This is the base texture.
:* If you wanna swap a tripwire for a pressure pad or vice versa just use the Ctrl-F fuction to swap it out after pasting. They are all prefixed by 'traps',
+
# EGM. This is the statistical shape information, which is used to modify the base face shape. Without this file, the mesh will never change shape.
* FLOOR CLUTTER/RUBBISH:
+
# EGT. This is the statistical texture information, which is used to modify the base texture image. Without this file, the texture image is fixed.
:* [Static Folder]:
+
# FIM. This is the UV remapping transform, which is used to transform the detail texture in the FG file (taken from a photograph) into the UV layout of this mesh. Without this file, a mesh cannot have a detail texture applied.
::* AssortedPapers01-06
+
 
::* StreetLitter01-02
+
EGM, EGT, and TRI extension files are in turn are used to construct "OBJ" (whole head mesh) files.  This is because "faces", "hair", and "helmets" have to be able to "morph" or "conform" to the underlying "head" mesh. Different heads can be used with the same body to provide the customized faces of PlayerCharacters.
::* Paper01
+
 
::* OfficePaper01
+
'''Note that everything related to the head must be placed in a BSA for it to be processed properly by the game engine.'''  Otherwise the "loose files" do not get "conformed" to the head mesh properly. (Use the "BSArch" tool linked in the [[#Packaging_Tools|Packaging Tools]] section to '''''create/update''''' your BSA file.)
::* ShackPaperDebris01-05
+
 
::* Eyechart
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
::* DLC04Sodacup01-02 (FNV & Point Lookout)
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
::* DLC04PopcornBox (FNV & Point Lookout)
+
background-color:#333333;padding:3px;
::* DLC04StreetLitter01-02 (FNV & Point Lookout)
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
::* RorsaschTest01-03 [FNV Only]
+
">From '''DrakeTheDragon''':<br>
::* MS (or quest) Documents (e.g MS15ConstitutionStatic) [FO3 Only]
+
Be aware that for EGM and TRI files it is one whole head mesh (OBJ) per morph, the base mesh with the morph applied to its fullest, and when you import them into modeling apps it is paramount the vertex count and order isn't even remotely touched, or they'll be useless to you as they won't fit into the EGM/TRI file afterwards anymore later. Morph offsets are calculated from the difference between the neutral base mesh's vertices and the morphed mesh's vertices, and this can't work when one or more sets of them don't have identical vertex indices anymore. Don't use any fancy scripted modification tools from your modeling app or anything else complex which could likely alter the vertex order either. If I remember right, even alterations to the UV map can change the vertex order and render the OBJ useless beyond repair already.
:* [Movable Static]:
+
 
::* DeskPadPlanner
+
[The '''Oblivion''' mod [http://www.nexusmods.com/oblivion/mods/18566 Adding Eye Morphs to FaceGen Files]] is a guide for much more than just adding "eye morphs".  It's an invaluable resource and a profound guide how to do all of it at the same time. It covers the basics and all possible tasks likewise and, again, it goes far beyond just eye morphs in all departments.  [Curator: As '''Oblivion''' utilizes the same underlying '''Gamebryo''' game engine as FO3 and FNV, it is still applicable in general.  It includes the necessary tools by '''Scanti'''.  There is a later version of [http://www.nexusmods.com/oblivion/mods/9360 The Conformulator] than the one in that package.]
* OFFICE CLUTTER:
+
 
:* [Static Folder]:
+
Last I heard the latest [http://www.niftools.org/ NIF Tools] im-/export scripts for '''Blender''' could also be used to create EGM files, but '''Scanti's Conformulator''' is still the better solution and can be used for far more than just that.
::* Typewriter
+
 
::* TerminalDesk... (several variants)
+
I'm 3 years behind though [in Oct 2013] and not 'up to date' with the most recent developments anymore.
::* HotelLamp
 
::* LampGeneric
 
::* HamRadio01-03 (several variants) [FNV Only]
 
::* ComputerPart01-06 [FNV Only]
 
::* Clock01
 
::* SafeCracked
 
::* StarburstClock01
 
:* [Movable Static Folder]:
 
::* Telephone
 
::* OfficeFan
 
::* Globe
 
:* [Activator]:
 
::* VintageRadio (several)
 
* GORE:
 
:* [Static]:
 
::* Vault87Blood01-09
 
::* GorePile01-04
 
::* RaiderGutsDressing01-08 (FO3 Only)
 
::* RaiderCorpseDressing01-06
 
::* FXFlyswarm [FNV Only]
 
::* NVHeadPike01-06 (FNV Only)
 
:* [Movable Static]:
 
::* BrahminRibcage
 
::* BrahminSkull
 
::* GoryCorpsePartsTorsos
 
::* Skull
 
::* SkullBloody
 
::* Skeletons (Lots)
 
::* TIntestine
 
::* TGoreArmGore01
 
::* TGoreLegGore01
 
:* [Misc Items]:
 
::* BodyPart01-05
 
::* DeathclawHand
 
:* [Container]:
 
::* GoreBags
 
 
</div>
 
</div>
  
====Static Collections====
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
Others have suggested you might want to add ''static collections''. You can group entire rooms into a static collection, which you can change in game. This makes much easier if you want multiple versions of the same room.
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">From '''Ghogiel''':<br>
 +
It's rather easy to use '''The Conformulator'''. I've used it for years since it was very first released.
  
However, it is not always a good idea. Making SCOLs that are very large, composed of many different objects, is just bad practice.  SCOLs only help if you're making them out of 2-3 of the same objects, or if all the objects share the same type.
+
Once you have your Fallout NIF, just export from '''Nifskope''' to OBJ, and use that in the '''Conformulator''' instead of trying to use a NIF as input.
  
For building purposes, yes: It's convenient. But too many SCOLs, especially if they are large, can produce even worse performance than if the statics were by themselves.
+
So you have your final F3 NIF. (Try not to do anything else to this NIF: nothing that will reorder the vertex numbering index!)
  
The beauty of SCOLs is that once they are in place, you can ungroup them. It allows you to make more complicated objects and place them with the intent of splitting them later. One thing that this is useful for is if you were to make an indoor garden. You could put the planter and the plants in the same static collection and make a few template planters.
+
* Open it in '''Nifskope'''.
 +
* Export as OBJ file type.
 +
* Open '''Conformulator'''.  
 +
* Input that OBJ file.
 +
* In the TRI file input field, select the "humanhead.tri" file.
 +
* Hit <conformulate>.
  
If all the objects share the same textures, then it may be even better to keep them in a static collection (if you use the static collection more then once).
+
I've experimented with using stuff like, a simple primitive box, make a TRI from the head onto that, then use that TRI to bake the EGMs onto final helmets (the theory is, the helmet mesh(or whatever) will deform much more uniformly in all directions) as an attempt to try to get around odd deformations on some headwear.
  
=== LOD Generation ===
+
Most of the time the quality is set to "vertice". You only need to get more fiddly if your headware deforms oddly (e.g. the brim of a hat bending a bit). Which is where using the box method I mentioned above was developed for. Or trying to copy the face morphs from one TRI to a new oneAnd hair morphs. Otherwise I can't see how you can mess up.
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
</div>
* [http://www.darkcreations.org/testg/wiki/Category:VWD-OB TESTG: LOD/VWD Overview] Wiki.
 
* [http://www.nexusmods.com/newvegas/mods/58562/? FNVLODGen/xLODGen] Tool by '''zilav'''.
 
* [http://www.nexusmods.com/skyrim/mods/60733/? Tree LOD billboard creator for xLODGen] Tool by '''zilav'''.
 
* [http://wiki.step-project.com/User:EssArrBee/FalloutNewVegas#Running_FNVLODGen S.T.E.P. Fear and Loathing Guide: Running FNVLODGen] by '''EssArrBee'''.
 
* [http://forums.nexusmods.com/index.php?/topic/234818-blender-read-this-1st/ Blender: Mastering Low-Poly Design for Gaming - YouTube Parts 1-5] Video series.  Individual links follow:
 
:* [http://www.youtube.com/watch?v=EHhJwUVX7ZI Blender Gameobject Tutorial 1/5] Video.
 
:* [http://www.youtube.com/watch?v=Ywk-l6PWs_k Blender Gameobject Tutorial 2/5] Video.
 
:* [http://www.youtube.com/watch?v=Yv62ET4-Uc4 Blender Gameobject Tutorial 3/5] Video.
 
:* [http://www.youtube.com/watch?v=doMVhrP2YxY Blender Gameobject Tutorial 4/5] Video.
 
:* [http://www.youtube.com/watch?v=Vj2SU5I74VI Blender Gameobject Tutorial 5/5] Video.
 
* [http://www.youtube.com/watch?v=rtO9maU709k BLENDER Tutorial: Low poly forest assets!] Video.
 
* [http://www.gamesas.com/lod-data-t33037.html Fallout 3 LOD Data] Thread. Includes Object (statics) generation.
 
* [http://www.truancyfactory.com/tutorials/fallout3/fallout_lod.html Fallout 3 LOD Tutorial] HTML.
 
* [http://www.gamesas.com/confused-about-lod-object-generation-t51147.html FO3: Confused about LOD Object generation] Thread.
 
* [http://taleoftwowastelands.com/content/fnvlodgen TTW: FNVLODGen] Thread on differences between FO3 and FNV LOD "trees".
 
* [http://www.nexusmods.com/newvegas/mods/61315/? Guide: Editing Individual LOD Meshes] Resource collection including tutorials.
 
* [[Generating_Tree_LOD_FNV/F3|Generating Tree LOD FNV/F3]] Wiki.
 
* [[LOD_Generation_For_New_Vegas_and_Fallout_3|GECK: LOD Generation For New Vegas and Fallout 3]] Wiki.
 
* [http://www.nexusmods.com/newvegas/mods/61206/? LOD additions and improvements] Resource mod.
 
: NOTE: The GECK LOD generation process uses "decimation" to create it's "low polygon meshes" for LOD/VWDPlease read the TESTG site sub-topic [http://www.darkcreations.org/testg/wiki/Category:VWD-OB#The_problem_with_LOD.2FVWD_files The problem with LOD/VWD files] about why this is believed to be less effective than that used in later games such as '''Skyrim'''.
 
  
<span id="Tip-LODGen"></span>
 
====TIP: LOD Generation====
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Even the casual user of the tool '''xLODGen''' should read the [http://www.darkcreations.org/testg/wiki/Category:VWD-OB TESTG: LOD/VWD Overview] article and the thread [http://taleoftwowastelands.com/content/fnvlodgen TTW: FNVLODGen] to gain an understanding of what is involved.  Among other things the later thread points out that the "green billboards and trees" are deliberately added by '''xLODGen''' to flag that they are missing textures (sort of like the red "!" to flag missing meshes, but specific to LOD).  '''xLODGen''' lists them in it's log when generating LOD.<br>
+
">From '''ThrottleKitty''':<br>
The resulting '''xLODGen.esp''' file needs to remain in your load order.  It should be regenerated whenever you add or remove "background" meshes and textures, as the "load order" affects the "quads" constructed to stitch together the distant view.</div>
+
[http://www.nexusmods.com/oblivion/mods/18566/? Adding Eye Morphs to FaceGen Files] is just about all I know about EGM/TRI/EGT files, and some tools to work with them aside from '''The Conformulator'''.
  
=== Misc Topics ===
+
For the problem with the mouth not moving, there's a couple of solutions; first the problem! '''The Conformulator''' compares your mesh to the original NIF/TRI/EGM files and creates morphs based on those offsets. So if the mouth isn't 100% perfect, you'll get a 'bad' morph. With my [http://oblivion.nexusmods.com/mods/20166 Head06] mod, the goal was to create a high-res version of the original, and stay true to the form. Even with small differences between the mouths, I ended up with a 'sticky mouth' look when talking. (So maybe the first solution isn't much of one).
Subjects with only a short list of entries, not yet warranting their own section.
 
  
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
I got around this by slightly opening the mouth a very little bit, a tip I got from '''Scanti'''. The vertices are too close together and the tolerance of '''The Conformulator''' was as such that it didn't know which way to move those areas. Took a couple tries, but I successfully managed to copy the morphs from the stock head to my custom one.
  
==== > ESM & ESP Files ====
+
You'll need to use one of the other tools (I used the [hex editor] '''010''' scripts) to take the offending morphs in and out of the TRI file for fixing. You get an OBJ [file] as an output, which can be mangled about, then injected back in.
'''Master''' Files (those with a ".ESM" extension - e.g. '''Fallout3.esm''') and '''Plugin''' files ("TES files" or "mods" for short - files with a ".ESP" - e.g., '''Fallout3mod.esp''') are the core data files of Bethesda games.  A master file acts as a database of all of the data for the world, including object data, dialogue, gameplay settings, object placements, AI settings, landscape, script commands, cells, etc. The '''GECK''' is the tool we use to view and edit master files and plugins for the "Fallout 3" and "Fallout: New Vegas" series.
 
  
(However, not all game data files are '''Master''' and '''Plugin''' files. Textures, meshes, sounds, videos, etc. are all part of the full game. More about these files elsewhere.)
+
The EGT file is a package of 50 textures. The only way you'll be able to reuse the existing ones is if your model has an '''''identical''''' UV layout- or close at least. If not, a bit of [fiddling] of models and UVs should yield a good result for baking the textures from one UV set to another. (short of buying the '''Facegen''' software to do it the right way).
 +
</div>
  
'''Master''' files and '''Plugins''' are largely identical in format, but have some important distinctions in practice. The main practical difference is that '''GECK''' will not (natively) create '''Master''' files. Nor will it allow '''Plugin''' files to modify other '''Plugin''' files.  (The '''Extender''' and '''PowerUp''' addons overcome this limitation.)  See the [http://geckwiki.com/index.php/Category:Data_Files GECK: Data Files] entry for more.
+
==== Fallout 3 EGM manipulation ====
 
+
: The following is based upon a FO3 [http://forums.nexusmods.com/index.php?/topic/92378-what-is-egm-file/ thread entry] by '''Skree000'''.
It is possible for more than one '''Plugin''' file to ''depend'' upon the same '''Master''' file.  They don't even have to be by the same author.  Such '''Plugins''' are called ''dependencies''.  '''xEdit''' (aka '''FNVEdit''') is the primary tool used to identify such "master/dependent" relationships.  (See the wiki article [[Missing_Masters|Missing Masters]].)
 
 
 
<span id="Tip-ESMOnly"></span>
 
===== TIP: When can you use an ESM only mod? =====
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">When creating an ESM there are rules you have to follow so you don't corrupt everything.
+
">
 +
EGMs are data files associated with head "accessories" that help deform them to accommodate the Head-Deformation associated with the Character Creation menu.
 +
 
 +
Without an EGM file, your character skull would stick through the hat, hair or helmet model if you made the skull really wide, tall or deep.
  
* All ESM plugins start out life as ESP files.
+
EGMs, without requiring a licensed commercial product, are created through a mod tool called '''The Conformulator'''.
  
* If your mod changes or deletes existing game references, it may not work properly as an ESM.  
+
'''The Conformulator''' takes TRI files; which are basically models that have ''Morph Targets''. ''Morph Targets'' are what you manipulate when you change sliders in your character creation screen. These are basically just moveable bones that are skinned to parts of the face. A TRI file is an archive of one model and its morph targets.
  
* Use ESM master files for resources or NPCs. One rule is <span style="color: red; background-color:#fff5f5;">''add'' or ''change'', but don't ''delete''.</span>  You can delete things while you are creating your ESM, but once another mod (ESP or ESM) references records in (i.e. ''depends on'') your first ESM (i.e. treats it as a "master file"), don't ever delete anything out of that ESM or things can go very bad. If you've created a bunch of NPCs and you decide you don't need one, just leave it in the ESM and don't place it anywhere in-game. If it's already placed by the ESP, then set it to ''initially disabled'' and never enable it.
+
'''The Conformulator''' also requires an OBJ or NIF format mesh to 'conform' to the TRI file. Basically it skins the mesh to the TRI file's ''Morph Target'' parameters, so that whenever you 'squash the forehead', the 'forehead region' of the headgear also gets squashed.
  
* Once your mod (as an ESP file) is done: if you then convert it to an ESM using '''FNVedit''' (by toggling the "ESM" field flag of the "File Header") and saving, and YOU DO ABSOLUTELY NOTHING ELSE TO IT, it will work. (That's in caps because it's important).
+
'''The Conformulator''' doesn't always do a perfect job, so it has a few options allowing modders to control how sensitive or accurate the conformulation is to the TRI file.
  
* Once you change your ESP into an "ESM" in the ''file header'' of '''FNVEdit''', make sure you change the file extension to ESM to match. '''FNVEdit''' loads files based upon their extension and timestamp, period.  It doesn't care about the internal ESM flag on ESP extension files; they get loaded after other ESMs.  Besides, it confuses your customers: the players.
+
EGM's are REQUIRED for any headgear/hair. Without them, it will look awful; as if you have extremely deformed/altered character faces/heads.
  
* If you have something like an NPC or a package or pretty much anything in an ESM, and something modifies that NPC/package/whatever in another ESP or another ESM, do not ever change the NPC/package/whatever in the original ESM afterwards. That can really corrupt your mod. You'll also save yourself a lot of headaches if you don't modify things in another ESP/ESM. In other words, if you have an NPC defined in an ESM, but then you place the NPC in the game in an ESP, do not modify the original NPC definition (Base-ID form) in the ESP. You can modify your ''reference'' in the ESP all you want. Just don't modify the original NPC definition.  (If that sentence confuses you, please see the [[#GECK_Form-ID,_Base-ID,_Ref-ID,_and_Editor-ID|GECK Form-ID, Base-ID, Ref-ID, and Editor-ID]] section again for the distinctions.)
+
To make your own EGM, export an OBJ of your headgear/hair from your modelling program, [Curator: the mesh ''transforms'' are exported when it's output as file type "OBJ" but not in a NIF], and then open '''The Conformulator'''.
  
* Any NPC you define in an ESP will likely suffer from the infamous "mismatched head/body texture" bug (e.g. a head with one skin texture on a body with a different skin texture). Some people think that all you need to do is edit your INI files and you can fix this bug, but while that works for some mods and people, the solution doesn't work for others. If you don't want your NPCs to have mismatched skin textures, and you want it to be done reliably so it works for everyone, you need to define the NPCs in an ESM, periodTake the time to plan ahead.
+
* Input the vanilla head TRI file, which is located in the Fallout3.BSA. (Unpack that with one of the BSA extraction tools listed in the [[#Packaging_Tools|Packaging Tools]] sectionNote the warning!)
  
* If you do modify the NPC in the ESP, do not go back into the ESM and modify it there too, as those changes will get lost. With an NPC it's not so bad, but if you are editing terrain, you can end up with landscape tears and all kinds of texture, navmesh, or world problems. <span style="color: red; background-color:#fff5f5;">Basically, once something in another mod references something from an ESM, consider that "thing" in the ESM as "'''locked'''" and don't touch it again, because if you do touch it you'll break stuff.</span>
+
: The TRI files you need are in "\meshes\character\_male\" and the one you want should be called "Humanhead.tri" or something like that. There are also "femalehead.tri" for female versions, if your mesh has problems with one gender over the other.
  
* Another issue with ESM files relates to how you edit them. It's probably easiest to explain using an example.
+
: For the most part "Humanhead.tri" works just fine, since the only real major differences between male and female heads are slightly different facial ''morph targets'', which aren't really that important for hairdos or hats to fit on the skull. (Skull deforms are all basically akin to each other.)
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"
 
style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;
 
/* Remove the next four 'white-space' lines to restore default white-space processing. */
 
white-space: pre-wrap;      /* css-3 */
 
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 
white-space: -pre-wrap;      /* Opera 4-6 */
 
white-space: -o-pre-wrap;    /* Opera 7+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">Let's say you want to fill in one of the unused homes in Goodsprings. This home in the vanilla files has a static door and boards across the door. You create an ESM which deletes the static door and the boards and adds a real door and an interior cell. All is well. You use '''FNVEdit''' to convert your ESP to an ESM, and all is still well. But then you edit your ESM in the '''GECK''' (using the '''GECK''' '''Extender''' or '''Powerup''' addons, because the vanilla '''GECK''' can't edit ESM files) and all of a sudden the static door and the boards are back, blocking your new real door.
 
</div>
 
  
: There are a couple of ways to avoid this problem.
+
* Once your TRI file is plugged in, plug in the OBJ of your headgear/hair mesh.
:* One is to only use ESM files for new things, and use ESP files whenever you modify something in the vanilla game, or in another master.
 
:* The only way known to keep your mod functioning correctly once it's an ESM, is to convert it back to an ESP every time you edit it, and then convert it back to an ESM using '''FNVedit''' when you are done.
 
:* Another way is to keep a copy of your original ESP for editing, then convert a different copy to ESM for actual use in-game. If you need to make more changes, edit the ESP, then copy and convert to ESM.  (This is the preferable method, as it keeps a backup in case things go wrong.)
 
  
<div name="Caution" class="boilerplate metadata" id="Missing Links"
+
* Hit "Conformulate".
style="color: red;background-color: #fdd; margin: 0 1em; padding: 0 10px;
 
border: 1px solid #aaa;
 
/* Remove the next four 'white-space' lines to restore default white-space processing. */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">
 
CAUTION: You may have heard it's also possible to convert your mod to an ESM using '''TESsnip''' (which was created for '''Oblivion''' files before the '''xEdit''' tool was developed).  Experience teaches us that you should '''never''' ''ever'' use '''TESsnip''' with FO3/FNV: as it can corrupt your mod and ruin your save games and cause all kinds of trouble.  This because it doesn't understand all the file format changes.  You'll get the above corruption bug as soon as you convert your mod to an ESM with '''TESsnip''', regardless of whether you edit the mod later with the '''GECK''' or not. Just the conversion to ESM with '''TESsnip''' is enough to cause the bug to show up.</div>
 
  
Because of these issues, depending on what you are doing, you might need to have both an ESP and an ESM for your mod.
+
* Done. Your EGM is ready!
  
There are plenty of mods that have been released as ESM only. As long as you do it correctly, it's not a problem.
+
'''GECK''' will auto-detect any EGMs that are present in the folder where the headgear is located.  HOWEVER!!! The EGM name must MATCH the .nif file name of the headgear.
 
</div>
 
</div>
  
==== > Factions & Reputation ====
+
: Note that if your head "accessory" (hat, helmet, piercings, etc.) is not conforming to the head, you may need to "unequip" and "re-equip" the accessory whenever you edit your face so it will reconform.
* [http://www.youtube.com/watch?v=5f-x2ws6ySo GECK: Factions/Reputation] Video.
 
==== > GIMP: Posters & Images ====
 
* [[Gimp_create_old_weathered_posters_and_other_images|Gimp: create old weathered posters and other images]] Wiki.
 
==== > How to ... ====
 
  
===== > How to create a challenge =====
+
=== Havok Physics ===
* [[How_to_create_a_challenge|How to create a challenge]] Wiki.
+
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 +
* [http://www.nexusmods.com/newvegas/mods/56009/? Jokerine's Misc Resources Tutorials and Novac Bungalow: Havok Removal] PDF.
 +
* [[Making_Havok_ragdolls_in_Blender|Making Havok ragdolls in Blender]] Wiki.
  
===== > How to create a message =====
+
<span id="Tip-HavokDeadNPC"></span>
* [[How_to_create_a_message|How to create a message]] Wiki.
+
====TIP Havok a dead NPC====
 
+
: Thanks to '''madmongo''' and '''jokerine''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
===== > How to create a perk =====
 
* [[How_to_create_a_perk|How to create a perk]] Wiki.
 
 
 
===== > How to create a Primative (activators, trigger volumes, multibounds, and occlusion planes) =====
 
* [http://geck.bethsoft.com/index.php?title=Creating_Primitives How to create a Primative (activators, trigger volumes, multibounds, and occlusion planes)] Wiki.
 
 
 
<span id="Tip-TransparentActivators"></span>
 
===== > Tip: Transparent Activators =====
 
: Thanks to '''EPDGaffney''' and '''pixelhate''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Sometimes you want an activation prompt based on scripting conditions, not proximityYou need the mesh to be there; but not the textureActivators require the collision and the mesh to be under the reticle to be activated, but the texture apparently doesn't need to be visible. That might be an ''invisible texture'' or the ''null texture set''.  Any texture would work (like a 4x4 saved as DXT1 format); so it doesn't need to be transparent (DXT5). Just bring the Alpha of the ''NiMaterialProperty'' to 0.
+
">Positioning a "dead" NPC can be frustrating.  Spawning a dead NPC will have them appear as you left them (usually standing in the "T-crucifix" pose)Instead have the NPC alive in a temp holding cell, then move them to where you want them to end up and kill themIf the "dead" NPC just stands there you can have havok kick in if you place a small dummy explosion by the freshly enabled NPC. '''Jokerine''' wrote about that [http://forums.nexusmods.com/index.php?/topic/5831532-egg-planting-script-placeatme-problems/?p=52011812 here]. You could probably copy the same script she wrote there and give it to your NPCIf you do it that way, they'll havok (have game physics applied) and drop in some random-ish fashion, though not too random since they mostly ended up in the same position on the floor. If you have the NPC move to the same room when the player enters the room, the player will see the NPC appear and then fall to the ground; so best to do this out of sight of the player if possible.
  
Caution: Some have had the ''null texture set'' not work for manual activation, but a ''fully transparent'' texture did.
+
Dead NPCs can be havoked in the GECK, though like much in the GECK that seems to be a bit buggy at times. Dead NPCs will spawn as you leave them though, so if you leave them just standing there in the GECK, then they'll just be standing there when the player finds them.
  
To add an ''Editor Marker'' to a mesh NIF (easier to spot and move in GECK) it must have the following structure (nomenclature has to be respected):
+
Live NPCs won't havok ''in the GECK'', but if you kill them when they spawn or when a player approaches, they'll havok and fall and will end up in some random-ish position when the player finds them.
* A ''NiNiode'' named "EditorMarker" containing a ''NiTriStrips'' named "EditorMarker:0"
 
* The ''Shader'' of the ''NiTriStrips'' must be a ''BSShaderNoLightingProperty'' with ''SF_VertexAlpha'' ticked.
 
* The ''Color'' of the marker is changed by altering the ''Vertex Colors'' in the ''NiTriStripData''.
 
* ''Bit 5'' (Editor Marker Present) has to be ticked in the ''BSXFlags''.
 
 
</div>
 
</div>
  
===== > How to make a working pipboy icon =====
+
=== Heightmaps ===
* [[How_to_make_a_working_pipboy_icon|How to make a working pipboy icon]] Wiki.
+
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 +
* [http://forums.nexusmods.com/index.php?/topic/517230-tutorial-converting-a-dem-to-a-heightmap/ Converting a "Digital Elevation Map" (DEM) file to a Heightmap] Thread.
 +
* [http://www.truancyfactory.com/tutorials/fallout3/fallout_worldspace2.html Fallout3 Creating a Heightmap] HTML with images.
 +
* [http://forums.nexusmods.com/index.php?/topic/224954-height-map-creation-and-editing-tutorial/ Heightmap creation and editing from imported image/data] Thread.
  
<span id="Tip-PipboyIcons"></span>
+
=== Interior Creation===
===== > Tip: Pipboy Icons =====
+
Often neglected topic because the GECK tutorials walk you through the process.  Thanks to '''EPDGaffney''' and '''random411''' of the Nexus Fallout "New Vegas GECK and Modders" forum for pointing out the need for this section.
: Thanks to '''Leakingroof''' of the Nexus Fallout3 forum for the wiki article, and '''scrivener07''' of the New Vegas Mod Talk forum for the basis of the following:
+
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
+
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
style="margin:0px 10px 10px 50px;border:1px dashed #DAA520;color: lightgray;
+
* [http://www.youtube.com/watch?v=qThfCjgNUdE Fallout New Vegas GECK interior building] Video (9:21) by '''deacrb'''.
background-color:#333333;padding:3px;
+
* [http://www.youtube.com/watch?v=0rK5UdhMyas GECK Tutorial - Building a House, Part 1] Video (12:16) by '''Seddon4494'''.
word-wrap: break-word;      /* Internet Explorer 5.5+ */
+
* [http://geckwiki.com/index.php/Creating_a_New_Empty_Cell Creating a New Empty Cell] GECK Wiki.  (Note: FNV has fewer pre-made empty buildings than FO3.  "TestQuest01" seems to be all.)
">To edit an existing "Pipboy Icon" you will have to extract the default icon out of the vanilla "Fallout - Textures2.BSA" or mod file, and then move it to somewhere under the "Textures" folder in your data folder: such as "Data\Textures\interface\icons\<category>". Don't forget the "Message Icon" as well.  (This is the icon that is used outside of the inventory.) It will most likely be named the same but with "glow_" prefixed on the front and located under other sub-folders of the "interface\icons\<category>" folderThe "<category>" may be "message icons", "pipboyimages_small", or "typeicons", etc.
 
  
Edit your replacement or create a new icon.  The key to a functional Pipboy Icon is that the simple "white" image on a transparent background goes into the "alpha channel", has a square cropped size of a power of 2 (e.g. 256x256 pixels), and is saved as a DXT3 format DDS file. The resulting saved file should be exactly 65,664 bytes and placed in the appropriate "textures\interface\icons\pipboyimages\<category>" sub-folder. (The icon color when displayed is controlled by the HUD color for the Pipboy.) See the Nexus wiki article [[How_to_make_a_working_pipboy_icon|How to make a working pipboy icon]] for details.
+
====Angle and Grid Snapping====
 +
"Angle snapping" & "grid snapping" buttons are covered under "[http://geckwiki.com/index.php/Categories:Preferences Categories: Preferences]" and in the "[http://geckwiki.com/index.php/Bethsoft_Tutorial_Layout#Grid_and_Angle_Snapping Bethsoft Tutorial Layout] on the GECK Wiki siteYou want to enable this and configure the spacing before you start doing anything else.
  
To replace an existing icon: open the '''GECK''' and start a fresh new ESP mod. Name it something to distinguish it from the original like "<original item> - Icon Patch". Open the item in question and click the edit button and navigate to "Data\Textures\interface\icons\<category>" containing the new pipboy icon file and load that icon and the "Message Icon" in and save the mod. Load this "<original item> - Icon Patch" plugin in your game "load order" right after the "<original item>" plugin and it should overwrite the previous icon and you won't loose your tweaks if you ever want to update the original mod(You can merge both the original and the patch plugins if you know how.)  If you want to share this patch on the nexus you would upload the ".ESP" and the textures using the exact file structure you used.  See the mod [http://www.nexusmods.com/newvegas/mods/34737/? Misc Item Icons - New Vegas] as an example of a plugin containing only icons to replace the use of the generic "scrap metal" icon for certain misc. items.
+
====Basic Interior location design guide====
</div>
+
: Thanks to '''djmystro''' of the "Fallout New Vegas" Mod Talk" forum for the basis of this section.  He is the "I" reference in the followingThe original source is the thread "[http://forums.nexusmods.com/index.php?/topic/581268-interior-location-creation-tutorial/ Interior Location Creation Tutorial]" in that forum.
  
<span id="Tip-MoveQuestNPC"></span>
 
===== > Tip: Moving a Quest NPC =====
 
: Thanks to '''madmongo''' and '''kingbeast88''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">If you go to move an NPC (typically a "named" one) to another cell and are warned by the GECK they are part of a quest, you need to stop and check what is going to get broken if you proceed.  Check what references them in the GECK (e.g. Scripts, Packages, Linked Markers, etc.).  If any of those reference the NPC's location, you will need to update them with your new location for that NPC.
+
">I learned a lot of things creating AWOP that seriously sped up my production time creating huge interior locations so I thought I would bundle a load of tips together in a guide to help others getting started with some simple handy facts that will save you a lot of time if you wanna go creating dungeons.
  
When you do move the NPC, be sure to "<Ctrl+C>" and "<Ctrl+M>".
+
Contents:
</div>
+
* Position 0
 +
* Block Size
 +
* Handy Keys
 +
* Havoc Engine
 +
* Walkthrough
 +
* How I Started
 +
* Copied vs New
 +
* Bodging Gaps
 +
* Cave Gaps
 +
* Cave Navmesh
 +
* Interior Size/Object Count
 +
* Adding NPCs
 +
* Object Spacing
 +
* Fast Navmesh
 +
* Fast travel to Object/NPC in Render Windiw
 +
* Interior Light and Fog settings.
 +
* Locating Objects
  
==== > Import Custom Videos ====
+
=====Position 0=====
* [[Importing_custom_videos_into_FNV/F3/Skyrim/Oblivion|Importing custom videos into FNV/F3/Skyrim/Oblivion]] Wiki.
+
On creating a new interior make sure the first block is placed at 0 on all axis. This will make the auto-move functions much simpler and easy to understand (as well as mathematically predictable).
  
==== > Item Creation & placement ====
+
=====Block size=====
* [[Item_creation_and_placement|Item creation and placement]] Wiki.
+
Each block is by default 256x256 or in caves double or triple that size. There are however exceptions such as the Office and Factory building sets which have a default height of 288 which can cause blocks moved using the auto-align functions to shift out of place vertically requiring manual readjustment later.
  
==== > Make Readius Screenglares ====
+
=====Handy keys=====
* [[Making_Pipboy_Readius_screenglares|Making Pipboy Readius screenglares]] Wiki.
+
Note: [RMB = HOLD the <Right mouse button>]
 +
* <F> - Drop object onto nearest surface.
 +
* <G> - Move object up by a small amount
 +
* <F5> - Refreshes the scene allowing for viewing of light effects and such.
 +
* <Ctrl+F> - Swap currently selected object(s) [Very useful for taking a clean Vault and making it dirty by just swapping out all references to one type of object such as a Vault wall in a scene to another similar replacement].
 +
* <Ctrl-F> (with Navmesh Active) - Checks local Navmesh for errors and allows for deletion or move to warning triangle.
 +
* <Ctrl-D> - Duplicates object(s)
 +
* <Z+RMB> and move- Rotates selected object on it's Z Axis.
 +
* <X+RMB> and move - Rotates selected object on it's X Axis
 +
* <RMB> & move - Rotates selected object on Y Axis
 +
* <A> - Turn full lighting on and off.
 +
* <Right-Click> (Navmesh on) - Drop Vertice
 +
* A (Navmesh on and exactly *3* vertices selected) - Fill in a Navmesh triangle.
  
<span id="Tip-NewMarkers"></span>
+
=====Havoc Engine=====
==== > Markers ====
+
To use the Havoc engine (on by default in the FO3 GECK) to realistically drop items and reveal the contents of certain vanilla interiors you need to do the following:
* [http://geck.bethsoft.com/index.php?title=Markers GECK: Markers] Wiki.
+
* Open the 'GECKCustom' ini file (usually in My Documents/My Games/Fallout NV)
* [http://fallout.wikia.com/wiki/Dummy_Cell_for_Scripted_XMarkers Dummy Cell for Scripted XMarkers] Wiki.
+
* Find:
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
+
:* bUseMultibounds=1 and change the 1 to 0.
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
+
 
background-color:#333333;padding:3px;
+
[Note that havoc dropped items will hover slightly above the surface they are intended to drop on. For detail objects I recommend using the F-key drop function. However certain objects such as skeletons can only be dropped properly using havoc.]
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">You don't need to make a new XMarker object. Just drag the existing XMarker static object into the GECK "Render Window" and it makes a new reference to that object. (Look over to the right of the object field a bit and you will see a count of "uses". It's used everywhere and you can use it too.)  Then if you need to use and reference ''your marker'' in some way, you can double click the one you just placed in the render window and edit it's information to distinguish it from all others (for example, for the Edit-ID you might put "xMyModMarker", then later in a Script or AI Package or what not, use that Edit-ID for reference).
 
  
The base Form-ID is blocked from view by the game engine. When you made a new one, it automatically assigns a new Form-ID. That is not blocked by the game engine from being viewed in game. Its the same way with all the markers in the game.</div>
+
=====Walkthrough=====
 +
Using this info it is relatively quick and painless to create vast rooms.
 +
Here's an example of an office block:
 +
* Choose entrance location, manually place block at 0 on all axis.
 +
* Decide on approximate size of location and how you intend for it to play out.
 +
* Find a wall and corner object (or anything else 'room' based that will be used at least once).
 +
* Drop them into appropriate positions (place at 0 height manually and use the auto-align features to rotate and slot them into place.
 +
* Use Ctrl-D to duplicate any objects needed more than once such as standard room walls and drag them into place.
 +
* Use Ctrl-F to select specific wall clusters and replace them with similar objects (e.g OffRmWall01 to OffRmWall02/03) which will vary up the appearance.
 +
* Drop in essential clutter objects such as desks, terminals etc... and use the previous functions to duplicate and replace with similar objects. Use G and F to reposition vertically. [Duplicating clusters of stuff can vastly speed up creation.]
 +
* Add detail clutter and loot then enemies.
 +
* Leave FX until navmesh is complete.
 +
* Clutter from the bottom upwards. Navmesh from the top down.
 +
: Clutter from the lowest floor (including basements) and then add later floors so you can see into the room effectively from all angles whilst adding clutter. Resist the urge to navmesh at this stage until the building is complete. This is because dropping a vertice (or green square used to link navmesh triangles) on top of existing navmesh on a lower level is tricky. It requires you to drop it on the floor from an angle where lower levels of navmesh are not in the way/directly underneath.
  
<span id="Tip-PortableMarkers"></span>
+
* Add FX after navmeshing. Navmesh Vertices get stuck on FX and even spamming the F key repeatedly will not get them to the floor sometimes.
==== TIP: Portable xMarkers. ====
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">Suppose you want an NPC's "home" to be changeable to a new location.  You can either place different xMarkers at the potential sites, or use a "creature" that is initially "disabled" for your Marker.  Static objects like the default XMarker object cannot be moved, but a "persistent creature" set as a "quest object" can be moved and assigned as a "marker".  Then drop the "marker/creature" in the new "home" cell. "Creature" positions are always updated in the game, whereas static objects are not, so you don't need to use the "enable/disable" trick to update their location.  You then assign a "GoHome" travel AI Package to the marker as it's destination, and another "sandbox behavior" AI Package to let it wander the immediate area of the marker.  See the wiki article [http://geck.technodeep.net/index.php/Bethsoft_Tutorial_NPC_population GECK: Bethsoft Tutorial NPC population].</div>
 
  
==== > PAINT.NET: Normal Maps ====
+
=====How I Started=====
* [http://tesalliance.org/forums/index.php?/tutorials/article/119-graphic-artistry-normal-maps-in-paintnet/ Graphic Artistry: Normal Maps in Paint.Net] Tutorial.
+
I did not read any tutorials to get started modding (though once I got to dialogue and quest creation aspects those became very necessary).
  
==== > Recipes ====
+
For level design I began by duplicating rarely visited areas from the vanilla game (back then FO3). I then re-cluttered them myself. I pretty much learned the hard way though. Had I known of the existence of many of the above tips/keys/info I would have got a lot more done a lot faster but that's another story.
* [http://youtu.be/-jDloCLWFYc GECK: Making a Recipe] Video.
 
==== > UV Mapping ====
 
* [[UV_Mapping:_An_Explanation|UV Mapping: An Explanation]] Wiki.
 
* [[Making_square_UV_maps_in_Blender|UV Mapping: Making square UV maps in Blender]] Wiki.
 
  
==== > XML ====
+
Basically I took what was there already, searched for the object in the GECK and just looked at all the similar objects. Sometimes just trying stuff out but mostly going in knowing what I wanted and if need be finding the blocks I needed to 'bodge' it together.
XML is a "data definition" structure, based upon a "data schema" which was defined by Bethesda. They didn't publish their "schema", but some things have been learned about it.  However, without a published scheme, you must either use only elements found in other XML files, or be willing to experiment.
+
 
* [http://www.w3schools.com/xml/ W3School's XML Tutorial] Wiki.  Covers various XML standards such as Ajax, DOM, XPath, XSLT, XQuery, DTD, Schema, and Services.
+
If I wanted a certain object I thought where I had seen it before and sought it out in it's vanilla location, checked out the name, found it in the list then dropped one into my location (though standard keyboard copy/paste commands work fine, just make sure you have the render window selected before attempting to copy).
* [http://cs.elderscrolls.com/index.php?title=Category:Oblivion_XML Category:Oblivion XML] Wiki (Oblivion).
 
* [http://www.loverslab.com/topic/53411-reading-ui-hud-xml-files/ Reading UI & HUD XML files] by '''DoctaSax''' (Adults (18+)Only site).  Covers XML Basics.
 
* [http://qxmledit.org/ QXmlEdit] (freeware) XML Editor.  Note the tutorials on this site are regarding the tool's features; not XML in general.
 
  
=== Music & Sounds ===
+
=====Copied vs New=====
Fallout New Vegas features a brand new music engine versus that of the one used within '''Fallout 3''' and '''Oblivion''', which has effectively rendered the ''music'' tab within the creation of cells useless.  See the Wiki tutorial [[Fallout_New_Vegas_Music|Fallout New Vegas Music]] for the description of how this now works.
+
Eventually I found that copying vanilla areas was more trouble than it was worth. Most are at unpredictable heights and horizontal positions and a few are even at random angles which makes adding new room blocks onto them very difficult without creating gaps.
  
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
Eventually it becomes easier to create a new room and just copy a load of clutter from a few vanilla areas in bulk and redistribute them rather than the other way around.
* [[Fallout_New_Vegas_Music|Fallout New Vegas Music]] Wiki.
 
* [[Replacing_radio_songs|Replacing radio songs]] Wiki.
 
* [http://www.youtube.com/watch?v=jjjuwd4JR6U&t=6s GECK Tutorial - Radio Station] by '''Seddon'''.  Video. See [[#TIP-CallingFormat|TIP: Format to call a song]].
 
* [http://forums.nexusmods.com/index.php?/topic/274194-tutorial-how-to-create-a-new-radio-station/ GECK Tutorial - How to Create A New Radio Station] by '''DorostheConqueror'''.  Forum post. See [[#TIP-CallingFormat|TIP: Format to call a song]].
 
* [http://www.freesfx.co.uk/ Free Sound Effects] Web site.
 
* [http://great78.archive.org/ The Great 78 Project] Web site.  About 78,000 (and growing) old 78 LP's ranging from 1898 till around some time in the 1950's.  But would-be users need to note the [http://archive.org/about/terms.php Terms of Use] required by the Internet Archive organization.  In short, their material is "free to access" but not particularly "free to distribute", and may be subject to various copyright laws.  Access is granted for scholarship and research purposes only.  It is your responsibility to ensure such legalities are complied with for individual titles.
 
* [http://www.nexusmods.com/newvegas/mods/63052/? Silent Voice Generator by Enter_77] Mod.
 
* [http://www.nexusmods.com/newvegas/mods/61265/? Latest Ogg Vorbis Libraries] by KaneWright. The game uses it for decoding OGG audio format.
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">NOTE: There is a distinction between, and in the requirements for, each type of sound. '''Stereo''' won't fade (attenuate) over distance; '''mono''' will.  This accounts for why some ''fx'' and all ''voices'' need to be in '''mono'''.
 
  
Some sounds appear to be "hard-coded" into the game engine in that they are not found as separate files in the loose files under the "Data" folder nor in the "Fallout - Sound.BSA" file. (The "havok" collision sounds are an example of this.) Some sounds have an entry in the '''GECK''', that appear to never be used despite the fact you can open a form and see them entered.  (Another example of differences in behavior is with the ''heartbeat'' sounds for low health, which can be replaced by other sounds externally in '''Windows Explorer''', despite having entries in the '''GECK''' which it claims are unused.) Consequently, some experimentation is usually required.
+
=====Bodging gaps=====
 +
I like to use certain kits together such as Hotel, Office, Utility, Cave and Vault, sometimes just in one interior (the Dead Money AWOP has lots of these locations). However they are not always designed to fit together leaving gaps often along ceiling joins. Look out for simple blocky objects which can be used to fill gaps such as:
 +
* Free Columns (e.g NVGSRmFreCol) [Eseentaly wall-join features]
 +
* Wood blocks (e.g CampLog01-04)
 +
* Concrete (e.g PowerStationBlock01)
 +
* Rubble (e.g OffRubblePile01/IndRubblePileSmall)
 +
* Door Frames (e.g OffDoorFrameSmOnly)
  
'''Stereo''' sound files are considered superior to '''mono''' because they have relative 2D positioning built into them already. However in reality, for games, when you want to achieve a 3D ''surround sound'' positioning effect, in almost all cases it's '''mono''' files that need to be used. That way the game engine kind of ''re-stereos'' them into the entire 3D sound output of your gameplay.  There are exceptions to this, and often ways to ignore this rule, but in general, game designers use '''mono''' for 3D sounds and '''stereo''' for 2D, even in modern games.
+
=====Cave Gaps=====
</div>
+
Cave sets are not like other square room sets. They require much more attention as to which block can go where. They are not symmetrical and floor and ceiling joins in particular will be off unless you put the right blocks next to each other at the correct angle.
: File folders by type:
+
Here's how I do it:
:* '''collision sounds''' made by objects hitting other objects or the ground are aspects of the "Havok Material Properties" (edited with '''NifSkope'''), and are addressed under the topic of "Collision" in [[#Tip-CollisionSounds|TIP: Collision Impact Sounds.]]  These sounds are hard-coded into the game engine, but the main game typically uses only 32 of the identified 96 possibilities.
+
* Place initial block at 0 and make sure it is also not at an angle.
:* '''music''' (Data\Music): location/event soundtrack.  ''MP3'' '''stereo''' files.
+
* Do NOT rotate any blocks (apart from Hallway pieces and corner blocks which are more flexible).
:* '''songs''' (Data\Sound\songs\radionv): radio playlists. Individual song title files begin with the "mus_" prefix, and a "_mono" suffix.  '''Mono''': ''WAV'' (Pipboy) or ''OGG'' (radios/speakers) files; or '''Stereo''': ''MP3'' (Pipboy) files.  Besides the obvious problem of a gigantic difference in file size (''WAV'' files are roughly 5 times those of ''MP3''s), this engine will actually play a ''stereo WAV'' file on a radio station twice (first the left channel will play, and then the right channel).  This problem does not occur with ''stereo MP3'' song files.  See the [[#TIP-CallingFormat|TIP: Format to call a song]] for more detail on file formats for "radio stations".
+
* Each cave piece is numbered 1-4. These represent North, South East and West and are consistent throughout.
:* '''sounds''' (Data\Sound\fx): noise/ambience/special effects(fx). ''WAV'' '''mono''' files.  There are a number of sub-folders in the BSA under this category.  These are just a sampling of common interest under this category:
+
* Drop one in. If you drop a number 2 wall in and need it facing the other way swap it out for a number 4 rather than rotating it 180 degrees. Should be simple from there on out. This way you avoid the gaps.
::* '''amb''' (background noises): ''OGG'' files.
 
::* '''fx''' (sound effects): ''WAV'' '''mono''' files.
 
::* '''mus''' (location music): ''OGG'' files.  Sub-folders for ''types'':
 
:::* '''bttl\allcityintro'''
 
:::* '''bttl\allcityoutro'''
 
:::* '''bttl\allruralintro'''
 
:::* '''bttl\allruraloutro'''
 
:::* '''endgame'''
 
:::* '''inc\night'''
 
:::* '''inc\peaceful'''
 
:::* '''inc\day'''
 
:::* '''inc\creepy'''
 
:::* '''mysteriousstranger'''
 
:::* '''tenpenny'''
 
::* '''npc''' (by type of actor): ''WAV'' '''mono''' files.
 
::* '''voc''' (sound effect "voices"): ''WAV'' '''mono''' files.
 
:* '''voices''' (Data\Sound\voice): dialog.  ''OGG'' and ''LIP'' '''mono''' files.
 
  
<span id="TIP-AddingASound"></span>
+
=====Cave Navmesh=====
====Tip: Adding a new sound (noises/fx) file====
+
Quick tip for navmeshing caves is to aim for the rocks when dropping vertices. This stops the majority of it going under ground from several vertices being dropped lower than the average ground height.
: Thanks to '''EDPGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for contributing clarifications to the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">Place your sound file somewhere in "Data\Sounds\fx\<YourModFolder>".
 
: If your sound file (''WAV, MP3, OGG'', etc.) is imported, be sure to strip out any "metadata" (cover art, album name, author, etc.) it may be encoded with as the game is not prepared to deal with it.  There are a number of tools available on the web, including the [http://www.audacityteam.org/ Audacity] (free) sound editor, which can covert other formats.
 
: NOTE: The GECK seems to see/list all sound files as ''MP3'', regardless of their actual extension (i.e. ''WAV'' or ''OGG'').  The extension does not seem to matter to GECK and the sound plays fine '''in game''', but only ''WAV'' files play in the '''editor'''.
 
: If you intend to "overwrite" a vanilla sound file, you must first extract the sound file from it's BSA file into it's intended folder.  This is primarily to create the correct folder path for your replacement file.
 
* Your '''fx/sound''' ''MUST'' be a '''mono''', 16-bit sample size, and 22, 32, or 44.1KHz sample rate ''WAV'' (ADPCM: "Adaptive Differential Pulse Code Modulation") file, if you want to be able to click "play" and hear it in the editor.  No other file type plays in the editor, even though many vanilla files are in other formats. Its a GECK thing.
 
* ''MP3'' sound files (other than "songs" for "radio") should be '''mono''', 16-bit sample size, 44.1KHz sample rate, Bit Rate: constant, 64 kbps.
 
* ''OGG'' Vorbis sound files should be '''mono''', 44.1KHz, Bit rate: constant, 48kbps (128kbps for dialogue).  Still need to generate ''WAV'' files to make ''LIP'' files since GECK won't make them, but once the ''LIP'' file is done you can dispense with the ''WAV'' file.  (See the [[#Dialogue_&_Lip-synch|Dialogue & Lip-synch]] section.)  On average, an ''OGG'' file uses much less memory.
 
: When in doubt about which "KHz sample rate" to use, be guided by what similar vanilla sound files in the same location are using.
 
* Open GECK.
 
:* Look in the object window for "Audio", then click on "Sound".
 
:: The list here is not of actual sound files, but rather a list of GECK Form-IDs that point to the sound files.
 
:: Then you must create a sound object in the GECK. You can't directly link the audio portion of your weapon (etc.) directly to your sound file. Again, you MUST create a sound object first. And then link that object to your weapon in the "Art and Sound" tab. You must be able to hear your sound play as a GECK sound object BEFORE linking it to your weapon.
 
:: To create a new sound record from scratch:
 
::* Move to the right window, right click and select "New".
 
::* Click on "Add sound file".
 
:::* Adjust "Attenuation distance".
 
:::: Check stock vanilla sounds of the same type (e.g. a gunshot) for a good idea on how to set them.
 
:::* Flag "Mute when submerged", then the "OK" button.
 
:::: Check stock vanilla sounds for other flags and settings as well.
 
:::* If your sound is a dialogue then flag "Dialogue sound".
 
:: OR, edit an existing sound record to create a new one:
 
::* Right-click and edit one of the existing sounds. Ideally find one of the same type as what you want (i.e, to make a new gunshot sound, use an existing gunshot sound).
 
::* Make your modifications to that sound, and point it towards your own added sound file.
 
:* Click "OK", and it will ask: "Create a new form?"; to which you say YES, then make note of the new Form-ID.
 
:* Now when you are in your "Art and Sound" tab (if its a weapon or something) just click on the sound buttons and find your new sound by the new Form-Id you noted.</div>
 
  
<span id="TIP-CallingFormat"></span>
+
=====Interior Size or Object Count=====
====TIP: Format to call a song====
+
Making a location too big and adding too many objects will severely impact on performance. I have found the total object count (from a cigarette to a train cart) should not exceed 1500 or thereabouts (though I have many interiors that push this limit, in some cases maybe a bit too far).
: Thanks to '''EDPGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
+
To create a very big location is still do-able. For example the main sections of the Collapsed Underpass from AWOP are structurally built from about 40 very large blocks doubled in size though the rooms are probably big enough to contain every Vault in the vanilla game. This cuts down on object count and performance does not take a hit.
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">For a radio station, a "song" file will '''''ideally''''' meet the following requirements:
 
* Your song must be converted to ''.MP3'' format if you want it to be recognized and used on a game radio station ''in stereo''.
 
:* 128 kbps CBR ("Constant Bit Rate"; 256 is said to work but not tested) ''in stereo''.
 
:* '''Mono''' files will play, but obviously they won't play ''in stereo''.
 
* Most tutorials on radio stations only refer to ''WAV'' files, giving the impression that they are the only file format that will work.  This is not the case, but there are specific differences to use ''MP3'' songs.  (Both ''Stereo'' and ''Mono MP3'' songs will work if the same procedures are followed.)  Other than the ability to be in ''stereo'', the other huge advantage to using ''MP3'' files is how much smaller they are (roughly 1/5).
 
* To call a song in a radio station: ''.MP3''s NEED braces (see example below) around the response name; but ''.WAV'' or ''.OGG'' files won't work with them.  (The reason the vanilla stations have mono ''.OGG'' files as well in the '''Fallout - Sound.bsa''' file is: those are what plays in the world on a speaker/radio that isn't your Pip-Boy.)
 
: If you look at any of the vanilla radio stations in the GECK, they all use ''.MP3''s, and the name of each entry is something like this:
 
:<pre>..{Song 1 A Winter Romance}</pre>
 
: Note that like the vanilla script '''vCountryRadioQuest''', you should put '''two spaces''' (represented here by ''two periods'' to be visible) before the first brace. (Not tested without.)
 
: If you save '''mono''' ''OGG'' files in the radio folder that are named identically to the "song" files but with '''_mono''' appended to them (e.g. "song1.mp3" and "song1_mono.ogg"), the radio station will play them in the game world at the correct time. I've seen a lot of different ways to encode them but I have always used 65kbps '''mono''' and (I believe) 22050hz, and have always had them play as intended.
 
* '''Seddon'''s video guide on how to make a station is a good one, but its major flaw is that he was operating under the presumption that ''mono WAV'' files were required.  '''You''' must make the above calling convention adjustments if using ''MP3'' or ''stereo'' files instead.
 
* '''DorostheConqueror'''s text-based guide is slightly more comprehensive than Seddon's if I recall, but suffers from the same ''mono WAV'' file presumption, and the same adjustments apply.
 
</div>
 
  
<span id="Tip-BattleMusic"></span>
+
Which objects/FX/NPCs etc are more likely to trigger a performance hit I have yet to figure out.
====TIP: Replacing Battle Music====
 
: Thanks to '''KadoDragon''' and '''DaemonGrin''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">You need to know what ''audio object'' (in the GECK) to edit in the ''audio tab'' which means you need to know the names of the battle songs you want to replace. All you have to do once you have that information is redirect the ''audio object'' to the '''wav, mp3 or ogg''' file of the new one. Or you can find the '''mp3, wav, ogg''' you want to replace with your own music and just rename yours to the same names of the vanilla files (after backing them up of course); making sure to leave them in the correct directory path(s) in the "Data\sound\" folder path.  Not hard at all.  Really the hardest thing to do with sound is creating the ''intro'' and ''outro'' segments: they are super short and need to blend nicely with the fade-in of the battle music.
 
  
The game combines the ''intros'' and ''outros'' from the '''Data\Sound\fx\mus\bttl''' sub-folder and then plays the music from the appropriate '''Data\Music\''' sub-folder.
+
=====Adding NPCs=====
</div>
+
I try and limit NPCs of a certain type to about 20 in any given location with no more than 30 overall. Adding more than this caused many problems when FNV was initially released though I believe the patches have resolved most problems I experienced. Even so having too many NPCs seems to be bad for performance, especially if using vanilla spawns likely to be effected by mods such as IWS or VVV.
  
<span id="Tip-WeaponFiring"></span>
+
Also when building an interior try and think how the enemies will react to your entrance. If the enemies are spread out inside a building not far apart with someone near the entrance then they are all likely to spot the player upon entry and mob them even from the back of the building.
<span id="Tip-DetectionEvents"></span>
 
==== TIP: TCD and Gunfire Detection Events ====
 
: Thanks to '''punchbattle''' of the "New Vegas Mod Talk" forum for the basis of the following.
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">A really helpful command is called [http://geckwiki.com/index.php/ToggleCombatDebug ToggleCombatDebug (TCD)]. Running it in-game adds graphical elements to combat that help give you a better understanding of what's going on under the hood. For instance, one really helpful thing it does is create "teal colored" bubbles (called '''Detection Events''') to mark sounds made by the player and NPCs. If an NPC is close enough to a '''Detection Event''', they'll "hear it" and begin searching for the enemy it belongs to. This revealed something very ... odd. And bad.  
 
  
The only part of a gunshot that creates a '''Detection Event''' is the '''projectile''', and ''only at the point of impact''. This means NPCs will completely ignore the sound of the gun going off, and instead choose to wander right into the enemy's crosshairs. Bethesda is infamous for their "less than realistic" stealth systems, but learning about this completely ruined stealth for the author and made them want to fix it.
+
There are several ways around this such as adding Guard packages to the NPCs or clustering them in certain spots.
  
There's a function that lets you make your own '''Detection Events'''. It's called (strangely enough) [http://geckwiki.com/index.php/CreateDetectionEvent CreateDetectionEvent].
+
Personally for tight environments such as hotels and offices with numerous NPCs I like to block off several pathways to slow them down. I also try and create gaps within the ranks to allow for breathing space for stealthier players to advance further.
  
An initial idea was to attach a script to a gun, and have it create a '''Detection Event''' at the location of the shooter whenever they pull the trigger. This didn't work for a number of reasons. Instead, using a quest that checks for anyone with a gun doing an attack animation, and casting a '''Detection Event''' spell on them works perfectly!
+
Think about how far in you want the NPC to get before they are attacked. I usually allow at least one empty room or corridor on entry so the player can take stock of their surroundings and if sneaky enough get inside undetected. Vanilla often does this too but not always.
  
For anyone reading this who wants to mess around with '''Detection Events''' as well: Any field that asks you to assign a '''Sound Level''' to a weapon or projectile is actually asking you how big you want your weapon's '''Detection Event''' bubble to be. But remember! Weapons don't actually create '''Detection Events''' when '''''fired''''', despite what the '''GECK''' seems to imply: only upon '''''projectile impact'''''!  The size of each "Sound Level" bubble is controlled by these settings:
+
[This does not matter so much with most Creatures who cannot open doors such as Geckos, Mole Rats & Mantises].
* iSoundLevelLoud - 100
 
* iSoundLevelNormal - 50
 
* iSoundLevelSilent - 10
 
  
People say that '''Detection Events''' can't be larger than 100, but this isn't true. You can assign values into the thousands, and it still works. Also, 100 is ...very small(As in 128 [http://geckwiki.com/index.php/Units game units] is the equivalent of the default 6 foot tall NPC actor.) Makes one wonder if that isn't perhaps a percentage multiplier to the "standard" bubble size; whatever that might be?
+
=====Object Spacing=====
</div>
+
Try and leave a gap the size of a small door frame (approx 4 office/factory floor tiles if I remember correct) wherever you want NPCs or creatures to walk (or wherever you intend to Navmesh). You can get away with less in some circumstances (small bridges with no walls either side) but trying to limit that space with clutter or walls will cause problems for 'wide' creatures such as Deathclaws, Super Mutants and Mantises.
  
====TIP: Weapon firing sounds====
+
=====Fast Navmesh=====
: Thanks to '''Scott Clemmons''' of the GameAs "Fallout: New Vegas" forum for the basis of the following:
+
Get used to holding down Ctrl and A when dropping vertices. Every third vertice dropped without releasing control will automatically create a navmesh triange. After this you can just drop a single vertice and the last two highlighted vertices will automatically create a new triangle. Sounds complicated but in practice is very simple. This works better outdoors or navmeshing large areas as for cluttered rooms still require a degree of attention as to which vertice goes where which will eventually cause problems using this approach.
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">In New Vegas, there are two different 3D shooting sounds for many weapons: A normal shooting sound, and a distant shooting sound. As the distance between you and the shooter increases and the normal shooting sound starts to fade, the distant sound should start taking over while the normal sound continues fading away.
 
  
The distant sound has a bit of an echo, so the effect of using this different sound for shots from a large distance is nice.  The distant sound doesn't start playing until the normal shooting sound has stopped playing completely.  So as you get further away the normal shooting sound fades until the gun is almost silent. Then, when the sound is completely gone, the distant sound takes over. Usually, this distant sound is disconcertingly louder than the fading at the end of the closer distance sound!
+
To navmesh clustered environments such as rubble-strewn offices I used to drop a vertice at every corner and then link up all the triangles after. Now I use a combo of this and the holding Ctrl approach which tends to get the job done very fast.
  
So what happens? You have someone shooting at you, and the further you get away, the less loud the sound gets. But then when you pass a certain distance, the shooting sound goes from nearly silent to relatively loud again.
+
Check out some vanilla navmesh too. It's not that detailed and does not venture into every nook and cranny. Take into account that even melee opponents have a wide radius of attack so you don't need to go right up to every wall. Also if you try and navmesh too small a gap then NPCs will just ignore it as being inaccessible.
  
Using the 'getdistance player' console command, you can track the distance (measured in game units) between the shooting NPC and yourself. Approaching the 2400 unit distance the gunfire sound is almost silent. Then, upon increasing the distance between yourself and the NPC a little more, the louder distant shooting sound takes it's place.
+
To copy an interior and it's Navmesh, it is easiest just to duplicate it in the Cell Window. This will copy the navmesh and keep everything in place.
  
In the GECK Weapon record Form there are "attack sound" fields on two different tabs: "Art and Sound", and "Mod Info".
+
Copying the bulk of an interior from one Cell to another I can't think of a way to take the navmesh with it. There may be one but I don't know it.
* Art and Sound tab: Unmodified weapon attack sounds.
 
* Mod Info tab: Weapon attack sounds when an appropriate "weapon mod" is used: i.e. "suppressor/silencer".
 
  
Testing showed that adding a "Suppressor/Silencer" "weapon mod" seemed to have no effect on the sound heard in most cases.  Turns out a huge part of this is the specific sound files chosen, and for which of the different fields.  Apparently many mod makers use the same sounds for both tabs (probably not understanding the different roles).
+
With a little practice Navmesh becomes a very easy mindless repetitive task (caves and very uneven landscapes being the exception). Don't be worried about starting again for the most part. Offices and similar can be done in a few minutes. A bit dull but OK if you have some music on or something.
* The "3D" field's sound "attenuates" (fades) as you move from the point of origin starting at approximately 255 units up to 2400 units distance.
 
* The "Dist" sound is a 3D effect that kicks in approximately at 2400 units up to 8500 units.
 
* The 2D field sound does not "attenuate" (fade) with distance.  This is the "1st person" sound: "right in your ear".
 
  
The following choices illustrate the difference of this effect for a .308 caliber weapon (The 'Gobi Desert Sniper Rifle', using WMX to modify it).  The "CCSP" files chosen are from the [http://www.nexusmods.com/newvegas/mods/52633 Combined Community Sound Pack (CCSP)].  Other choices depend upon the mods installed.
+
=====Fast travel to specific Object or NPC in Render Window=====
 +
Right click on object in the Object Window & select 'Use info'.
  
"Art and Sound" tab: (Unmodified weapon attack sounds).
+
This will list each appearance of said object. Then just double click on each in turn to be taken to it's exact location in the Render Window. This works well for books & guns (but not tin cans or anything too common).
* Attack Sound (3D): "CCSPsniperrifle3d" (there are several choices and all are generally "loud".)
 
* Attack Sound (Dist): "CCSPsniperrifledistant" (this in particular is a more muffled distant sound than other similar options.)
 
* Attack Sound (2D): "CCSPsniperrifle2d" (there are several choices and all are generally "next to you loud".)
 
  
"Mod Info" tab: (Modified weapon attack sounds).
+
=====Interior Light and Fog settings=====
* Attack Sound(s): "CCSPsniperriflesilenced3d" (shorter, quieter 3D shot.)
+
In the interior locations there is an edit window which can be accessed from the Cell View window by right clicking. Im not sure about exterior locations (never edited lighting for them) but with any luck it's similar.
* Attack Sound (2D): "WPNRifleAssaultSilencedFire2D" (shorter, quieter 2D shot.)
 
  
Now an unmodified rifle sounds as expected, and one equipped with a silencer is obviously quieter. The contrast between the fading 3D sound and the "Dist" sound is something the sound file makers will have to calibrate.  But using a more faded "dist" sound will reduce the jarring effect.
+
There's 3 color boxes in the lighting window. Make sure to uncheck any ticked boxes relating to predefined lighting settings else changing them will not save properly. One of the two on the left is ambient lighting, I'm not sure what the other one is so I generally make them very similar. The one on the right is Fog.
</div>
 
  
=== Navmeshing ===
+
There are 4 boxes at the end for entering numerical values for the fog (from memory).
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
* For Close - the point at which the fog starts forming around the player (128 is about right for dark areas, 512 is enough for a well lit and spacious office).
* [http://youtu.be/5JGpfOLiLic Creation Kit Tutorial: How to Navmesh] Video by '''Darkfox127'''. Specific to Skyrim but compatible essentials.
+
Fog Far - The distance at which the fog theoretically becomes a solid wall (anything below 1000 is very close, 2000 is about right for a medium lit tight location but in order to see for long distances a very high value needs to be set (around 4000-6000). To compensate for this in big dark areas it is best just to set the colors to very dark tones but keep these values high so light spots in the distance are still visible.
* [http://www.youtube.com/watch?v=qKbOLdzC6-k Creation Kit Tutorial: Linking Cells] Video by '''Darkfox127'''.
+
* Fog Density - Just a multiplier for the amount of fog. 1 is standard.
* [http://www.youtube.com/watch?v=Q-ZQtgveKaM Fixing Deleted Navmesh with TES5edit] by '''soupdragon'''.
+
* Fog Clipping - The cut-off point beyond which nothing is visible but the color of the fog (or maybe that unknown block on the left). This should always be a higher value than the "Fog Far" setting to prevent a sudden impenetrable wall of fog cutting through objects at a certain distance (which can look very bad through scopes and such).
* [http://geck.bethsoft.com/index.php?title=Bethsoft_Tutorial_Navmesh GECK: Navmesh Tutorial] Wiki.
 
* [http://www.youtube.com/watch?v=2Vqjwa1fKI4 GECK: NavMesh Tutorial] Video by '''Illusive Man'''.
 
* [http://www.youtube.com/watch?v=8F1A-MPu3gY GECK: NavMesh Tutorial] Video by '''Staring@MyKeyboard'''.
 
* [http://www.youtube.com/watch?v=HSb7TY1ai2w Guide to Bethesda Creation Kit - navmesh: pathing test and finalizing] Video by '''Hellcat5'''.
 
* [http://www.youtube.com/watch?v=q2pZmWgJ0FE&feature=youtu.be How to edit pre-existing nav-meshs for an exterior worldspace GECK] Video by '''001cf73'''.
 
* [http://www.nexusmods.com/newvegas/mods/62041/? Navmesh Fixes and Improvements] Mod by '''sandbox6'''.
 
* [http://www.youtube.com/watch?v=QApfS9NRYPY NavMesh Tutorial: Stairs] Video by '''Staring@MyKeyboard'''.
 
* [http://www.creationkit.com/index.php?title=TES5Edit_Documentation TES5Edit Documentation]
 
  
<span id="Tip-NavmeshBug"></span>
+
For reference purposes the height of a standard Office Block unit is 288, a utility hall is 256 and an epic cave is 512.
====TIP: Bug extending NavMesh====
 
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">There's a massive bug that has a 'cult following' of sorts, in that it doesn't seem to be discussed quite so often as most of the other fundamentals of modding, but when you do find a discussion about it, there is an unmistakable fire at work, and it burns with unmatched vitriol.
 
  
It seems that if your plug-in is not a "master file" (.ESM), there's only so much you can do with navmeshes before the game just can't take it and pathing simply breaks.
+
=====Locating Objects=====
 +
Once you get used to building interiors the bulk of the time taken to build a level is spent locating the correct objects in the object window.
  
In my case, I had an interior cell basement with a number of roaches, and they had a very specific 'setpiece' AI.  It all worked perfectly.  Then I built the rest of the area and it still worked.  Finally, when I navmeshed just the adjacent room (extending the same navmesh), I incurred a fully reproducible form of this bug (which takes many forms, though this is my only first-hand experience): everything in the entire space works 100% perfectly -- until I load my save and test it again.  That's right, everything; and the amount of intense scripting and 'scenes' occurring here is extraordinary. But if anything causes the navmesh to be re-encountered again after any attempt to resume the same game session from a previous save point (load my current save, quit to the main menu and then load my save, load another save, or anything that doesn't involve closing the application and relaunching the ".EXE"), the roaches will just idle there, or sometimes run full-speed into the wall or door perpetually and never get where their package is meant to bring them.  Sometimes they'll even teleport as they idle, gradually materialising closer to the Package Target but not quite getting there.  Leaving and returning to the room without loading a save game appears to work fine.
+
Here's some stuff that's not so easy to spot and a few general tips:
 
+
* MINES:
So, I found some information on my trusty Google machine, and decided to try my file as an ".ESM".  Flawless results every time.  So try that.  Just make sure you back up your file.  ".ESP to .ESM" conversions have a bit of quirkiness unless you understand the "rules" pertaining to them. (See [[#Tip-ESMOnly|TIP: When can you use an ESM only mod?]].)
+
:* Active Mines (all variants) are found in the 'Projectiles'. folder. Make them friendly to a faction by adding ownership in the edit box after dropping them into the Render Window.
 
+
:* Inactive mines are found in the 'Weapons' folder.
Making an ESP file into an ESM can solve some problems with spawning actors appearing "jammed up" in a particular spot instead of where you placed them.
+
* TRAPS:
 
+
:* All other traps are found in the 'Activator' folder.
Toggling "ArchiveInvalidation" seems to sometimes clear up an AI package acting buggy when making changes to your navmesh.  However, this will not satisfactorily resolve the problem for your users.
+
:* In FNV GECK look out for the TestTraps cell the editors included which has most of the traps already set out for easy copy/paste.
 
+
:* If you wanna swap a tripwire for a pressure pad or vice versa just use the Ctrl-F function to swap it out after pasting. They are all prefixed by 'traps',
<div style="margin:0px 10px 10px 10px;border:1px solid #00C600;color: lightgray; background-color:#424242;padding:3px;
+
* FLOOR CLUTTER/RUBBISH:
word-wrap: break-word;      /* Internet Explorer 5.5+ */
+
:* [Static Folder]:
">ONAM records are special records created that allow Master files to communicate with one-another when references need to be passed. '''xEdit''' ensures that as part of the "Plugin to Master" conversion process, these ONAM records are built and correctly ordered. This is why it is better to make the "Plugin to Master" conversion using '''xEdit'''.  See the [http://www.creationkit.com/index.php?title=TES5Edit_Documentation TES5Edit Documentation] section on "Converting a Plugin into a Master".
+
::* AssortedPapers01-06
 
+
::* StreetLitter01-02
Summary from a Skyrim discussion:<br>
+
::* Paper01
Basically when an ESP plugin wants to change something in the base game, it either adds a new object, or has an object that shares it's ID with something in one of it's master files. Since the ID is the same as the one in the master, only the one loaded last is used. This is called an '''override'''.
+
::* OfficePaper01
 
+
::* ShackPaperDebris01-05
ESMs cannot normally do '''overrides'''. If they add something that shares the same FormID, you get a collision error. EXCEPT if you have what's known as an ONAM record. Basically this is a small sub-record in the header of the file that tells the game engine: "This ID is overwritten in this file".
+
::* Eyechart
 
+
::* DLC04Sodacup01-02 (FNV & Point Lookout)
Although the CK won't add an ONAM list [but FNVEdit's "MasterUpdate" function will -Editor], you can still ESM'ify by changing the extension to ESM, opening as "Active", then saving. There's no guarantee it'll fix anything w/o an ONAM list though.
+
::* DLC04PopcornBox (FNV & Point Lookout)
 
+
::* DLC04StreetLitter01-02 (FNV & Point Lookout)
The ONAM lists seem to help the engine's object permanence when an ESM overrides its master(s) cell children, ensuring the overrides A) work properly and B) aren't forgotten when they unload. It's a TES4 (header) subrecord (ACHR, NAVM, LAND, REFR, PHZD). ThePitt.ESM was the first Beth plugin to get an ONAM list and every applicable Beth ESM since has one (save for one iteration of Update.ESM). Not sure exactly how it works but, in Oblivion, if one moved something from Oblivion.ESM around with another ESM flagged plugin, the ground would vanish in game. This is most likely why '''Oblivion's Shivering Isles''' was merged in and its ESP was empty.  Currently [2011], the only way to get an ONAM list is with FO3/FNVEdit.
+
::* RorsaschTest01-03 [FNV Only]
 +
::* MS (or quest) Documents (e.g MS15ConstitutionStatic) [FO3 Only]
 +
:* [Movable Static]:
 +
::* DeskPadPlanner
 +
* OFFICE CLUTTER:
 +
:* [Static Folder]:
 +
::* Typewriter
 +
::* TerminalDesk... (several variants)
 +
::* HotelLamp
 +
::* LampGeneric
 +
::* HamRadio01-03 (several variants) [FNV Only]
 +
::* ComputerPart01-06 [FNV Only]
 +
::* Clock01
 +
::* SafeCracked
 +
::* StarburstClock01
 +
:* [Movable Static Folder]:
 +
::* Telephone
 +
::* OfficeFan
 +
::* Globe
 +
:* [Activator]:
 +
::* VintageRadio (several)
 +
* GORE:
 +
:* [Static]:
 +
::* Vault87Blood01-09
 +
::* GorePile01-04
 +
::* RaiderGutsDressing01-08 (FO3 Only)
 +
::* RaiderCorpseDressing01-06
 +
::* FXFlyswarm [FNV Only]
 +
::* NVHeadPike01-06 (FNV Only)
 +
:* [Movable Static]:
 +
::* BrahminRibcage
 +
::* BrahminSkull
 +
::* GoryCorpsePartsTorsos
 +
::* Skull
 +
::* SkullBloody
 +
::* Skeletons (Lots)
 +
::* TIntestine
 +
::* TGoreArmGore01
 +
::* TGoreLegGore01
 +
:* [Misc Items]:
 +
::* BodyPart01-05
 +
::* DeathclawHand
 +
:* [Container]:
 +
::* GoreBags
 +
</div>
  
Note though, ESM's are not 100% immune to navmesh related bugs.
+
====Static Collections====
 +
Others have suggested you might want to add ''static collections''. You can group entire rooms into a static collection, which you can change in game. This makes much easier if you want multiple versions of the same room.
 +
 
 +
However, it is not always a good idea. Making SCOLs that are very large, composed of many different objects, is just bad practice.  SCOLs only help if you're making them out of 2-3 of the same objects, or if all the objects share the same type.
 +
 
 +
For building purposes, yes: It's convenient. But too many SCOLs, especially if they are large, can produce even worse performance than if the statics were by themselves.
 +
 
 +
The beauty of SCOLs is that once they are in place, you can ungroup them. It allows you to make more complicated objects and place them with the intent of splitting them later. One thing that this is useful for is if you were to make an indoor garden. You could put the planter and the plants in the same static collection and make a few template planters.
 +
 
 +
If all the objects share the same textures, then it may be even better to keep them in a static collection (if you use the static collection more then once).
  
You cannot slave an ESM to an ESP; only the other way aroundYou can split an existing ESP into an ESM/ESP pair: as long as the items in the ESP are "non-edits" of the new ESM (things that exist only in the ESP and do not edit anything from the ESM: i.e. "all new content")  Such ESP items will be beginning with "mod index"/form-id 02 when only those two files are loaded. It will translate into loaded save games properly. Any records that go directly into the ESM will be treated as a new mod and reset on first load.</div>
+
=== LOD Generation ===
</div>
+
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 +
* [http://web.archive.org/web/20170713081056/http://www.darkcreations.org/testg/wiki/Category:VWD-OB TESTG: LOD/VWD Overview] Wiki.
 +
* [http://www.nexusmods.com/newvegas/mods/58562/? FNVLODGen/xLODGen] Tool by '''zilav'''.
 +
* [http://www.nexusmods.com/skyrim/mods/60733/? Tree LOD billboard creator for xLODGen] Tool by '''zilav'''.
 +
* [http://wiki.step-project.com/User:EssArrBee/FalloutNewVegas#Running_FNVLODGen S.T.E.P. Fear and Loathing Guide: Running FNVLODGen] by '''EssArrBee'''.
 +
* [http://forums.nexusmods.com/index.php?/topic/234818-blender-read-this-1st/ Blender: Mastering Low-Poly Design for Gaming - YouTube Parts 1-5] Video seriesIndividual links follow:
 +
:* [http://www.youtube.com/watch?v=EHhJwUVX7ZI Blender Gameobject Tutorial 1/5] Video.
 +
:* [http://www.youtube.com/watch?v=Ywk-l6PWs_k Blender Gameobject Tutorial 2/5] Video.
 +
:* [http://www.youtube.com/watch?v=Yv62ET4-Uc4 Blender Gameobject Tutorial 3/5] Video.
 +
:* [http://www.youtube.com/watch?v=doMVhrP2YxY Blender Gameobject Tutorial 4/5] Video.
 +
:* [http://www.youtube.com/watch?v=Vj2SU5I74VI Blender Gameobject Tutorial 5/5] Video.
 +
* [http://www.youtube.com/watch?v=rtO9maU709k BLENDER Tutorial: Low poly forest assets!] Video.
 +
* [http://www.gamesas.com/lod-data-t33037.html Fallout 3 LOD Data] Thread. Includes Object (statics) generation.
 +
* [http://www.truancyfactory.com/tutorials/fallout3/fallout_lod.html Fallout 3 LOD Tutorial] HTML.
 +
* [http://www.gamesas.com/confused-about-lod-object-generation-t51147.html FO3: Confused about LOD Object generation] Thread.
 +
* [http://taleoftwowastelands.com/content/fnvlodgen TTW: FNVLODGen] Thread on differences between FO3 and FNV LOD "trees".
 +
* [http://www.nexusmods.com/newvegas/mods/61315/? Guide: Editing Individual LOD Meshes] Resource collection including tutorials.
 +
* [[Generating_Tree_LOD_FNV/F3|Generating Tree LOD FNV/F3]] Wiki.
 +
* [[LOD_Generation_For_New_Vegas_and_Fallout_3|GECK: LOD Generation For New Vegas and Fallout 3]] Wiki.
 +
* [http://www.nexusmods.com/newvegas/mods/61206/? LOD additions and improvements] Resource mod.
 +
: NOTE: The GECK LOD generation process uses "decimation" to create it's "low polygon meshes" for LOD/VWD.  Please read the TESTG site sub-topic [http://web.archive.org/web/20170713081056/http://www.darkcreations.org/testg/wiki/Category:VWD-OB#The_problem_with_LOD.2FVWD_files The problem with LOD/VWD files] about why this is believed to be less effective than that used in later games such as '''Skyrim'''.
  
<span id="Tip-NavmeshQuickly"></span>
+
<span id="Tip-LODGen"></span>
====TIP: Draw Navmesh Quickly====
+
====TIP '''xLODGen'''====
: Thanks to '''kingbeast88''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">To quickly draw your extended navmesh boundaries:
+
">Even the casual user of the tool '''xLODGen''' should read the [http://web.archive.org/web/20170713081056/http://www.darkcreations.org/testg/wiki/Category:VWD-OB TESTG: LOD/VWD Overview] article and the thread [http://taleoftwowastelands.com/content/fnvlodgen TTW: FNVLODGen] to gain an understanding of what is involvedAmong other things the later thread points out that the "green billboards and trees" are deliberately added by '''xLODGen''' to flag that they are missing textures (sort of like the red "!" to flag missing meshes, but specific to LOD).  '''xLODGen''' lists them in it's log when generating LOD.<br>
* Make your first triangle.  (See any of the above tutorials.)
+
The resulting '''xLODGen.esp''' file needs to remain in your load orderIt should be regenerated whenever you add or remove "background" meshes and textures, as the "load order" affects the "quads" constructed to stitch together the distant view.</div>
* Then hold <Ctrl> and <Right-Click> your mouse at each of the next vertice locationsThe nearest boundary line will automatically redraw to include that vertice.
 
* Press <Tab> when you need to switch sides of the two vertices of the boundary line currently selected to extend in a different direction.
 
</div>
 
  
<span id="Tip-NavMeshBoundaries"></span>
+
=== Misc Topics ===
====TIP: Navmesh Boundaries====
+
Subjects with only a short list of entries, not yet warranting their own section.
: Thanks to '''madmongo''' and '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
+
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
+
 
background-color:#333333;padding:3px;
+
==== ESM and ESP Files ====
word-wrap: break-word;      /* Internet Explorer 5.5+ */
+
'''Master''' Files (those with a ".ESM" extension - e.g. '''Fallout3.esm''') and '''Plugin''' files ("TES files" or "mods" for short - files with a ".ESP" - e.g., '''Fallout3mod.esp''') are the core data files of Bethesda games.  A master file acts as a database of all of the data for the world, including object data, dialogue, game settings, object placements, AI settings, landscape, script commands, cells, etc. The '''GECK''' is the primary tool we use to create, view, and edit master files and plugins for the "Fallout 3" and "Fallout: New Vegas" series.
">NPCs will stray slightly outside the bounds of a navmesh, so you don't have to be super-precise in laying down their boundaries. If you're a bit sloppy the NPCs will still usually manage to figure out how to go where they should.
+
 
 +
(However, not all game data files are '''Master''' and '''Plugin''' files. Textures, meshes, sounds, videos, etc. are all part of the full game. More about these files elsewhere.)
 +
 
 +
'''Master''' files and '''Plugins''' are largely identical in format, but have some important distinctions in practice. The main practical difference is that '''GECK''' will not (natively) create '''Master''' files. Nor will it allow '''Plugin''' files to modify other '''Plugin''' files.  (The '''Extender''' and '''PowerUp''' addons overcome this limitation.)  However, be aware that when you change an ESP to an ESM, you can only do this properly by setting the file header "master" flag in '''xEdit/FNVEdit''' (though now with the '''GECK Extender''' you don't need to change the extension so long as the "master" flag is set) so that the '''ONAM''' record is generated; otherwise overrides to cells will not work.  Additionally references by packages to ''markers'' and other scripted objects need to be '''''persistent''''' or they will not work in an ESM.  See the [http://geckwiki.com/index.php/Category:Data_Files GECK: Data Files] entry for more.
 +
 
 +
It sometimes helps to think of using ".ESM" files to ''add new things'', and ".ESP" files to ''change existing things or modify existing areas''.  Depending on how you create your "ESM", it might not modify existing things in-game. In other words, if there is an existing navmesh, an "ESP" will overwrite that navmesh, but an "ESM" might not. Similarly, if your "ESM" deletes an object (like a rock) it might work as an "ESP" but the rock might still be there as an "ESM".
  
"Off-screen" NPCs do not require any navmeshingAn NPC was set to run his script even when the Player wasn't in the area (meaning: unlike the majority of NPCs, his ''No Low-Level Processing'' box was not ticked in the G.E.C.K.) but without any navmeshing. He acted "funny" when on-screen with the Player, but the game updated his task to "completed" once the Player left the area.
+
It is possible for more than one '''Plugin''' file to ''depend'' upon the same '''Master''' fileThey don't even have to be by the same author.  Such '''Plugins''' are called ''dependencies''.  '''xEdit''' (aka '''FNVEdit''') is the primary tool used to identify and manipulate such "master/dependent" relationships.  (See the wiki article [[Missing_Masters|Missing Masters]].  '''LOOT''' can also detect such dependencies, but not alter them.)  It can also be used to edit the values of specific records, and to create "compatibility" and "merge" patch files.  (See the wiki [[Merged_Plugin_Guidelines_for_Personal_Use|Merged Plugin Guidelines for Personal Use]] article.)
  
If you have a container with items in the area, and the gap between the navmesh and the container is too small, it is at least theoretically possible an NPC in combat might grab a more powerful item from the container.  However such instances should be rare.
+
If you have a problem with navmeshes after converting an ESP to an ESM, the problem likely is the original navmesh was deleted and your edit needs to be changed to an ''override'' (using '''xEdit/FNVEdit'''), then '''refinalized''' in '''GECK'''.  A navmesh in the ESP will also eventually stop working. It is a known bug in the '''Gamebryo Engine''' and was not fixed until later in '''Skyrim''''s life ('''Creator Engine''').
</div>
 
  
<span id="Tip-NavMeshExteriors"></span>
+
<span id="Tip-ESMOnly"></span>
====TIP: Navmeshing Exterior cells====
+
===== TIP When can you use an ESM only mod =====
: Thanks to '''madmongo''', '''EPDGaffney''', and '''kingbeast88''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Most tutorials on "navmeshing" are done in interior cells.  Which means they don't have to deal with "cell boundaries".  However, "exterior navmeshes" DO have to deal with cell boundaries, and this can lead to some confusion.
+
">When creating an ESM there are rules you have to follow so you don't corrupt everything.
  
Outdoor navmeshes work mostly the same as indoor ones, except that the navmesh path can't cross cell boundaries.  However, when the navmesh boundaries are adjacent at the cell boundaries, NPCs can cross between cells.  See the [http://www.youtube.com/watch?v=q2pZmWgJ0FE&feature=youtu.be How to edit pre-existing nav-meshs for an exterior worldspace GECK] Video by '''001cf73''' for the basics.
+
* All ESM plugins start out life as ESP files.
  
When you finalize your outdoor navmesh, it will attempt to link up with the neighboring cell's navmesh. Any line segment along the edge of the navmesh that successfully links to the next cell will turn green. Navmesh vertices (the "node points" the lines align with) will often end up being automatically split by the GECK so that it can match up vertices. If part of the cell border isn't green, then the navmeshes between the two cells in that location aren't linked and NPCs won't cross from one cell to the other properly.
+
* If your mod changes or deletes existing game references, it may not work properly as an ESM.  
  
You don't have to be exact when lining up vertices on your navmesh, but you have to be reasonably close. If your navmesh triangle edges are too far away from the triangle edges in the next cell, the GECK won't be able to match them up. You don't '''have to''' "match vertex for vertex", but if you '''don't''' "match vertex for vertex", what can often happen is that part of the triangle is too far away vertically (Z-axis) from the triangle in the next cell and the GECK refuses to link it.  (You can just lift a navmesh's vertex a bit up (hold <Z> to lock it to the vertical, or Z-axis) to make sure it's above the ground, and then hit <F> like any other object to snap it to the first piece of collision that's directly below the vertex.  But, watch out that you don't drop your vertex onto a piece of virtually invisible light and assume it's on the ground when it isn't.) So "matching vertex for vertex" will generally give you the best results.
+
* Use ESM master files for resources or NPCs. One rule is <span style="color: red; background-color:#fff5f5;">''add'' or ''change'', but don't ''delete''.</span>  You can delete things while you are creating your ESM, but once another mod (ESP or ESM) references records in (i.e. ''depends on'') your first ESM (i.e. treats it as a "master file"), don't ever delete anything out of that ESM or things can go very bad. If you've created a bunch of NPCs and you decide you don't need one, just leave it in the ESM and don't place it anywhere in-game. If it's already placed by the ESP, then set it to ''initially disabled'' and never enable it.
  
If the cell boundary line isn't turning green, delete the navmesh triangles along the cell border and redo them so that the vertices are closer, then finalize your navmesh for that cell again.
+
* Once your mod (as an ESP file) is done: if you then convert it to an ESM using '''FNVedit''' (by toggling the "ESM" field flag of the "File Header") and saving, and YOU DO ABSOLUTELY NOTHING ELSE TO IT, it will work. (That's in caps because it's important).
  
Moving vertices is often not the best way to go about adjusting the navmeshIf you're not careful (or aren't used to 3D modelling or UV-mapping) you can accidentally end up with triangles that have flipped normals and a navmesh for that cell that doesn't work. In which case, you're better off deleting any triangles that go under your addition (e.g. in the referenced video: a house straddling both cells) and then add new triangles to circumscribe the addition (e.g. the house)Remember, any cell that you change the navmesh in needs to be finalized. Just making navmesh triangles isn't enough.
+
* Once you change your ESP into an "ESM" in the ''file header'' of '''FNVEdit''', make sure you change the file extension to ESM to match.  '''FNVEdit''' loads files based upon their extension and timestamp, period. (But other games may ignore those same attributes and load based upon the "plugins.txt" file sequence.) Both '''FNVEdit''' and the game engine don't care about the internal ESM flag on ESP extension files; they get loaded after other ESMs. Fortunately '''LOOT''' does detect such internally flagged ESP files and sorts them with the rest of the actual ESM files. And since version 4 of '''xEdit''', it's "Sort Masters" option automatically matches them to the current "load order"Besides, using a different extension from the purpose of the plugin confuses your customers: the players.
  
Observations:
+
* If you have something like an NPC or an AI package or pretty much anything in an ESM, and something modifies that NPC/package/whatever in another ESP or another ESM, do not ever change the NPC/package/whatever in the original ESM afterwards. That can really corrupt your mod. You'll also save yourself a lot of headaches if you don't modify things in another ESP/ESM. In other words, if you have an NPC defined in an ESM, but then you place the NPC in the game in an ESP, do not modify the original NPC definition (Base-ID form) in the ESP. You can modify your ''reference'' in the ESP all you want. Just don't modify the original NPC definition.  (If that sentence confuses you, please see the [[#GECK_Form-ID,_Base-ID,_Ref-ID,_and_Editor-ID|GECK Form-ID, Base-ID, Ref-ID, and Editor-ID]] section again for the distinctions.)
* Make sure to check your navmesh work from all different angles (that is: rotate it) to be certain it really is the shape you think it is.
 
  
* Apparently there is a '''check cover edges''' button which needs to be pressed before pressing '''finalize''' in all cells affected. So as long as you have no warnings, and have your vertex Z-axis lined up close with your triangle edges touching each other, this will most of the time create a new cell boundary (green) line.
+
* Any NPC you define in an ESP will likely suffer from the infamous "mismatched head/body texture" bug (e.g. a head with one skin texture on a body with a different skin texture). Some people think that all you need to do is edit your INI files and you can fix this bug, but while that works for some mods and people, the solution doesn't work for others. If you don't want your NPCs to have mismatched skin textures, and you want it to be done reliably so it works for everyone, you need to define the NPCs in an ESM, period.  Take the time to plan ahead.
  
: You can occasionally create this "green line" where no boundary was before by using only '''finalize''', but this doesn't seem to be the case when you delete them or make edits that remove the "green line".
+
* If you do modify the NPC in the ESP, do not go back into the ESM and modify it there too, as those changes will get lost. With an NPC it's not so bad, but if you are editing terrain, you can end up with landscape tears and all kinds of texture, navmesh, or world problems. <span style="color: red; background-color:#fff5f5;">Basically, once something in another mod references something from an ESM, consider that "thing" in the ESM as "'''locked'''" and don't touch it again, because if you do touch it you'll break stuff.</span>
  
* Keep your navmesh "triangle" count to 500 or less, at least in exterior cellsIf you exceed that limt, the engine does "weird things" like spawn items randomly that otherwise are not placed there.
+
* Another issue with ESM files relates to how you edit them. It's probably easiest to explain using an example.
 
+
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
* You don't need to draw ''cover'', really. That gets done by the button designated for it on the navmesh ''toolbar''.  Never had a problem with the way the GECK does it automatically.  Haven't really pushed its limits or anything, so don't know how it would do in a really complex room, but think the average navmesh would have adequate cover drawn by the GECK with no input from you afterwards.
+
style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;
 
+
/* Remove the next four 'white-space' lines to restore default white-space processing. */
* You need to navmesh places where AI will go, but don't need to bother with it anywhere that can't have AI in it.  However, remember that the player can have companions, and they will need a navmesh.  You can of course force the player not to bring companions in your mod, but you should probably have a good reason for it.
+
white-space: pre-wrap;      /* css-3 */
 +
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
 +
white-space: -pre-wrap;      /* Opera 4-6 */
 +
white-space: -o-pre-wrap;    /* Opera 7+ */
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Let's say you want to fill in one of the unused homes in Goodsprings. This home in the vanilla files has a static door and boards across the door. You create an ESM which deletes the static door and the boards and adds a real door and an interior cell. All is well. You use '''FNVEdit''' to convert your ESP to an ESM, and all is still well. But then you edit your ESM in the '''GECK''' (using the '''GECK''' '''Extender''' or '''Powerup''' addons, because the vanilla '''GECK''' can't edit ESM files) and all of a sudden the static door and the boards are back, blocking your new real door.
 +
</div>
  
* Note that nothing bad will happen if your companions can't come with you. They'll just wait where the navmesh ends and then teleport to you when you exit the cell if need be.
+
: There are a couple of ways to avoid this problem.
 +
:* One is to only use ESM files for new things, and use ESP files whenever you modify something in the vanilla game, or in another master.
 +
:* The only way known to keep your mod functioning correctly once it's an ESM, is to convert it back to an ESP every time you edit it, and then convert it back to an ESM using '''FNVedit''' when you are done.
 +
:* Another way is to keep a copy of your original ESP for editing, then convert a different copy to ESM for actual use in-game. If you need to make more changes, edit the ESP, then copy and convert to ESM.  (This is the preferable method, as it keeps a backup in case things go wrong.)
 +
 
 +
<div name="Caution" class="boilerplate metadata" id="Missing Links"
 +
style="color: red;background-color: #fdd; margin: 0 1em; padding: 0 10px;
 +
border: 1px solid #aaa;
 +
/* Remove the next four 'white-space' lines to restore default white-space processing. */
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">
 +
CAUTION: You may have heard it's also possible to convert your mod to an ESM using '''TESsnip''' (which was created for '''Oblivion''' files before the '''xEdit''' tool was developed).  Experience teaches us that you should '''never''' ''ever'' use '''TESsnip''' with FO3/FNV: as it can corrupt your mod and ruin your save games and cause all kinds of trouble.  This because it doesn't understand all the file format changes.  You'll get the above corruption bug as soon as you convert your mod to an ESM with '''TESsnip''', regardless of whether you edit the mod later with the '''GECK''' or not. Just the conversion to ESM with '''TESsnip''' is enough to cause the bug to show up.</div>
 +
 
 +
Because of these issues, depending on what you are doing, you might need to have both an ESP and an ESM for your mod.
 +
 
 +
There are plenty of mods that have been released as ESM only. As long as you do it correctly, it's not a problem.
 
</div>
 
</div>
  
<span id="Tip-NavmeshPortal"></span>
+
==== Factions and Reputation ====
====TIP: Navmesh marker for Portal relocates====
+
* [http://www.youtube.com/watch?v=5f-x2ws6ySo GECK: Factions/Reputation] Video.
: Thanks to '''chucksteel''' and '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
==== GIMP Posters and Images ====
 +
* [[Gimp_create_old_weathered_posters_and_other_images|Gimp: create old weathered posters and other images]] Wiki.
 +
<span id="HowToSection"></span>
 +
==== How to ''do something'' ====
 +
<span id="HowToAddLoadingScreens"></span>
 +
===== How to add '''''Loading Screens''''' =====
 +
: Thanks to '''jessesDRpepper''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">After editing a navmesh, the green triangle that indicates a portal appears ... not under the door, nor near the marker, but in some completely random location. What gives?  Is this a problem?
+
">How do you go about adding your own "loading screen" content to the game?  You know: the images behind the "splash screen" that appear as the game or the main menu or while your "save game" file is loading.
  
Nothing is wrongThe portal will function properly, allowing followers and NPCs to use it correctly.  The "green triangle" only confirms the connection and does not need to always be under the portal marker itself. The player and NPC's will always spawn properly on the portal marker regardless of where the navmesh green triangle is located.
+
In concept they are simple "texture files" saved as DDS images in DXT1 format.  But getting them to be used by the game is not well documentedFortunately now there is the mod [https://www.nexusmods.com/newvegas/mods/69078 DIY Load Screens] (by '''DullCandle29'''), an ESP file which, to use it's own words, provides an:
 
+
<blockquote>
This seems to only happen if you create a navmesh, save the mod, then edit it later.  If it really bugs you, then you can delete the entire navmesh for the cell and re-do it. No big deal for a small simple cell, but probably not something you want to do for a very complex navmesh in a large cell.
+
Empty template to "add" your own load screens. Not a replacer, nor a wallpaper collection. Simple step by step tutorials for how to do things are in the description. Optional example images provided.
 +
This mod will let you "add" (not replace) up to 1,199 additional loadscreens for you to personalize your loading experience.  
 +
</blockquote>
 
</div>
 
</div>
  
=== NifSkope (Mesh Editor) ===
+
<span id="Tip-GMSTs"></span>
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
===== How to change '''''Game Settings''' aka '''GMSTs''''' =====
* [http://www.youtube.com/watch?v=BvitRKEa1X0 How To Rotate A Mesh In Nifskope] 2 minute video by Zylice Liddell.
+
: Thanks to '''punchbattle''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
* [http://www.nexusmods.com/newvegas/mods/56009/? Jokerine's Misc Resources Tutorials and Novac Bungalow: NifSkope Texture Paths by Jokerine] Mod PDF.
 
* [http://www.nexusmods.com/newvegas/mods/64746 NIF tangents and binormals updater] Command line tool to batch update tangents/binormals.
 
* [http://niftools.sourceforge.net/wiki/NifSkope NifSkope Wiki] Wiki.
 
* [http://forums.nexusmods.com/index.php?/topic/984792-tutorial-working-with-the-nicontrollermanager/ NifSkope: Working with the NiControllerManager] Forum Thread.  Alternate images available [http://www.mediafire.com/file/p0srsyrfuaszevp/Tutorial.zip here].
 
* [http://www.nexusmods.com/newvegas/mods/45444/? Tutorials on Screenshots, NifSkope, Outfit creation and Posing by jonas opines] Mod.
 
* [http://www.nexusmods.com/newvegas/mods/63770/? Nifskope Testing Skeleton] by clanky4. Mod for testing animations in NifSkope only.
 
 
 
<span id="Tip-ModelMashups"></span>
 
==== TIP: Merging parts from different source files in NifSkope ====
 
: Thanks to '''madmongo''' and '''M48A5''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Sometimes you want to "mash up" parts of mesh (and texture) files from different sources.  You might think to export parts of models from the source files as "*.OBJ" files, and then import them into your "*.NIF" files as "*.OBJ" in NifSkopeThis is not how this is usually done, and will generally produce "array Shader Textures are invalid" and "device position incorrect after block number ##" errors. These are caused by missing ''BSShaderPPLightingProperty'' entries, and thus no ''BSShaderTextureSet''.
+
">As one might expect, the game has many variables it uses in various functions and algorithmsWhere are these and how can you change them?  They can be altered using either [http://www.nexusmods.com/newvegas/mods/34703/? xEdit/FNVEdit] (freeware) to edit '''GMST''' records or the '''GECK''' to change "Game Settings".
  
Generally speaking: "*.OBJ" files are for use importing into Blender, and should be exported as "*.NIF" files to work in NifSkopeBlender is a much better tool for this sort of thing.
+
Example: Change "decapitation rates".
 +
Making your own mod file:
 +
# Open the '''GECK''', then go to the upper left menu and click "File | Data..."
 +
# A list of ".ESM" files should pop up. Check the box next to '''FalloutNV.esm''' and uncheck any other box that might be checked(If this is an annoying problem with the DLCS, please see [[#Issue_-_GECK_does_not_automatically_select_FalloutNV_or_some_DLC_ESM_file|Issue - GECK does not automatically select FalloutNV or some DLC ESM file]].)
 +
# Highlight FalloutNV.esm, then click "Set as Active File", and press OK
 +
# Once it's done loading up, you should be ready to start editing!
 +
[But first: change the filename to "make it your own".]
  
When moving '''parts''' of meshes between "*.NIF" files in NifSkope, use the "Copy Branch" and "Paste Branch" functions.
+
Editing '''Game Settings''' in the '''GECK''':
 +
# Click "Gameplay | Settings...".
 +
# A window should pop up with a long list of game variables. You can type things into the '''Filter''' field to see specific variables.
  
'''NifSkope''' does not display ''textures'' from BSAs by default.  You have to point '''NifSkope''' to the BSA files location in it's settings.  In the '''NifSkope''' UI, left click "Options".  In the drop down menu, choose "Settings | Resources".  In the panel that opens, you will have to add the path to the BSAs. It should be the complete path, starting with the drive letter.  When you open "Resources" you should see a complete path to (and including) the "Data" folder.  If not, click on "Auto detect game path".
+
These are the ones you're looking for in this example:
 +
* '''iCombatDismemberPartChance'''
 +
* '''iMessCrippledLimbExplodeBonus'''
 +
* '''iMessIntactLimbDismemberChance'''
 +
* '''iMessIntactLimbExplodeBonus'''
 +
* '''iMessTargetedLimbExplodeBonus'''
 +
* '''iMessTorsoExplodeChance'''
  
When using ''custom textures'', you need to set the texture ''relative path'' to the '''loose file''' in the NIF with '''NifSkope'''. This is done under ''BSShaderPPLightingProperty/BSShaderTextureSet''.  ("Relative" meaning the path starts BELOW the game "Data" folder: as in "textures\<some sub-folder>\<some filename>.dds".  No drive letters or any path above "textures\"; without even "Data\".  See the wiki article [[How_to_fix_hard-coded_texture_paths_in_NIF_files|How to fix hard-coded texture paths in NIF files]] for specific instructions.)
+
It is believed that '''iCombatDismemberPartChance''' is the base chance a limb will ''dismember'', and the '''iMess...''' values kick in if you have the ''Bloody Mess'' perk. Just put in whatever values you think feel right, and see how things go. It may take a couple of tweaks before you get it exactly where you want it to be.
 
</div>
 
</div>
  
<span id="Tip-ModelLighting"></span>
+
<span id="HowToChallenge"></span>
 +
===== How to create '''''a challenge''''' =====
 +
* [[How_to_create_a_challenge|How to create a challenge]] Wiki.
 +
 
 +
<span id="HowToMessage"></span>
 +
===== How to create '''''a message''''' =====
 +
* [[How_to_create_a_message|How to create a message]] Wiki.
 +
 
 +
<span id="HowToPerk"></span>
 +
===== How to create '''''a perk''''' =====
 +
* [http://youtu.be/BLRFMVQkpFQ GECK Tutorial - Perk (Ability)] Video by '''Seddon4494'''.
 +
* [http://youtu.be/62bHp1_PIdk GECK Tutorial - Perk (Entry Point)] Video by '''Seddon4494'''.
 +
* [[How_to_create_a_perk|How to create a perk]] Wiki article.
 +
 
 +
<span id="HowToPrimative"></span>
 +
===== How to create a '''''Primative'' - activators, trigger volumes, multibounds, and occlusion planes''' =====
 +
* [http://geck.bethsoft.com/index.php?title=Creating_Primitives How to create a Primative (activators, trigger volumes, multibounds, and occlusion planes)] Wiki.
  
====TIP: Model Lighting====
+
<span id="Tip-InteriorOcclusion"></span>
: Thanks to '''EPDGaffney''' and '''pixelhate''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
====== Tip Interior Occlusion problem ======
 +
: Thanks to '''FiftyTify''', '''Radioactivelad''', and '''placeholderthesteam''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following.
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Q: When you change the texture of an item with the GECK it always ends up different then the ground texture even if it's using the same texture.  Why?  Example: railroad tracks roadbed and ballast is always different than the surrounding terrain.
+
">Problem: Everything looks fine in the editor, but in game there's a really weird occlusion issue where the room isn't drawn when looking into it; and when inside only some parts of the room appear depending on where you stand and where you're looking.
  
A: The model determines the lighting in this game. I'm asking, in the vanilla game was it seamless? I don't mean the 2D ".dds" texture file; I'm asking, did it look seamless in-game?  [No, it doesn't.]
+
This is the result of a feature called a [http://geckwiki.com/index.php?title=Room_Bounds_and_Portal_Basics Room Bound]; It's for performance optimization.
  
(For any unfamiliar graphics related terms, please see the [http://www.darkcreations.org/testg/wiki/Glossary TESTG Glossary].)
+
NOTE: You may need to enable the '''GECK''' "View" menu "Show/Hide" option to "show" additional options before you will see the "Portals and Rooms" option, which is usually hidden away.
  
So, the way it works is an object is lit dependent upon several factors.  The first is the ''normal map'' and its ''alpha channel''.  Obviously, you're telling me these are all the same texture, so that's not the problem here but it is certainly something to be aware of.  The ''normal map'' behaves as you expect, and its ''alpha channel'' is used as the ''specular map''.  Generally, you want that ''specular map'' to be mostly dark, down to drawing distinctly different effects in-game from a portion of a ''specular map'' that is 5% bright and 8% bright, for example (that is, 0% is pitch black, and bringing the RGB values all up 5% from 0 is 5%).
+
There's a couple of ways to correct this:
  
Now, be aware that the ''specular map'' is manipulated in '''NifSkope''' but its effects are completely ignored visually until you see it in the GECK or the game, though the GECK usually doesn't display it accurately to the way it will look in-game.
+
* Resize the existing Room Bound to include the new section of your room. (May not be ideal depending on where it is.)
 +
* Add a new Room Bound for your new Room and attach a Portal between it and the existing Room Bound.
 +
* Regenerate the portals, which handles the occlusion culling via visibility of large proxy cubes.
  
So, now that the basics are out of the way, the rest of the lighting stuff is determined per model in '''NifSkope'''.  Open your train tracks model in '''NifSkope''' (located in ''Meshes\dungeons\metro\exterior''), and click on the dirt portion: [[File:EPDGaffney_TrainTracks_Fig01.png|thumbnail|100px|TrainTracks_Fig-01]](See '''TrainTracks_Fig-01'''.  {{Thumbnail_enlargement_message}})
+
It might happen that a "Room Bound" on one side extends slightly into the room in question, and one portal alone is not sufficientIn this case, placing another portal perpendicular to the troublesome one may fix it.
<br>
 
This tells you quickly and easily which ''NiTriStrips'' it is.  Expand that and go to the ''NiMaterialProperty'' node that is attached to the ''NiTriStrips'' for the dirt: [[File:EPDGaffney_TrainTracks_Fig02.png|thumbnail|100px|TrainTracks_Fig-02]] (See '''TrainTracks_Fig-02'''.  {{Thumbnail_enlargement_message}})
 
<br>
 
The ''Specular'' and ''Emissive'' both have an effect but it's really the ''Glossiness'' entry that's likely to have the effect you're looking for.  It will take a good bit of trial and error.
 
<br>
 
Other things that can have an effect are the ''Shader'' flags: [[File:EPDGaffney_TrainTracks_Fig03.png|thumbnail|100px|TrainTracks_Fig-03]] (See '''TrainTracks_Fig-03'''.  {{Thumbnail_enlargement_message}})
 
<br>
 
and though not in this case (unless the terrain model has it), other texture slots besides the ''diffuse'' and ''normal maps'': [[File:EPDGaffney_TrainTracks_Fig04.png|thumbnail|100px|TrainTracks_Fig-04]] (See '''TrainTracks_Fig-04'''.  {{Thumbnail_enlargement_message}})
 
<br>
 
The ''NiTristripsData'' can also have vertices colored (used for shading purpose). If that's the case, that part will always look darker no matter what changes are made in the previous settings.
 
 
 
However, looking at images of the vanilla [railroad track] graphics, I think they just did their ''UV maps'' in a way that makes the textures look more cohesive just where they meet, perhaps, but they definitely aren't seamless, at least in the screenshots I'm seeing.
 
 
</div>
 
</div>
  
<span id="Tip-RotateMesh"></span>
+
<span id="Tip-TransparentActivators"></span>
====TIP: Rotate Mesh====
 
: Summary from [http://www.youtube.com/watch?v=BvitRKEa1X0 How To Rotate A Mesh In Nifskope]
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520; color: lightgray; background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">
 
:* < Right-click > the object in the '''NifSkope''' "viewport", then "transform | edit | R (rotate in +/- 1-180 degrees)".
 
:* After you have it positioned correctly: < Right-click >, "transform | apply".
 
</div>
 
  
<span id="Tip-ShinyLines"></span>
+
====== Tip Transparent Activators ======
==== TIP: Shiny lines in exported NIF normal map ====
+
: Thanks to '''EPDGaffney''' and '''pixelhate''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
: Thanks to '''TzeHuen''', '''pixelhate''', and '''KiCHo666''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">The [http://www.nexusmods.com/newvegas/mods/64746 NIF tangents and binormals updater] command line tool does a better job than NifSkope to fix this problem, and can do batch jobsBut it can also be resolved manually in NifSkope by:
+
">Sometimes you want an activation prompt based on scripting conditions, not proximity. You need the mesh to be there; but not the texture. Activators require the collision and the mesh to be under the reticle to be activated, but the texture apparently doesn't need to be visible.  That might be an ''invisible texture'' or the ''null texture set''Any texture would work (like a 4x4 saved as DXT1 format); so it doesn't need to be transparent (DXT5).  Just bring the Alpha of the ''NiMaterialProperty'' to 0.
* Make a copy of your mesh for this test.
+
 
* Open the test NIF in NifSkope and select the ''NiTriStrips'',
+
Caution: Some have had the ''null texture set'' not work for manual activation, but a ''fully transparent'' texture did.
* <right click> and select "Face Normal" then "Smooth Normals".
+
 
: If the shiny lines disappear, then they are  mesh related and probably due to the export settings from your 3D program.
+
To add an ''Editor Marker'' to a mesh NIF (easier to spot and move in GECK) it must have the following structure (nomenclature has to be respected):
* If that doesn't resolve the problem, then select "update tangent space".
+
* A ''NiNiode'' named "EditorMarker" containing a ''NiTriStrips'' named "EditorMarker:0"
 +
* The ''Shader'' of the ''NiTriStrips'' must be a ''BSShaderNoLightingProperty'' with ''SF_VertexAlpha'' ticked.
 +
* The ''Color'' of the marker is changed by altering the ''Vertex Colors'' in the ''NiTriStripData''.
 +
* ''Bit 5'' (Editor Marker Present) has to be ticked in the ''BSXFlags''.
 
</div>
 
</div>
  
=== Scripting ===
+
<span id="HowToIcon"></span>
Other sections have relevant information to this subjectThe following "Tips" in particular are applicable.
+
=====  How to make '''''a working pipboy icon''''''' =====
 +
* [http://www.nexusmods.com/newvegas/mods/65589?tab=description FNV Icon Tutorial - How to make icons with Inkscape] PDF and resources by '''ZuTheSkunk''''''Inkscape''' is linked in the [[#Image_Tools|Image Tools]] portion of the [[#Programs_and_Tools|Programs and Tools]] section.
 +
* [[How_to_make_a_working_pipboy_icon|How to make a working pipboy icon]] Wiki.
  
* See the [[#Custom NPCs|Custom NPCs]] section regarding scripting "AI Packages".
+
<span id="Tip-PipboyIcons"></span>
:* [[#Tip-GetDistance|TIP: AI Packages and Distance.]]
+
======  Tip Pipboy Icons ======
:* [[#TIP-CompanionWheel|TIP: Companion Wheel.]]
+
: Thanks to '''Leakingroof''' of the Nexus Fallout3 forum for the wiki article, and '''scrivener07''' of the New Vegas Mod Talk forum for the basis of the following:
:* [[#Tip-Hostility|TIP: Hostility between NPCs.]]
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
:* [[#Tip-NPCMovement|TIP: Making NPCs move (aka "AI Packages").]]
+
style="margin:0px 10px 10px 50px;border:1px dashed #DAA520;color: lightgray;
:* [[#Tip-CompanionPerks|TIP: Perks for Companions.]]
+
background-color:#333333;padding:3px;
:* [[#TIP-AIPackages|TIP: Using AI Packages.]]
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">To edit an existing "Pipboy Icon" you will have to extract the default icon out of the vanilla "Fallout - Textures2.BSA" or mod file, and then move it to somewhere under the "Textures" folder in your data folder: such as "Data\Textures\interface\icons\<category>". Don't forget the "Message Icon" as well.  (This is the icon that is used outside of the inventory.) It will most likely be named the same but with "glow_" prefixed on the front and located under other sub-folders of the "interface\icons\<category>" folder. The "<category>" may be "message icons", "pipboyimages_small", or "typeicons", etc.
  
* See the [[#Dialogue & Lip-synch|Dialogue & Lip-synch]] section regarding scripting "Dialogue" and "Conversations"
+
Edit your replacement or create a new icon.  The key to a functional Pipboy Icon is that the simple "white" image on a transparent background goes into the "alpha channel", has a square cropped size of a power of 2 (e.g. 256x256 pixels), and is saved as a DXT3 format DDS file. The resulting saved file should be exactly 65,664 bytes and placed in the appropriate "textures\interface\icons\pipboyimages\<category>" sub-folder. (The icon color when displayed is controlled by the HUD color for the Pipboy.) See the Nexus wiki article [[How_to_make_a_working_pipboy_icon|How to make a working pipboy icon]] for details.
:* [[#Tip-Translators|TIP: Conversation/Quest system.]]
 
:* [[#TIP-GetSpeaker|TIP: Get the current speaker reference.]]
 
:* [[#Tip-OCE|TIP: Obsidian Conversation Editor (OCE).]]
 
:* [[#TIP-RandomNPCcomments|Tip: Random NPC Comments.]]
 
:* [[#Tip-DialogTabs|TIP: Standard Dialog.]]
 
  
Refer back to the section [[#GECK_Form-ID,_Base-ID,_Ref-ID,_and_Editor-ID|GECK Form-ID, Base-ID, Ref-ID, and Editor-ID]] as necessary until the different types of "IDs" become second nature. The distinctions are crucial to getting various script functions to work correctly. They will primarily work with either ''Editor-ID'' or ''Reference-ID'' valuesThey seldom work with both, but if so the syntax must be read carefully to determine which type of value is used for each parameter.
+
To replace an existing icon: open the '''GECK''' and start a fresh new ESP mod. Name it something to distinguish it from the original like "<original item> - Icon Patch". Open the item in question and click the edit button and navigate to "Data\Textures\interface\icons\<category>" containing the new pipboy icon file and load that icon and the "Message Icon" in and save the mod. Load this "<original item> - Icon Patch" plugin in your game "load order" right after the "<original item>" plugin and it should overwrite the previous icon and you won't loose your tweaks if you ever want to update the original mod(You can merge both the original and the patch plugins if you know how.)  If you want to share this patch on the nexus you would upload the ".ESP" and the textures using the exact file structure you used.  See the mod [http://www.nexusmods.com/newvegas/mods/34737/? Misc Item Icons - New Vegas] as an example of a plugin containing only icons to replace the use of the generic "scrap metal" icon for certain misc. items.
 +
</div>
  
Even if you have another favorite text editor, strongly suggest using '''Notepad++''' along with the GECK specific syntax highlighters listed in the [[#Programs_and_Tools|Programs and Tools]] section.  These will catch most syntax errors, saving you a lot of grief.
+
<span id="HowToMoveNPC"></span>
 
+
===== How to '''''Move a Quest NPC''''' =====
There are 3 kinds of scripts:
+
: Thanks to '''madmongo''' and '''kingbeast88''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
* The default when creating one is an ''Object'' script.  Which means this is a script that can be attached to anything in the ''object tree'' of GECK that has a "script" drop down field ... except for ''Quests'' and ''Base Effects''.
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
* ''Quests'' require you to select the script as a "Quest" type.  They are called (triggered) by various "Quest" conditions.
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
* ''Base Effects'' require you to select the script as an "Effect" type, available when you are on the window with the "Script" drop down listOnly those type of scripts will show up in the list.
+
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">If you go to move an NPC (typically a "named" one) to another cell and are warned by the GECK they are part of a quest, you need to stop and check what is going to get broken if you proceed.  Check what references them in the GECK (e.g. Scripts, Packages, Linked Markers, etc.)If any of those reference the NPC's location, you will need to update them with your new location for that NPC.
  
''Effect'' scripts attach on "Assoc Item" just below "Effect Archetype".  But ''Object'' and ''Quest'' scripts are straight forward on where to attach the script: to "Objects" or "Quests" respectively.
+
When you do move the NPC, be sure to "<Ctrl+C>" and "<Ctrl+M>".
 +
</div>
  
Reference variables must be "defined" and assigned a value before they can be used in a command.  This often occurs in one of the script types that are executed before the one you are looking at in the moment.  But don't assume they are: verify if your script won't save.
+
==== Import Custom Videos ====
 +
* [[Importing_custom_videos_into_FNV/F3/Skyrim/Oblivion|Importing custom videos into FNV/F3/Skyrim/Oblivion]] Wiki.
  
So in short: creating a script & saving it (which "compiles" it; turning it into actual code instead of "human readable" instructions) is required for it to then exist.  If a script fails to compile, then it won't be saved.  Use '''CIPCIS''' to determine if it is a simple syntax error preventing your script from compiling.  But bear in mind '''CIPCIS''' is not aware of "script extender" syntax, so such will produce as error as an unrecognized command.  Otherwise the problem is most likely either using an inappropriate command choice or the wrong type of value for the function in question.
+
==== Item Creation and placement ====
 +
* [[Item_creation_and_placement|Item creation and placement]] Wiki.
  
But merely existing in a saved/compiled form means nothing towards having that script tell the game engine what to do.  You must attach it to something (based upon which one of the 3 types it is) to then have the script code interact with the other dynamic game code.
+
==== Make Readius Screenglares ====
 +
* [[Making_Pipboy_Readius_screenglares|Making Pipboy Readius screenglares]] Wiki.
  
* [http://www.nexusmods.com/newvegas/mods/64888/? GECK Extender] NVSE Plugin.  Project to extend GECK functionality and bug fixes.  Compatible with all NVSE script extender plugins.  <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: red; background-color:#fff5f5;padding:3px;
+
<span id="Tip-NewMarkers"></span>
word-wrap: break-word;      /* Internet Explorer 5.5+ */
+
==== Markers ====
">(Do not use together with '''GECK Powerup''' (nor the '''Forked''' version), which it replaces.)</span>
+
* [http://geck.bethsoft.com/index.php?title=Markers GECK: Markers] Wiki.
* [http://www.nexusmods.com/newvegas/mods/41642/? GECK 1.4 Powerup Mod]. Comes in a "standalone" version for the "vanilla" GECK functions, and one for GECK with NVSE functions. It fixes and improves some issues while providing the missing messages when the GECK compiler finds an error or warning, and lets you save a script without compiling it. Considered "essential" by experienced mod creators.  <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: red; background-color:#fff5f5;padding:3px;
+
* [http://fallout.wikia.com/wiki/Dummy_Cell_for_Scripted_XMarkers Dummy Cell for Scripted XMarkers] Wiki.
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">(Replaced by '''GECK Extender'''.  Do not use both together.)</span>
 
* [http://www.cipscis.com/fallout/tutorials/beginners.aspx CIPSCIS: Scripting for Beginners] HTML Tutorial.  Does not support "script extender" syntax.
 
* [http://code.tutsplus.com/tutorials/top-15-best-practices-for-writing-super-readable-code--net-8118 Top 15 Best Practices for Writing Super Readable Code] HTML.
 
 
 
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 
* [http://geck.foesmm.org/index.php/Category:Conditions GECK Category: Conditions] Wiki.
 
* [http://geck.technodeep.net/index.php/Category:Tutorials GECK Category: Tutorials page] Wiki.
 
* [http://geck.foesmm.org/index.php/Adding_an_Options_Menu GECK: Adding an Options Menu Tutorial]
 
* [http://geck.technodeep.net/index.php/Bethsoft_Tutorial_Basic_Quest GECK: Bethsoft Tutorial Basic Quest]
 
* [http://www.nexusmods.com/newvegas/mods/45278/? GECK: Companion by Caprius] Mod.
 
* [http://geck.foesmm.org/index.php/List_of_Global_Variables GECK: Global Variable]
 
* [http://youtu.be/3Bauvvmo31g GECK: Making a Counter by Seddon4494] (for tracking scripts.) Video.
 
* [http://geck.technodeep.net/index.php/Notes GECK: Notes]
 
* [http://www.youtube.com/watch?v=zDE4yHOz0cQ GECK: Script to Spawn/Enable NPCs at a Certain Time] Video.
 
* [http://geck.technodeep.net/index.php/Scripting_for_Beginners GECK: Scripting for Beginners] Wiki.
 
* [http://www.youtube.com/watch?v=APnz-qdQxfQ Tutorial - Scripting Notes] Video by '''Seddon4494'''.
 
* [http://www.youtube.com/watch?v=RLrV-R_0hnY Making something happen every day] Video by '''Seddon4494'''.
 
* [http://www.nexusmods.com/newvegas/mods/62777/? Unlocked MCM - Advanced MCM script templates] Mod by '''DoctaSax'''.
 
* [http://nvse.silverlock.org/ New Vegas Script Extender (NVSE)] Site.
 
:* [http://www.gribbleshnibit.com/projects/NVSEDocs/# NVSE Documentation] by gribbleshnibit.
 
:* [http://geck.bethsoft.com/index.php?title=MessageBoxEx NVSE MessageBoxEx function] Wiki.
 
:* [http://geck.foesmm.org/index.php/Con_SCOF NVSE: Con_SCOF]
 
:* [http://geck.foesmm.org/index.php/Debug_Dumps NVSE: Debug Dumps]
 
:* [http://www.cipscis.com/fallout/tutorials/detecting_keypresses.aspx NVSE: Detecting Keypresses] Wiki.
 
:* [http://geck.foesmm.org/index.php/SetDebugMode NVSE: SetDebugMode]
 
* [http://fallout.gamepedia.com/Pip-Boy_3000 Pipboy Tabs]
 
* [http://cs.elderscrolls.com/index.php?title=Performance_Problems TES: Script Performance Problems] TES Construction Set Wiki. Some things on this site are obsolete information as regards the GECK.
 
* [http://www.nexusmods.com/newvegas/mods/63880/? Timescale Pacemaker]
 
* The following tutorials are found on an "Adult (18+) Only Access" site.
 
:* [http://www.loverslab.com/topic/33181-scripting-in-fallout-new-vegas-for-dummies/ Scripting in Fallout New Vegas for Dummies] by tomm434.
 
:* [http://www.loverslab.com/topic/4320-fallout-new-vegas-geck-scripting-help-101/ Fallout New Vegas GECK & Scripting Help 101] Thread.
 
:* [http://www.loverslab.com/topic/26749-tutorial-nvse4-part-1-syntax-and-expressions/ NVSE4+: Syntax and Expressions - Part 1] by DoctaSax.
 
:* [http://www.loverslab.com/topic/26802-tutorial-nvse4-part-2-user-defined-functions-udfs/ NVSE4+: User Defined Functions (UDFs) - Part 2] by DoctaSax.
 
:* [http://www.loverslab.com/topic/26963-tutorial-nvse4-part-3-string-variables/ NVSE4+: String Variables - Part 3] by DoctaSax.
 
:* [http://www.loverslab.com/topic/27076-tutorial-nvse4-part-4-array-variables/ NVSE4+: Array Variables] by DoctaSax.
 
:* [http://www.loverslab.com/topic/39417-tutorial-nvse4-part-5-event-handlers-user-defined-events-udes/ NVSE4+: Event Handlers & User-Defined Events (UDEs) - Part 5] by DoctaSax.
 
:* [http://www.loverslab.com/topic/22270-fnv-scripting-nx-variables/?hl=nvse4 FNV Scripting: NX Variables] by DoctaSax.
 
 
 
==== '''TIP: Best Practice - Do not begin Editor-IDs with numbers.''' ====
 
<span style="color: red; background-color:#fff5f5;" id="TIP-EditorIDNames"></span>
 
: Thanks to '''madmongo''' and '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">You don't need to make a new XMarker object. Just drag the existing XMarker static object into the GECK "Render Window" and it makes a new reference to that object.  (Look over to the right of the object field a bit and you will see a count of "uses".  It's used everywhere and you can use it too.) Then if you need to use and reference ''your marker'' in some way, you can double click the one you just placed in the render window and edit it's information to distinguish it from all others (for example, for the Edit-ID you might put "xMyModMarker", then later in a Script or AI Package or what not, use that Edit-ID for reference).
The GECK confuses Editor-IDs, script names, and variable names that begin with numbers for Form-IDsThey are not the same and scripts will fail to compile with (if using the GECK Power-Up plugin) messages to the effect it can't find the (perfectly valid) command.  It's "best practice" to avoid prefixing anything with numbersDo use a consistent naming convention, such as beginning Editor-IDs and variables with the initials of the mod, so they are grouped together in the GECK's lists by type making it easier to locate them for editing later.
 
  
When you create Forms for your mod, the GECK assigns them Form-IDs in sequence. This means in the "Object Window" right-hand pane, you can expand the (collapsed by default) column between the "Editor ID" and "Count" field labels so it shows the "Form-ID"You can <Click> on that field label to sort them.  As your mod will likely have the last "mod index" of those currently loaded, your forms will be sorted to the top when sorted into "descending" order.
+
The base Form-ID is blocked from view by the game engine. When you made a new one, it automatically assigns a new Form-ID. That is not blocked by the game engine from being viewed in gameIts the same way with all the markers in the game.</div>
</div>
 
  
<span id="Tip-Encapsulation"></span>
+
<span id="Tip-PortableMarkers"></span>
==== TIP: Best Practice - Encapsulation - Parens, Brackets, and Braces ====
+
===== TIP Portable xMarkers =====
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Do not get careless when choosing how you "group" ([http://geck.technodeep.net/index.php/Encapsulation Encapsulate]) expressions in FNV scripting.  For instance, some functions need to be "encapsulated" using "(parentheses)", aka 'parens', in order to return a single value.  "Parens" around complete expressions are almost always not harmful and can help the line parser in determining the order in which to process multiple expression combinations on the same line(See [http://geck.technodeep.net/index.php/NVSE_Expressions NVSE Expressions] on operator precedence and overriding the default precedence.)  However, "[square brackets]" are exclusively used for handling arrays and NVSE string vars.  "{Curly Braces}" encapsulate a function as an argument to another function. (i.e. ''"if eval (somefunc <span style="color: red;">'''{'''</span>someotherfunc arg1 arg2<span style="color: red;">'''}'''</span> arg3)"'' )Mixing up their use can allow a script to compile, but fail the first time it is runTheir different uses can often be easily overlooked when trying to determine why things are going wrong. Best practice is to use "parens" unless you know you need to use something else.
+
">Suppose you want an NPC's "home" to be changeable to a new locationYou can either place different xMarkers at the potential sites, or use a "creature" that is initially "disabled" for your MarkerStatic objects like the default XMarker object cannot be moved, but a "persistent creature" set as a "quest object" can be moved and assigned as a "marker"Then drop the "marker/creature" in the new "home" cell. "Creature" positions are always updated in the game, whereas static objects are not, so you don't need to use the "enable/disable" trick to update their locationYou then assign a "GoHome" travel AI Package to the marker as it's destination, and another "sandbox behavior" AI Package to let it wander the immediate area of the markerSee the wiki article [http://geckwiki.com/index.php?title=Bethsoft_Tutorial_NPC_population GECK: Bethsoft Tutorial NPC population].</div>
</div>
 
  
<span id="Tip-FunctionParameters"></span>
+
<span id="NVSEPlugins"></span>
==== TIP: Best Practice - Function parameter separation with commas ====
+
==== NVSE Plugins ====
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
Unfortunately there is neither documentation nor tutorials on creating an NVSE Plugin.  The only advice is to use the older, freeware '''IDA 5.0 Disassembler''' by [http://www.hex-rays.com/products/decompiler/ Hex-Rays] for 32-bit executables, which is hosted on the [http://www.scummvm.org/news/20180331/ ScummVM] site, and your knowledge of "C-like" programming languages.  From that page:
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
+
<blockquote>
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
+
    A recent discussion [Mar 2018] about the most recent IDA Disassembler freeware 7.0 revealed that it no longer supports disassembling older DOS and Windows executables. This is obviously a problem for potential contributors, as well as potential GSoC students wanting to reverse engineer an old adventure game or RPG for their project. The obvious solution is to provide an earlier freeware version that still supports them.
background-color:#333333;padding:3px;
+
    Consulting with Hex-Rays, they're kindly consented for us to host one of the earlier IDA freeware versions, for those in the future who wish to use it.
word-wrap: break-word;      /* Internet Explorer 5.5+ */
+
</blockquote>
">Some people are under the impression that the use of commas on script functions causes errors.<br>
+
 
Using commas to separate function parameters is actually preferable, especially when you use advanced NVSE scripting (CO, arrays, UDFs with dynamically constructed parameters in the call line). Much like extensive use of parentheses, it not only keeps things more readable for yourself, but prevents errors at compile or at run time. It isn't usually needed for simple code, but it's a good practice to get into for when it is needed, so let's please not advise against doing it.</div>
+
==== PAINTdotNET ''Normal Maps'' ====
 +
* [http://tesalliance.org/forums/index.php?/tutorials/article/119-graphic-artistry-normal-maps-in-paintnet/ Graphic Artistry: Normal Maps in Paint.Net] Tutorial.
 +
 
 +
==== Recipes ====
 +
* [http://youtu.be/-jDloCLWFYc GECK: Making a Recipe] Video.
 +
 
 +
==== UV Mapping ====
 +
* [[UV_Mapping:_An_Explanation|UV Mapping: An Explanation]] Wiki.
 +
* [[Making_square_UV_maps_in_Blender|UV Mapping: Making square UV maps in Blender]] Wiki.
 +
 
 +
==== XML ====
 +
XML is a "data definition" structure, based upon a "data schema" which was defined by Bethesda.  They didn't publish their "schema", but some things have been learned about it.  However, without a published scheme, you must either use only elements found in other XML files, or be willing to experiment.
 +
* [http://www.w3schools.com/xml/ W3School's XML Tutorial] Wiki.  Covers various XML standards such as Ajax, DOM, XPath, XSLT, XQuery, DTD, Schema, and Services.
 +
* [http://cs.elderscrolls.com/index.php?title=Category:Oblivion_XML Category:Oblivion XML] Wiki (Oblivion, but still applies to FO3 and FNV).
 +
* [http://content3.uesp.net/wiki/Tes4Mod:Oblivion_XML/Traits Tes4Mod:Oblivion XML/Traits] Wiki (Oblivion, but still applies to FO3 and FNV).
 +
* [http://www.loverslab.com/topic/53411-reading-ui-hud-xml-files/ Reading UI & HUD XML files] by '''DoctaSax''' (Adults (18+)Only site).  Covers XML Basics.
 +
* [http://qxmledit.org/ QXmlEdit] (freeware) XML Editor.  Note the tutorials on this site are regarding the tool's features; not XML in general.
 +
 
 +
=== Music and Sounds ===
 +
Fallout New Vegas features a brand new music engine versus that of the one used within '''Fallout 3''' and '''Oblivion''', which has effectively rendered the ''music'' tab within the creation of cells useless.  See the Wiki tutorial [[Fallout_New_Vegas_Music|Fallout New Vegas Music]] for the description of how this now works.
  
<span id="Tip-VariablePrefixes"></span>
+
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
==== TIP: Best Practice - Type prefixes for Variables ====
+
* [[Fallout_New_Vegas_Music|Fallout New Vegas Music]] Wiki.
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
* [[Replacing_radio_songs|Replacing radio songs]] Wiki.
 +
* [http://www.youtube.com/watch?v=jjjuwd4JR6U&t=6s GECK Tutorial - Radio Station] by '''Seddon'''.  Video. See [[#TIP-CallingFormat|TIP: Format to call a song]].
 +
* [http://forums.nexusmods.com/index.php?/topic/274194-tutorial-how-to-create-a-new-radio-station/ GECK Tutorial - How to Create A New Radio Station] by '''DorostheConqueror'''.  Forum post. See [[#TIP-CallingFormat|TIP: Format to call a song]].
 +
* [http://www.freesfx.co.uk/ Free Sound Effects] Web site.
 +
* [http://freesound.org/ FreeSound.org] Web site for sharing 'Creative Commons' licensed sounds (including voices).
 +
* [http://great78.archive.org/ The Great 78 Project] Web site.  About 78,000 (and growing) old 78 LP's ranging from 1898 till around some time in the 1950's.  But would-be users need to note the [http://archive.org/about/terms.php Terms of Use] required by the Internet Archive organization.  In short, their material is "free to access" but not particularly "free to distribute", and may be subject to various copyright laws.  Access is granted for scholarship and research purposes only.  It is your responsibility to ensure such legalities are complied with for individual titles.
 +
* [http://www.nexusmods.com/newvegas/mods/63052/? Silent Voice Generator by Enter_77] Mod.
 +
* [http://www.nexusmods.com/newvegas/mods/61265/? Latest Ogg Vorbis Libraries] by KaneWright. The game uses it for decoding OGG audio format.
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">It's easy to get confused as to what sort of values are "valid" for any given variable once you get beyond a simple script, especially if it was defined elsewhere than the current script.  When you "declare" a variable, you give it a "type" which determines both which sorts of values it can accept and how they are stored. If it's expecting a "reference" then you can't assign it a "number" or "string"Experienced programmers have learned it's a "best practice" to use "type prefixes" in front of their variable names to help keep them straight.
+
">NOTE: There is a distinction between, and in the requirements for, each type of sound. '''Stereo''' won't fade (attenuate) over distance; '''mono''' willThis accounts for why some ''fx'' and all ''voices'' need to be in '''mono'''.
  
These "type prefixes" are lowercase letters that go before a capitalized variable name, denoting a specific programming use for that variable.
+
Some sounds appear to be "hard-coded" into the game engine in that they are not found as separate files in the loose files under the "Data" folder nor in the "Fallout - Sound.BSA" file.  (The "havok" collision sounds are an example of this.)  Some sounds have an entry in the '''GECK''', that appear to never be used despite the fact you can open a form and see them entered.  (Another example of differences in behavior is with the ''heartbeat'' sounds for low health, which can be replaced by other sounds externally in '''Windows Explorer''', despite having entries in the '''GECK''' which it claims are unused.)  Consequently, some experimentation is usually required.
  
* b - A ''boolean'' (aka "''bool''") is a variable that can be only true (set to 1) or false (set to 0).  We don't have true ''bools'' in this '''GECK''' programming language, but variables that a programmer knows will only ever be set to true or false can be referred to as a ''bool'' and its name can be chosen accordingly for organizational purposesThey are technically defined as the short/integer variety of '''type'''.
+
'''Stereo''' sound files are considered superior to '''mono''' because they have relative 2D positioning built into them already.  However in reality, for games, when you want to achieve a 3D ''surround sound'' positioning effect, in almost all cases it's '''mono''' files that need to be used.  That way the game engine kind of ''re-stereos'' them into the entire 3D sound output of your gameplay.  There are exceptions to this, and often ways to ignore this rule, but in general, game designers use '''mono''' for 3D sounds and '''stereo''' for 2D, even in modern games.
 
+
</div>
: Example:
+
: File folders by type:
<pre>
+
:* '''collision sounds''' made by objects hitting other objects or the ground are aspects of the "Havok Material Properties" (edited with '''NifSkope'''), and are addressed under the topic of "Collision" in [[#Tip-CollisionSounds|TIP: Collision Impact Sounds.]]  These sounds are hard-coded into the game engine, but the main game typically uses only 32 of the identified 96 possibilities.
short bFoundJohn
+
:* '''music''' (Data\Music): location/event soundtrack.  ''MP3'' '''stereo''' files.
int bFoundJohn
+
:* '''songs''' (Data\Sound\songs\radionv): radio playlists.  Individual song title files begin with the "mus_" prefix, and a "_mono" suffix.  '''Mono''': ''WAV'' (Pipboy) or ''OGG'' (radios/speakers) files; or '''Stereo''': ''MP3'' (Pipboy) filesBesides the obvious problem of a gigantic difference in file size (''WAV'' files are roughly 5 times those of ''MP3''s), this engine will actually play a ''stereo WAV'' file on a radio station twice (first the left channel will play, and then the right channel).  This problem does not occur with ''stereo MP3'' song files.  See the [[#TIP-CallingFormat|TIP: Format to call a song]] for more detail on file formats for "radio stations".
</pre>
+
:* '''sounds''' (Data\Sound\fx): noise/ambience/special effects(fx).  ''WAV'' '''mono''' filesThere are a number of sub-folders in the BSA under this category.  These are just a sampling of common interest under this category:
* f - a ''float'' is a variable that can store numbers that are in between integersEssentially, numbers that can have decimal values (e.g. "1.001").  Some functions will return a number that is in between two integers, and if you want to store that value as a variable for use in your script, it generally must be declared as a ''float'' variableA popular one is '''GetSecondsPassed''' for example.
+
::* '''amb''' (background noises): ''OGG'' files.
 +
::* '''fx''' (sound effects): ''WAV'' '''mono''' files.
 +
::* '''mus''' (location music): ''OGG'' files. Sub-folders for ''types'':
 +
:::* '''bttl\allcityintro'''
 +
:::* '''bttl\allcityoutro'''
 +
:::* '''bttl\allruralintro'''
 +
:::* '''bttl\allruraloutro'''
 +
:::* '''endgame'''
 +
:::* '''inc\night'''
 +
:::* '''inc\peaceful'''
 +
:::* '''inc\day'''
 +
:::* '''inc\creepy'''
 +
:::* '''mysteriousstranger'''
 +
:::* '''tenpenny'''
 +
::* '''npc''' (by type of actor): ''WAV'' '''mono''' files.
 +
::* '''voc''' (sound effect "voices"): ''WAV'' '''mono''' files.  These can be "broadcast" from radios or speakers with the ''playsound'' function in the ''menumode for terminals''The sound file length controls the timing.
 +
:* '''voices''' (Data\Sound\voice): dialog''OGG'' and ''LIP'' '''mono''' filesThese are "spoken" by Actors as "talking head" dialog.  The '''LIP''' file controls the timing.
  
: Example:
+
<span id="TIP-AddingASound"></span>
<pre>
+
====Tip Adding a new ''sound noises or fx'' file====
float fTimer
+
: Thanks to '''EDPGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for contributing clarifications to the following:
</pre>
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
* i - an ''int'' variable is the same as a ''short'' variable, but we only use the 'i' prefix so that we can use the 's' prefix to denote a ''string'' variable, which we'll talk about in a minute.  ''Int/short'' variables can only be integers, or whole numbers.  If you try to use one to store a value that should be a ''float'', it may round down (truncate) to the nearest whole number or it may just not work.  These are the most common variables for our use.
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
+
background-color:#333333;padding:3px;
: Example:
 
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
 
style="margin:0px 10px 10px 30px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
 
/* Remove the next four 'white-space' lines to restore default white-space processing. */
 
white-space: pre-wrap;      /* css-3 */
 
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 
white-space: -pre-wrap;      /* Opera 4-6 */
 
white-space: -o-pre-wrap;    /* Opera 7+ */
 
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">Place your sound file somewhere in "Data\Sounds\fx\<YourModFolder>".
int DoOnce<br>
+
: If your sound file (''WAV, MP3, OGG'', etc.) is imported, be sure to strip out any "metadata" (cover art, album name, author, etc.) it may be encoded with as the game is not prepared to deal with it.  There are a number of tools available on the web, including the [http://www.audacityteam.org/ Audacity] (free) sound editor, which can covert other formats.
int iDoOnce<br>
+
: NOTE: The GECK seems to see/list all sound files as ''MP3'', regardless of their actual extension (i.e. ''WAV'' or ''OGG'').  The extension does not seem to matter to GECK and the sound plays fine '''in game''', but only ''WAV'' files play in the '''editor'''.
int bDoOnce<br>
+
: If you intend to "overwrite" a vanilla sound file, you must first extract the sound file from it's BSA file into it's intended folder.  This is primarily to create the correct folder path for your replacement file.
short DoOnce<br>
+
* Your '''fx/sound''' ''MUST'' be a '''mono''', 16-bit sample size, and 22, 32, or 44.1KHz sample rate ''WAV'' (ADPCM: "Adaptive Differential Pulse Code Modulation") file, if you want to be able to click "play" and hear it in the editor.  No other file type plays in the editor, even though many vanilla files are in other formats. Its a GECK thing.
short iRaidersKilled ; (probably the number of raiders player killed)<br>
+
* ''MP3'' sound files (other than "songs" for "radio") should be '''mono''', 16-bit sample size, 44.1KHz sample rate, Bit Rate: constant, 64 kbps.
int bRaidersKilled  ; (probably if the player's killed all the designated raiders, or if they've killed at least one, depending on what you want)
+
* ''OGG'' Vorbis sound files should be '''mono''', 44.1KHz, Bit rate: constant, 48kbps (128kbps for dialogue).  Still need to generate ''WAV'' files to make ''LIP'' files since GECK won't make them, but once the ''LIP'' file is done you can dispense with the ''WAV'' file.  (See the [[#Dialogue_&_Lip-synch|Dialogue & Lip-synch]] section.) On average, an ''OGG'' file uses much less memory.
</div>
+
: When in doubt about which "KHz sample rate" to use, be guided by what similar vanilla sound files in the same location are using.
* s - a ''string'' variable is a weird oneIt's text, and requires special treatment. It tends to be stuff the scripting language doesn't really understand and just takes on faith that you do. You probably won't work with these for a while. In general, the content of a ''string'' variable is for "human consumption"(such as a message or note) rather than use by the script/program.
+
* Open GECK.
 +
:* Look in the object window for "Audio", then click on "Sound".
 +
:: The list here is not of actual sound files, but rather a list of GECK Form-IDs that point to the sound files.
 +
:: Then you must create a sound object in the GECK. You can't directly link the audio portion of your weapon (etc.) directly to your sound file. Again, you MUST create a sound object first. And then link that object to your weapon in the "Art and Sound" tab. You must be able to hear your sound play as a GECK sound object BEFORE linking it to your weapon.
 +
:: To create a new sound record from scratch:
 +
::* Move to the right window, right click and select "New".
 +
::* Click on "Add sound file".
 +
:::* Adjust "Attenuation distance".
 +
:::: Check stock vanilla sounds of the same type (e.g. a gunshot) for a good idea on how to set them.
 +
:::* Flag "Mute when submerged", then the "OK" button.
 +
:::: Check stock vanilla sounds for other flags and settings as well.
 +
:::* If your sound is a dialogue then flag "Dialogue sound".
 +
:: OR, edit an existing sound record to create a new one:
 +
::* Right-click and edit one of the existing sounds. Ideally find one of the same type as what you want (i.e, to make a new gunshot sound, use an existing gunshot sound).
 +
::* Make your modifications to that sound, and point it towards your own added sound file.
 +
:* Click "OK", and it will ask: "Create a new form?"; to which you say YES, then make note of the new Form-ID.
 +
:* Now when you are in your "Art and Sound" tab (if its a weapon or something) just click on the sound buttons and find your new sound by the new Form-Id you noted.</div>
  
:Example:
+
<span id="TIP-CallingFormat"></span>
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
+
====TIP Format to call a song====
style="margin:0px 10px 10px 30px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
+
: Thanks to '''EDPGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
/* Remove the next four 'white-space' lines to restore default white-space processing. */
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
white-space: pre-wrap;      /* css-3 */
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
+
background-color:#333333;padding:3px;
white-space: -pre-wrap;      /* Opera 4-6 */
 
white-space: -o-pre-wrap;    /* Opera 7+ */
 
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">For a radio station, a "song" file will '''''ideally''''' meet the following requirements:
string_var sDogName ; whatever the player typed for a dog's name at some point in your quest, so that it can appear in notes<br>
+
* Your song must be converted to ''.MP3'' format if you want it to be recognized and used on a game radio station ''in stereo''.
string_var sBone    ; whatever bone/node in the .nif model is relevant to the script for whatever reason
+
:* 128 kbps CBR ("Constant Bit Rate"; 256 is said to work but not tested) ''in stereo''.
 +
:* '''Mono''' files will play, but obviously they won't play ''in stereo''.
 +
* Most tutorials on radio stations only refer to ''WAV'' files, giving the impression that they are the only file format that will work.  This is not the case, but there are specific differences to use ''MP3'' songs.  (Both ''Stereo'' and ''Mono MP3'' songs will work if the same procedures are followed.)  Other than the ability to be in ''stereo'', the other huge advantage to using ''MP3'' files is how much smaller they are (roughly 1/5).
 +
* To call a song in a radio station: ''.MP3''s NEED braces (see example below) around the response name; but ''.WAV'' or ''.OGG'' files won't work with them.  (The reason the vanilla stations have mono ''.OGG'' files as well in the '''Fallout - Sound.bsa''' file is: those are what plays in the world on a speaker/radio that isn't your Pip-Boy.)
 +
: If you look at any of the vanilla radio stations in the GECK, they all use ''.MP3''s, and the name of each entry is something like this:
 +
:<pre>..{Song 1 A Winter Romance}</pre>
 +
: Note that like the vanilla script '''vCountryRadioQuest''', you should put '''two spaces''' (represented here by ''two periods'' to be visible) before the first brace. (Not tested without.)
 +
: If you save '''mono''' ''OGG'' files in the radio folder that are named identically to the "song" files but with '''_mono''' appended to them (e.g. "song1.mp3" and "song1_mono.ogg"), the radio station will play them in the game world at the correct time.  I've seen a lot of different ways to encode them but I have always used 65kbps '''mono''' and (I believe) 22050hz, and have always had them play as intended.
 +
* '''Seddon'''s video guide on how to make a station is a good one, but its major flaw is that he was operating under the presumption that ''mono WAV'' files were required.  '''You''' must make the above calling convention adjustments if using ''MP3'' or ''stereo'' files instead.
 +
* '''DorostheConqueror'''s text-based guide is slightly more comprehensive than Seddon's if I recall, but suffers from the same ''mono WAV'' file presumption, and the same adjustments apply.
 +
* NOTE: Radio stations are similar to dialog in that their ''quests'' must be checkboxed to "start enabled".  If the ''quest'' isn't "active" the ''topics/songs'' will not play.
 +
 
 +
===== Breaking News Flash =====
 +
: '''WarMachineDD7''' adds the following:
 +
 
 +
: The "Radio New Vegas" quest ('''RadioNewVegas''') keeps track of major events by having the quest for them modify a variable used in the '''RadioNewVegas''' quest. So for example, that quest has a variable called ''bKimballMOD'', and if the quest '''You'll Know It When It Happens (VMQ03)''' results with the Vertibird bomb exploding and killing Kimbal, then the '''VMQ03''' quest will change '''RadioNewVegas'''' ''bKimballMOD'' variable to "1".  Alternatively, if the player uses Jeremy Watson to kill Kimbal by placing C4 in his helmet, the '''VMQ03''' quest will change '''RadioNewVegas'''' ''bKimballMOD'' variable to "5", and so on and so forth for all 5 recognized possibilities for '''VMQ03'''. '''RadioNewVegas''' will use a different news report depending on the value of ''bKimballMOD''.
 +
 
 +
: One of the scripts that ends up changing '''RadioNewVegas''''s ''bKimballMOD'' variable is '''VHDKimballVertibirdScript'''. In other words, the vertibird's script will tell you if a bomb went off and killed Kimball.  (Presumably the other scripts that change it have to do with whoever takes the shot at Kimball or blows him up.)
 +
 
 +
: The same goes for the ''nStory'' variable in the '''RadioNewVegas''' quest. Each specific point in the story's quest moves that variable along for '''RadioNewVegas''' to react to. Those are the only two variables used for news flash tracking according to the '''RadioNewVegasSCRIPT'''.
 +
 
 +
: The other way to check on world events is with ''[https://geckwiki.com/index.php?title=Globals Global Variables]''. The result of a quest will have a line there at the end changing a global variable according to the result of a quest, which RadioNewVegas will use to see if the news story will trigger (they all start with "VStoryEvent", like ''VStoryEventMonorailDestroyed'' for example).
 +
 
 +
: You can use those same variables for your own radio station if you don't want to add new ones (in other words, when ''RadioNewVegas.bKimballMOD'' changes to "5", your radio mod can read that and play a different news flash, without having to insert your own variable). And you can also make different scripted events to catch something else happening in the world if you want to make another news flash, so you don't have to do it exactly like they did. The point is that something somewhere will change the variable that your radio mod will use to track the outcome of an event, and your radio will react with a news flash once it changes.
 
</div>
 
</div>
* a - ''array'' variables are incredible, but an "advanced" technique.  It's a steep learning curve but they're easy once you've passed that.  They are basically like form lists, but they are made dynamically at run-time via script.
 
  
: Example:
+
<span id="Tip-NavMeshMultiLevels"></span>
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
+
==== TIP Multi-Level Areas ====
style="margin:0px 10px 10px 30px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
+
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
/* Remove the next four 'white-space' lines to restore default white-space processing. */
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
white-space: pre-wrap;      /* css-3 */
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
+
background-color:#333333;padding:3px;
white-space: -pre-wrap;      /* Opera 4-6 */
 
white-space: -o-pre-wrap;    /* Opera 7+ */
 
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">Try to avoid having one area above another in a single cell. Even if you properly navmesh everything, NPCs can jump through the floor to get from one area to the other.  They can also get stuck halfway through the floor.  Even if you have stairs that connect two areas and everything is navmeshed properly, they will still often go through the floor instead of walking down the stairs.
array_var aNCR ; maybe every actor in the area that is in an NCR faction, or maybe every NCR actor in the entire game, including all loaded mods<br>
+
 
array_var aEntry ; this is a standard array variable that could be called anything and still work, but it's typically the name given to a short-lived variable that is used during any number of operations carried out on the larger array that contains all the stuff in the group you're working on.
+
NPCs also don't stay put unless you specifically tell them to stay put. If you leave and then re-enter a cell, they can end up anywhere inside that cell that has a proper navmesh, even if that means going through a wall that they can't possibly go through.  Locked doors won't stop them either.
 +
 
 +
If you need an NPC in a specific spot, put something there and give them an AI package that keeps them there. For example, put a "sit marker" on the floor or a "wall marker" next to the wall and give them a travel package that forces them to it.  Or put a chair there and give them a travel package to the chair. Or just put an xMarker on the floor and have them travel to that.
 +
 
 +
Place a "North" marker in the cell so the NPCs orient themselves in it properly.  Please see the "[[#TIP_Center_On_Cell_COC_Markers|TIP Center On Cell COC Markers]]" and "[[#TIP_Finding_cell_North_in_GECK|TIP Finding cell North in GECK]]" entries under the "Worldspaces" section.  Also see the "[[#TIP_Making_NPCs_move_aka_AI_Packages|TIP Making NPCs move aka AI Packages]]" entry under the "Custom NPCs" section.
 
</div>
 
</div>
* r - ''reference'' variables store a reference to an instance of an object placed in the game world.  This is often an actor or a specific object that you'll need to refer to later in your script.
 
  
: Example:
+
<span id="Tip-MusicAndDialog"></span>
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
+
 
style="margin:0px 10px 10px 30px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
+
==== TIP Music and Dialog ====
/* Remove the next four 'white-space' lines to restore default white-space processing. */
+
: Thanks to '''Glenrhee''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
white-space: pre-wrap;      /* css-3 */
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
white-space: -pre-wrap;      /* Opera 4-6 */
+
background-color:#333333;padding:3px;
white-space: -o-pre-wrap;    /* Opera 7+ */
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
word-wrap: break-word;      /* Internet Explorer 5.5+ */
+
">When you have the problem of your added music won't fade or mute during dialog, probably you have not encoded it correctly.
">
+
# The music has to be in '''mono .wav''' format.
ref rSelf  ; often used in '''GetSelf''' operations for functions that may require it, like some uses of '''PushActorAway''' or '''KillActor'''<br>
+
# It has to be in a CBR (constant bit rate) of 256 or less. Most audio editing programs let you choose to export it this way.
ref rTarget  ; often the choice for functions like '''GetOwnerLastTarget'''
+
# It'll sound louder '''out-of-game''' than '''in-game''', so don't lower the volume too much on it.
</div>
+
Now your music should automatically get quieter when in dialog.
: Note you can use a different prefix with the same variable name (e.g. see the various "DoOnce" definitions under "i - integer"), and the '''GECK''' will treat them as distinct, separate entities. (But note "short DoOnce" and "int DoOnce" are not unique variable names.  They are defining the same variable name to the same type.)  However, that can get very confusing after awhile and is not recommended as a casual practice.  But it can have it's place.
 
 
</div>
 
</div>
  
<span id="Tip-CheckVariables"></span>
+
<span id="Tip-BattleMusic"></span>
==== TIP: Assigning & Testing variables ====
+
 
: Thanks to '''Mktavish''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
====TIP Replacing Battle Music====
 +
: Thanks to '''KadoDragon''' and '''DaemonGrin''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Assigning a value to a variable and then attempting to use that variable immediately afterwards usually doesn't work reliably. This is because the game engine appears to need at least one frame between the assignment and then being able to have that assigned value available in the variable in the same "action block" (e.g. "GameMode", etc. block).
+
">You need to know what ''audio object'' (in the GECK) to edit in the ''audio tab'' which means you need to know the names of the battle songs you want to replace. All you have to do once you have that information is redirect the ''audio object'' to the '''wav, mp3 or ogg''' file of the new one. Or you can find the '''mp3, wav, ogg''' you want to replace with your own music and just rename yours to the same names of the vanilla files (after backing them up of course); making sure to leave them in the correct directory path(s) in the "Data\sound\" folder path. Not hard at all. Really the hardest thing to do with sound is creating the ''intro'' and ''outro'' segments: they are super short and need to blend nicely with the fade-in of the battle music.
 +
 
 +
The game combines the ''intros'' and ''outros'' from the '''Data\Sound\fx\mus\bttl''' sub-folder and then plays the music from the appropriate '''Data\Music\''' sub-folder.
 +
</div>
  
The solution is to first check if the variable is set to other than it's default, and if not to then set the variable, and process the "true" condition the next frame. For example:
+
<span id="Tip-WeaponFiring"></span>
 +
<span id="Tip-DetectionEvents"></span>
 +
==== TIP TCD and Gunfire Detection Events ====
 +
: Thanks to '''punchbattle''' of the "New Vegas Mod Talk" forum for the basis of the following.
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">short DoOnce
+
">A really helpful command is called [http://geckwiki.com/index.php/ToggleCombatDebug ToggleCombatDebug (TCD)]. Running it in-game adds graphical elements to combat that help give you a better understanding of what's going on under the hood. For instance, one really helpful thing it does is create "teal colored" bubbles (called '''Detection Events''') to mark sounds made by the player and NPCs. If an NPC is close enough to a '''Detection Event''', they'll "hear it" and begin searching for the enemy it belongs to. This revealed something very ... odd. And bad.
Begin GameMode
+
 
: if (DoOnce > 1)
+
The only part of a gunshot that creates a '''Detection Event''' is the '''projectile''', and ''only at the point of impact''. This means NPCs will completely ignore the sound of the gun going off, and instead choose to wander right into the enemy's crosshairs. Bethesda is infamous for their "less than realistic" stealth systems, but learning about this completely ruined stealth for the author and made them want to fix it.
: ; Already done once, so leave immediately.
 
:: Return
 
: elseif (DoOnce == 0)
 
:: set DoOnce to 1 ; to be processed next frame
 
: else
 
: ; do whatever when the value of "DoOnce" is "1", including calling another script (e.g. "QuestScript") if needed.
 
:: set DoOnce to 2 ; signal this has already been done.
 
: endif
 
end</div>
 
  
Other variations on this idea can be implemented as well. A timer can be implemented if longer than one frame's delay seems to be needed. Remember that "GameMode" block processing is cumulative in effect from frame to frame.
+
There's a function that lets you make your own '''Detection Events'''. It's called (strangely enough) [http://geckwiki.com/index.php/CreateDetectionEvent CreateDetectionEvent].
  
Note that there are only 3 [http://geckwiki.com/index.php/Category:Blocktypes blocktypes] that will continually read the code lines in successive frames:
+
An initial idea was to attach a script to a gun, and have it create a '''Detection Event''' at the location of the shooter whenever they pull the trigger. This didn't work for a number of reasons. Instead, using a quest that checks for anyone with a gun doing an attack animation, and casting a '''Detection Event''' spell on them works perfectly!
* [http://geckwiki.com/index.php/GameMode GameMode]
+
 
* [http://geckwiki.com/index.php/MenuMode MenuMode]
+
For anyone reading this who wants to mess around with '''Detection Events''' as well: Any field that asks you to assign a '''Sound Level''' to a weapon or projectile is actually asking you how big you want your weapon's '''Detection Event''' bubble to be. But remember! Weapons don't actually create '''Detection Events''' when '''''fired''''', despite what the '''GECK''' seems to imply: only upon '''''projectile impact'''''!  The size of each "Sound Level" bubble is controlled by these settings:
* [http://cs.elderscrolls.com/index.php?title=ScriptEffectUpdate ScriptEffectUpdate]
+
* iSoundLevelLoud - 100
Each having specific circumstances when they are runningAll other blocks (e.g. "On<Event>") are one frame occurrence events.  See also [[#Tip-BlockTypeProcessing|TIP: Block Types (Multiple vs Single Frame processing)]].
+
* iSoundLevelNormal - 50
 +
* iSoundLevelSilent - 10
 +
 
 +
People say that '''Detection Events''' can't be larger than 100, but this isn't true. You can assign values into the thousands, and it still works. Also, 100 is ...very small. (As in 128 [http://geckwiki.com/index.php/Units game units] is the equivalent of the default 6 foot tall NPC actor.) Makes one wonder if that isn't perhaps a percentage multiplier to the "standard" bubble size; whatever that might be?
 
</div>
 
</div>
  
<span id="Tip-LeveledLists"></span>
+
====TIP Weapon firing sounds====
 
+
: Thanks to '''Scott Clemmons''' of the GameAs "Fallout: New Vegas" forum for the basis of the following:
==== TIP: Adding Items to Actors (Leveled Lists) ====
 
: Thanks to '''Ladez''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">So you've created this fantastic new item (weapon / armor / clothing, etc.) and want it to start appearing in the merchant inventories or NPC loot.  How to go about it without manually placing it in every individual's inventory is the question.
+
">In New Vegas, there are two different 3D shooting sounds for many weapons: A normal shooting sound, and a distant shooting sound. As the distance between you and the shooter increases and the normal shooting sound starts to fade, the distant sound should start taking over while the normal sound continues fading away.
  
The answer is "[http://geckwiki.com/index.php/LeveledItem leveled lists]"These are lists which can populate inventories of actors when the Player has attained a specified level of experienceThe subject is addressed in the Nexus Forum thread [http://forums.nexusmods.com/index.php?/topic/2219064-adding-items-to-levelled-listsgra Adding Items to Levelled Lists/GRA] and should answer most of your questions, but here is the summary.
+
The distant sound has a bit of an echo, so the effect of using this different sound for shots from a large distance is niceThe distant sound doesn't start playing until the normal shooting sound has stopped playing completelySo as you get further away the normal shooting sound fades until the gun is almost silent. Then, when the sound is completely gone, the distant sound takes over. Usually, this distant sound is disconcertingly louder than the fading at the end of the closer distance sound!
  
The basic process is covered in the GECK Wiki under the topic "[http://geckwiki.com/index.php/Adding_items_to_vendors Adding items to vendors]". Note that avoiding incompatibilities with other mods requires using one of the following three methods:
+
So what happens? You have someone shooting at you, and the further you get away, the less loud the sound gets. But then when you pass a certain distance, the shooting sound goes from nearly silent to relatively loud again.
# create a new container owned by the NPC;
 
# create a quest/script to add the items to the NPC's existing vendor container;
 
# create a quest/script to add the items to a vendor's leveled item list.
 
  
The third method is recommended by experienced mod makers, especially for Actors who are not "merchants", as the best way to assure compatibility with other mods.  Remember: an Actor is it's own "container" and can use anything in it's inventory if the "Use Inventory" checkbox is enabled. Consider the term "vendor" as a specific example of an "Actor".
+
Using the 'getdistance player' console command, you can track the distance (measured in [[Fallout 3/NV Game Units|game units]]) between the shooting NPC and yourself. Approaching the 2400 unit distance the gunfire sound is almost silent. Then, upon increasing the distance between yourself and the NPC a little more, the louder distant shooting sound takes it's place.
  
You need to identify which leveled lists are being used by the Actors you want to have your items, and then add the items to at least one of those lists.  Different "groups" of Actors in different locations (even members of the same faction) may use different lists.
+
In the GECK Weapon record Form there are "attack sound" fields on two different tabs: "Art and Sound", and "Mod Info".
* Find a likely "LeveledCharacter"/NPC under "Actors", "< Double-click >" on the entry to "Edit" it and view the contents of the "Inventory".  Items that appear with a "green box" icon are lists which appear under the "Items" category as "Leveled Item" entries.  For example:
+
* Art and Sound tab: Unmodified weapon attack sounds.
: Under "NPC" is the Editor-ID "188NCRTrooperA", whose inventory contains "CondKnifeLoot" (a "Leveled Item").
+
* Mod Info tab: Weapon attack sounds when an appropriate "weapon mod" is used: i.e. "suppressor/silencer".
: You will find "Leveled Items" under the "Object Window | Items" category.  If you "< Right-click >" on the entry for a "Leveled Item" (such as "CondKnifeLoot") and select the "Use Info" property, you can see what utilizes that item. Scroll down that list and you want the ones of type "LVLI", which are "Leveled Lists".
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 30px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">'''EPDGaffney''' expanded: When you select the "Use Info" property of an item, you see the "Count" and "Users" columns.  Levelled items will always have a "Count" of "0" because "Count" is how many instances/references are placed in the game cells, as opposed to a container. Because levelled items can never be placed anywhere but a container (including an Actor of course), they will always have "0" in that column. "Count" from the "Use Info" property is the same as "Count" in the "Object Window".
 
  
What makes this really confusing is that you have "Levelled Items" nested inside of other "Lists" inside of other "Lists" and so on, and these can eventually be tracked to a template actor, who has a "Use Count" of "0" because the items are never placed in the game but whose template inventory is used by 100 actorsMeaning that levelled item with a (Use) "Count" of "0" and 1 "User" will in fact (potentially) be in 100 inventories once you start playing the game.
+
Testing showed that adding a "Suppressor/Silencer" "weapon mod" seemed to have no effect on the sound heard in most cases.  Turns out a huge part of this is the specific sound files chosen, and for which of the different fieldsApparently many mod makers use the same sounds for both tabs (probably not understanding the different roles).
 +
* The "3D" field's sound "attenuates" (fades) as you move from the point of origin starting at approximately 255 units up to 2400 units distance.
 +
* The "Dist" sound is a 3D effect that kicks in approximately at 2400 units up to 8500 units.
 +
* The 2D field sound does not "attenuate" (fade) with distance.  This is the "1st person" sound: "right in your ear".
  
That said, a high "Use Info" Count is going to be reliable in that the item will turn up in the game for sure. But just look at different merchant inventories to see what's really the best way to go in choosing a list for generally adding your item to the game.</div>
+
The following choices illustrate the difference of this effect for a .308 caliber weapon (The 'Gobi Desert Sniper Rifle', using WMX to modify it). The "CCSP" files chosen are from the [http://www.nexusmods.com/newvegas/mods/52633 Combined Community Sound Pack (CCSP)]Other choices depend upon the mods installed.
* "Form Lists" are under the GECK "Object Window | Miscellaneous" category. Find a likely list, "< Double-click >" on the entry to "Edit" it and view the contents of the list to determine how suitable it is for your purposes. DO NOT manually add your new item directly to this listUse one of the three methods above.
 
  
Note that by default it takes 72 hours in-game for an Actor's "inventory" to get recalculated (updated from a "leveled list").  You can force the inventory to "reset" by calling the [http://geckwiki.com/index.php/ResetInventory ResetInventory] function on the container reference, but remember that "all previously added, removed, or calculated objects will be lost".  See the GECK Wiki entry on "[http://geckwiki.com/index.php/Force_an_actor_to_equip_new_stuff Force an actor to equip new stuff]" as well.
+
"Art and Sound" tab: (Unmodified weapon attack sounds).
 +
* Attack Sound (3D): "CCSPsniperrifle3d" (there are several choices and all are generally "loud".)
 +
* Attack Sound (Dist): "CCSPsniperrifledistant" (this in particular is a more muffled distant sound than other similar options.)
 +
* Attack Sound (2D): "CCSPsniperrifle2d" (there are several choices and all are generally "next to you loud".)
  
The vanilla GECK function is "[http://geckwiki.com/index.php/AddItemToLeveledList AddItemToLeveledList]". As the wiki says: <blockquote>
+
"Mod Info" tab: (Modified weapon attack sounds).
"This should be used in the RARE case where we want to add an item to a Leveled Item list that already exists in the ESM. Its primary use is for modifying lists from the base game in downloadable content. In most cases you should add items to form lists in the editor object windows. This is for those special cases where you want to alter the contents of a list at runtime or want to change it without putting it in your ESP/ESM file. Once altered using this function, it will persist in the save game data.
+
* Attack Sound(s): "CCSPsniperriflesilenced3d" (shorter, quieter 3D shot.)
 +
* Attack Sound (2D): "WPNRifleAssaultSilencedFire2D" (shorter, quieter 2D shot.)
  
It can not be undone."
+
Now an unmodified rifle sounds as expected, and one equipped with a silencer is obviously quieter. The contrast between the fading 3D sound and the "Dist" sound is something the sound file makers will have to calibrate.  But using a more faded "dist" sound will reduce the jarring effect.
</blockquote>
+
</div>
  
The "Lutana" extension to NVSE (now part of the "JIP LN NVSE" plugin) has the following "leveled list" functions which are preferred as overcoming the drawbacks of the vanilla GECK functions.
+
=== Navmeshing ===
* [http://geckwiki.com/index.php/LeveledListAddForm LeveledListAddForm]
+
(The process is essentially the same between the '''GECK''' and the '''Creation Kit'''.  See also the [[#Worldspace_Creation|Worldspace Creation]] section.)
* [http://geckwiki.com/index.php/LeveledListRemoveForm LeveledListRemoveForm]
 
* [http://geckwiki.com/index.php/LeveledListReplaceForm LeveledListReplaceForm]
 
* [http://geckwiki.com/index.php/LeveledListClear LeveledListClear]
 
  
So, scripting added items with functions such as ''LeveledListAddForm'' needs to be done every time the game is started. Most do it at "launch", but it can be done at every "reload" instead. The vanilla function ''AddItemToLeveledList'' by contrast will save in the "save game" data. It's not necessarily a bad function if you know how to use it (with a ''bDoOnce'' condition check most likely). But likewise, modders need to know that the '''Lutana''' functions must be done each session/game load. Items already spawned will of course remain in inventories if the '''Lutana''' function is called just once, but the items will never turn up anywhere else once the game is closed unless the function is called again next time.
+
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 +
* [http://www.creationkit.com/index.php?title=Bethesda_Tutorial_Navmesh Creation Kit Tutorial: Bethesda Navmesh Tutorial] Wiki.  Generally applies to GECK as well.
 +
* [http://www.youtube.com/watch?v=HSb7TY1ai2w Creation Kit Tutorial: Guide to Bethesda Creation Kit - Navmesh: pathing test and finalizing] Video by '''Hellcat5'''.
 +
* [http://youtu.be/5JGpfOLiLic Creation Kit Tutorial: How to Navmesh] Video by '''Darkfox127'''. Specific to Skyrim but compatible essentials.
 +
* [http://www.youtube.com/watch?v=qKbOLdzC6-k Creation Kit Tutorial: Linking Cells] Video by '''Darkfox127'''.
 +
* [http://geck.bethsoft.com/index.php?title=Bethsoft_Tutorial_Navmesh GECK: Bethsoft Navmesh Tutorial] Wiki.
 +
* [http://www.youtube.com/watch?v=q2pZmWgJ0FE&feature=youtu.be GECK: How to edit pre-existing nav-meshs for an exterior worldspace GECK] Video by '''001cf73'''.
 +
* [http://www.youtube.com/watch?v=2Vqjwa1fKI4 GECK: NavMesh Tutorial] Video by '''Illusive Man'''.
 +
* [http://www.youtube.com/watch?v=8F1A-MPu3gY GECK: NavMesh Tutorial] Video by '''Staring@MyKeyboard'''.
 +
* [http://www.nexusmods.com/newvegas/mods/62041/? Navmesh Fixes and Improvements] Mod by '''sandbox6'''.
 +
* [http://www.youtube.com/watch?v=QApfS9NRYPY NavMesh Tutorial: Stairs] Video by '''Staring@MyKeyboard'''.
 +
* [http://www.creationkit.com/index.php?title=TES5Edit_Documentation TES5Edit: Documentation] Wiki.
 +
* [http://www.youtube.com/watch?v=Q-ZQtgveKaM TES5Edit: Fixing Deleted Navmesh with TES5edit] Video by '''soupdragon'''.
  
Always test from a "new game" file instead of a save game from a play session.
+
<span id="Tip-NavmeshBug"></span>
</div>
+
====TIP Bug extending NavMesh====
 
+
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
<span id="Tip-Conditionals"></span>
 
==== TIP: Basic '''conditional test''' syntax ====
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">A "[http://geckwiki.com/index.php/Category:Conditions conditional statement]" (an "IF" is the basic form) consists of a "test condition" (e.g. "<this test must be 'true'>"), '''possibly''' followed by yet another "compound conditional test" which may be regarded as "Either/'''OR'''" '''''or''''' "'''AND'''/Also MUST BE TRUE", all in a single statement which is then followed (in the GECK: on the next line) by the statements to be executed if the overall combined conditional statement is "true" in all respects. That's a mouthful, but simply put all tests in the same statement must evaluate to 'true' for the statement to be true. (Qualifier: Only one of the pair of "individual tests" in an '''OR''' "compound conditional test" must be 'true'.) See [[#TIP:_GECK_parses_the_entire_line_before_evaluating|TIP: GECK parses the entire line before evaluating]].
+
">There's a massive bug that has a 'cult following' of sorts, in that it doesn't seem to be discussed quite so often as most of the other fundamentals of modding, but when you do find a discussion about it, there is an unmistakable fire at work, and it burns with unmatched vitriol.
   
+
 
The question of "encapsulation" (see [[# TIP:_Best_Practice_-_Encapsulation_-_Parens,_Brackets,_and_Braces|TIP: Best Practice - Encapsulation - Parens, Brackets, and Braces]]) most commonly arises with "compound conditional tests"You could safely use "(parens)" to enclose the basic test, as in: 'If (IsModLoaded "mod.esp")' in the example below, but in general a "''function''" (i.e. "IsModLoaded") followed by a single parameter (i.e. "mod.esp") doesn't require it unless you are getting errors.  ''Functions'' that require more than a single parameter usually do need encapsulation; the type of enclosing characters depending upon the type of function.  "(Parens)" are most common and generally safest when in doubtLiberal use of "(parens)" with "compound conditional tests" ensures they are resolved correctly: (e.g. "If (<condition1> OR <condition2>)" means only one of either condition has to be 'true' for the statement to be 'true'.  Whereas "If (<condition1> AND <condition2>)" means both individual conditions must be 'true' for the statement to be 'true'.  You can mix compound conditionals (e.g. "If ( (<test1>) AND (<test2>) OR (<test3>) )" can be misinterpreted; whereas "If ( (<test1>) AND ((<test2>) OR (<test3>)) )" is unambiguous (spaces added for clarify grouping): either <test2> or <test3> can be true, but at least one of them must be true along with <test1> for the entire statement to be 'true'.  If either <test1>, or both of <test2> and <test3> are false, then the statement failsHowever, such can be difficult to debug"Compound conditionals" are just another form of "nested conditionals" combined into a single statement.  (See [[#TIP:_Debugging_Compound_Conditionals|TIP: Debugging Compound Conditionals]].)  They are best used when you are concerned about the size of your script. (See [[#TIP:_Script_Size_limit|TIP: Script Size limit]].)
+
It seems that if your plug-in is not a "master file" (.ESM), there's only so much you can do with navmeshes before the game just can't take it and pathing simply breaks.
 +
 
 +
In my case, I had an interior cell basement with a number of roaches, and they had a very specific 'setpiece' AIIt all worked perfectlyThen I built the rest of the area and it still workedFinally, when I navmeshed just the adjacent room (extending the same navmesh), I incurred a fully reproducible form of this bug (which takes many forms, though this is my only first-hand experience): everything in the entire space works 100% perfectly -- until I load my save and test it againThat's right, everything; and the amount of intense scripting and 'scenes' occurring here is extraordinaryBut if anything causes the navmesh to be re-encountered again after any attempt to resume the same game session from a previous save point (load my current save, quit to the main menu and then load my save, load another save, or anything that doesn't involve closing the application and relaunching the ".EXE"), the roaches will just idle there, or sometimes run full-speed into the wall or door perpetually and never get where their package is meant to bring themSometimes they'll even teleport as they idle, gradually materialising closer to the Package Target but not quite getting thereLeaving and returning to the room without loading a save game appears to work fine.
  
For every "condition" you are checking to be "true" you are also (at least implying) there is a "false" condition that will occur if the test failsThe "conditional block" is made up of the "conditional statement" and is terminated by an appropriate "end" statement (i.e. for an "if" that is an "endif")Some forms of conditional blocks (such as the "If") permit additional conditional tests to be conducted if the first fails (I.e. "ElseIf <condition>" statements) and a single (optional) "Else" (all is "false") section for when all earlier tests failThis basic structure is more fully known as the "If ...( ElseIf) ... (Else) ... EndIf" (aka "If/Else") block where the parentheses indicated the statement is (optional). But for every "IF" there must be a concluding "ENDIF". (Notice the different use of case in these various examples.  This is to show that case of the statements, commands, and functions is not important, but adopting a consistent pattern will help to make your script more readable.  The case of "parameters" however, may be of importance so it's always worth paying attention to.)
+
So, I found some information on my trusty Google machine, and decided to try my file as an ".ESM".  Flawless results every time.  So try that.  Just make sure you back up your file.  ".ESP to .ESM" conversions have a bit of quirkiness unless you understand the "rules" pertaining to them.  (See [[#Tip-ESMOnly|TIP: When can you use an ESM only mod?]].)
+
 
So, here is an example of a basic "conditional test":
+
Making an ESP file into an ESM can solve some problems with spawning actors appearing "jammed up" in a particular spot instead of where you placed them.
<pre>
+
 
If IsModLoaded "mod.esp"
+
Toggling "ArchiveInvalidation" seems to sometimes clear up an AI package acting buggy when making changes to your navmeshHowever, this will not satisfactorily resolve the problem for your users.
  <some code to run when that mod plugin file is loaded>
+
 
; Else - do nothing
+
<div style="margin:0px 10px 10px 10px;border:1px solid #00C600;color: lightgray; background-color:#424242;padding:3px;
EndIf
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
</pre>
+
">ONAM records are special records created that allow Master files to communicate with one-another when references need to be passed. '''xEdit''' ensures that as part of the "Plugin to Master" conversion process, these ONAM records are built and correctly ordered. This is why it is better to make the "Plugin to Master" conversion using '''xEdit'''See the [http://www.creationkit.com/index.php?title=TES5Edit_Documentation TES5Edit Documentation] section on "Converting a Plugin into a Master".
 +
 
 +
Summary from a Skyrim discussion:<br>
 +
Basically when an ESP plugin wants to change something in the base game, it either adds a new object, or has an object that shares it's ID with something in one of it's master files. Since the ID is the same as the one in the master, only the one loaded last is used. This is called an '''override'''.
  
If the test for "mod.esp" fails, the code that follows is skipped down to the "EndIf" statement and resumes processing with the next statement afterwards.  If the test for "mod.esp" succeeds, then all the lines that follow (down to the "EndIf") are then executed in sequence.
+
ESMs cannot normally do '''overrides'''. If they add something that shares the same FormID, you get a collision error. EXCEPT if you have what's known as an ONAM record. Basically this is a small sub-record in the header of the file that tells the game engine: "This ID is overwritten in this file".
  
(I prefer to document implied "Else" statements with comments (the ";" causes everything else on the line to be ignored) in the code so I know that I did consider the implication and what I thought would happen; in case things turn out differently later on.  The implied "Else" here is "do nothing if this mod fails to be loaded".)
+
Although the CK won't add an ONAM list [but FNVEdit's "MasterUpdate" function will -Editor], you can still ESM'ify by changing the extension to ESM, opening as "Active", then saving. There's no guarantee it'll fix anything w/o an ONAM list though.
  
Note the use of indentation. This gets to be very important later on as you develop "nested conditions", such as:
+
The ONAM lists seem to help the engine's object permanence when an ESM overrides its master(s) cell children, ensuring the overrides A) work properly and B) aren't forgotten when they unload. It's a TES4 (header) subrecord (ACHR, NAVM, LAND, REFR, PHZD). ThePitt.ESM was the first Beth plugin to get an ONAM list and every applicable Beth ESM since has one (save for one iteration of Update.ESM). Not sure exactly how it works but, in Oblivion, if one moved something from Oblivion.ESM around with another ESM flagged plugin, the ground would vanish in game. This is most likely why '''Oblivion's Shivering Isles''' was merged in and its ESP was empty.  Currently [2011], the only way to get an ONAM list is with FO3/FNVEdit.
<pre>
 
If <condition1>
 
  some code if <condition1> is true
 
  If <condition2>
 
    some additional code only if <condition2> is true (in addition to <condition1> or we never get here)
 
  ; Else - do nothing if <condition2> fails
 
  EndIf
 
Else ; <condition1> failed - <condition2> was never tested
 
  <code when <condition1> fails>
 
EndIf
 
</pre>
 
  
Indenting the beginning and ending statements of "blocks" to the same level helps ensure you have correctly matched them up(This is one of the most common syntax errors preventing a script from compiling, and hard to track down otherwise.)
+
Note though, ESM's are not 100% immune to navmesh related bugs.   
  
Finally, note that ''"let < var > :="'' is '''NVSE''' syntax(Vanilla uses ''"set < var> to < value >"'' syntax.)  You must have '''NVSE''' loaded when running the GECK (use the '''GECK Extender''': link under [[#Programs_and_Tools|Programs and Tools]]) to use it, (and specify '''NVSE''' as a requirement for your mod if you publish it) or you will get a ''compiler error'' and your users will not be able to get the mod to function correctly without itDon't let that stop you as almost everyone has '''NVSE''' installed anyway, but it is important to realize.
+
You cannot slave an ESM to an ESP; only the other way aroundYou can split an existing ESP into an ESM/ESP pair: as long as the items in the ESP are "non-edits" of the new ESM (things that exist only in the ESP and do not edit anything from the ESM: i.e. "all new content") Such ESP items will be beginning with "mod index"/form-id 02 when only those two files are loaded.  It will translate into loaded save games properlyAny records that go directly into the ESM will be treated as a new mod and reset on first load.</div>
 
</div>
 
</div>
  
<span id="BlockTypeProcessing"></span>
+
<span id="Tip-NavmeshQuickly"></span>
==== TIP: Block Types (Multiple vs Single Frame processing) ====
+
====TIP Draw Navmesh Quickly====
 +
: Thanks to '''kingbeast88''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">When creating a script it is important to use the correct "[http://geckwiki.com/index.php/Blocktype Block Type]" to contain it.  A "block" is bounded by a "Begin <type mode>" line and an "End" line.  The most commonly used is the "GameMode" block, but many beginning script authors don't know why that is the case.  It has to do with the issue of "single frame" versus "multiple frame" processing of the scripts within a given block type.
+
">To quickly draw your extended navmesh boundaries:
 
+
* Make your first triangle.  (See any of the above tutorials.)
The term "frame" here is used very much the same as in "frames per second (FPS)" rendered on the displayBut for a script, it is more accurate to think of it as a single "pass" of the game engine through the code within a block.
+
* Then hold <Ctrl> and <Right-Click> your mouse at each of the next vertice locationsThe nearest boundary line will automatically redraw to include that vertice.
 
+
* Press <Tab> when you need to switch sides of the two vertices of the boundary line currently selected to extend in a different direction.
A "single frame" block type only gets one pass through it's code when it gets triggered. This means if the code is structured such that it needs to be processed multiple times to get the correct result, but is placed in a "single frame" block type, it will not produce a correct result.  It only gets one "pass through" for evaluation.  Such blocks do not retain "intermediate result (temporary) values" in variables between calls.  Every time it is called, it is starting from a "clean slate".  Even it's "locally defined variables" (those defined within that script) have been reset to null values.  Only "[http://geckwiki.com/index.php/List_of_Global_Variables Global Variables]" or those "inherited" (defined in another script (typically a "quest script"), which in turn calls the script in question), can pass values between "scripts" or "frames".  (This "range of visibility" of variables between different parts of the code is called the "[http://en.wikipedia.org/wiki/Scope_(computer_science) scope]" of the variable.)
 
 
 
There are only three "multiple frame" block types, which retain "intermediate result values" between successive frames:
 
* [http://geckwiki.com/index.php/GameMode GameMode]
 
* [http://geckwiki.com/index.php/MenuMode MenuMode]
 
* [http://cs.elderscrolls.com/index.php?title=ScriptEffectUpdate ScriptEffectUpdate]
 
Each having specific circumstances when they are running. All other blocks (e.g. "On<Event>") are one frame occurrence events.
 
 
 
Consequently, if your code requires a "loop" structure or more than one pass through it's conditional logic to get the final result, it must be moved out of a "single frame" block and into a "multiple frame" type"Loops" are easy to spot; "conditional logic trees" can sometimes be trickier. Some things to watch out for:
 
 
 
* "Gateway" conditions, such as "If bDoOnce == 0".  This implies a second pass is required for the occassion when "bDoOnce == 1" logic to get applied.  If "bDoOnce" is defined "globally" or "inherited", then it will retain it's value between calls, so it is not automatically disqualified from a "single frame" block type, but if defined "locally" then it will always be "0".
 
 
 
* Any logic depending upon a conditional test using a locally defined variable.  Such a test is only valid if the value of the variable is assigned during that initial pass and ALL actions depending upon that value are performed in that same pass.  This means only one code branch of an "If ... ElseIf ... Else ... EndIf" logic tree will be processed.
 
 
 
By bearing in mind "single" versus "multiple" frame block types, some "unexplained" code behavior can be understood and rectified.
 
 
</div>
 
</div>
  
<span id="Tip-CompilingScripts"></span>
+
<span id="Tip-NavMeshBoundaries"></span>
 
+
====TIP Navmesh Boundaries====
==== TIP: Compiling Scripts. ====
+
: Thanks to '''madmongo''' and '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">You may notice error messages that report "script is not compiled".  This may cause some confusion, so to clarify the situation:<br>
+
">NPCs will stray slightly outside the bounds of a navmesh, so you don't have to be super-precise in laying down their boundariesIf you're a bit sloppy the NPCs will still usually manage to figure out how to go where they should.
The GECK ''compiles'' a script when saving it.  This means it turns the "human readable" instructions into binary "machine code".  This is more efficient for the game engine to processEditing and saving a script individually is the preferred method of ''compiling''. A script that is not ''compiled'' will still run as long as it is properly constructed; without any errorsBut ''compiling'' is usually the only way to ensure the script is error free.<br>
+
 
If you can't exit your GECK session, it's usually because you failed to actually save/compile a script due to an error.  If you are not using the '''GECK''' '''Extender''' or '''Powerup''' plugin (see the [[#Programs_and_Tools|Programs and Tools]] section), this can happen without any error message being displayed to indicate it failedYou may find yourself forced to revert to a backup or remove the script which refuses to compile.  Take precautions.<br>
+
"Off-screen" NPCs do not require any navmeshingAn NPC was set to run his script even when the Player wasn't in the area (meaning: unlike the majority of NPCs, his ''No Low-Level Processing'' box was not ticked in the G.E.C.K.) but without any navmeshingHe acted "funny" when on-screen with the Player, but the game updated his task to "completed" once the Player left the area.
<span style="margin:0px 10px 10px 0px; border:1px solid #cc3333; color: red;
+
 
background-color:#fff5f5;padding:3px;
+
If you have a container with items in the area, and the gap between the navmesh and the container is too small, it is at least theoretically possible an NPC in combat might grab a more powerful item from the containerHowever such instances should be rare.
/* Remove the next four 'white-space' lines to restore default white-space processing. */
 
white-space: pre-wrap;      /* css-3 */
 
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 
white-space: -pre-wrap;      /* Opera 4-6 */
 
white-space: -o-pre-wrap;    /* Opera 7+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">WARNING: There is a ''compile all'' command in the GECK script editor, but it compiles ALL the scripts that are currently loaded into the GECK, regardless of their source plugin INTO YOUR PLUGIN, which will consequently override those scripts in any other pluginThis is best avoided (as in "never used") unless you really understand all the ramifications.</span>
 
 
</div>
 
</div>
  
<span id="Tip-CorpseOddness"></span>
+
<span id="Tip-NavMeshExteriors"></span>
==== TIP: 'Corpses' aren't Actors or Objects ====
+
====TIP Navmeshing Exterior cells====
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
: Thanks to '''madmongo''', '''EPDGaffney''', and '''kingbeast88''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Trying to get a ''Trigger Box'' to react to a "corpse" falling through it fails to workApparently "dead actors" are not considered by the game engine to be either '''Actors''' or '''Objects''' as far as functions and events depending upon one or the other are concerned.
+
">Most tutorials on "navmeshing" are done in interior cells.  Which means they don't have to deal with "cell boundaries".  However, "exterior navmeshes" DO have to deal with cell boundaries, and this can lead to some confusion.
 +
 
 +
Outdoor navmeshes work mostly the same as indoor ones, except that the navmesh path can't cross cell boundaries.  However, when the navmesh boundaries are adjacent at the cell boundaries, NPCs can cross between cells.  See the [http://www.youtube.com/watch?v=q2pZmWgJ0FE&feature=youtu.be How to edit pre-existing nav-meshs for an exterior worldspace GECK] Video by '''001cf73''' for the basics.
 +
 
 +
When you finalize your outdoor navmesh, it will attempt to link up with the neighboring cell's navmesh. Any line segment along the edge of the navmesh that successfully links to the next cell will turn green. Navmesh vertices (the "node points" the lines align with) will often end up being automatically split by the GECK so that it can match up vertices. If part of the cell border isn't green, then the navmeshes between the two cells in that location aren't linked and NPCs won't cross from one cell to the other properly.
 +
 
 +
You don't have to be exact when lining up vertices on your navmesh, but you have to be reasonably close. If your navmesh triangle edges are too far away from the triangle edges in the next cell, the GECK won't be able to match them up. You don't '''have to''' "match vertex for vertex", but if you '''don't''' "match vertex for vertex", what can often happen is that part of the triangle is too far away vertically (Z-axis) from the triangle in the next cell and the GECK refuses to link it.  (You can just lift a navmesh's vertex a bit up (hold <Z> to lock it to the vertical, or Z-axis) to make sure it's above the ground, and then hit <F> like any other object to snap it to the first piece of collision that's directly below the vertexBut, watch out that you don't drop your vertex onto a piece of virtually invisible light and assume it's on the ground when it isn't.) So "matching vertex for vertex" will generally give you the best results.
 +
 
 +
If the cell boundary line isn't turning green, delete the navmesh triangles along the cell border and redo them so that the vertices are closer, then finalize your navmesh for that cell again.
 +
 
 +
Moving vertices is often not the best way to go about adjusting the navmesh.  If you're not careful (or aren't used to 3D modelling or UV-mapping) you can accidentally end up with triangles that have flipped normals and a navmesh for that cell that doesn't work. In which case, you're better off deleting any triangles that go under your addition (e.g. in the referenced video: a house straddling both cells) and then add new triangles to circumscribe the addition (e.g. the house).  Remember, any cell that you change the navmesh in needs to be finalized. Just making navmesh triangles isn't enough.
 +
 
 +
Observations:
 +
* Make sure to check your navmesh work from all different angles (that is: rotate it) to be certain it really is the shape you think it is.
 +
 
 +
* Apparently there is a '''check cover edges''' button which needs to be pressed before pressing '''finalize''' in all cells affected. So as long as you have no warnings, and have your vertex Z-axis lined up close with your triangle edges touching each other, this will most of the time create a new cell boundary (green) line.
 +
 
 +
: You can occasionally create this "green line" where no boundary was before by using only '''finalize''', but this doesn't seem to be the case when you delete them or make edits that remove the "green line".
 +
 
 +
* Keep your navmesh "triangle" count to 500 or less, at least in exterior cells.  If you exceed that limt, the engine does "weird things" like spawn items randomly that otherwise are not placed there.
 +
 
 +
* You don't need to draw ''cover'', really.  That gets done by the button designated for it on the navmesh ''toolbar''.  Never had a problem with the way the GECK does it automatically.  Haven't really pushed its limits or anything, so don't know how it would do in a really complex room, but think the average navmesh would have adequate cover drawn by the GECK with no input from you afterwards.
 +
 
 +
* You need to navmesh places where AI will go, but don't need to bother with it anywhere that can't have AI in it.  However, remember that the player can have companions, and they will need a navmesh.  You can of course force the player not to bring companions in your mod, but you should probably have a good reason for it.
 +
 
 +
* Note that nothing bad will happen if your companions can't come with you.  They'll just wait where the navmesh ends and then teleport to you when you exit the cell if need be.
 
</div>
 
</div>
  
<span id="Tip-CompoundConditionals"></span>
+
<span id="Tip-NavmeshPortal"></span>
==== TIP: Debugging Compound Conditionals ====
+
====TIP Navmesh marker for Portal relocates====
 +
: Thanks to '''chucksteel''' and '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Here's a programming tip for when a compound conditional (multiple tests on the same line) is not working as expected: split it up into nested conditions.  An "ElseIf" is equivalent to an "OR (||)" compound (assuming the "[do something]" portion is identical in both the "If" and "ElseIf" portions of the block), and each nested "If" statement is equivalent to an "AND (&&)" compound.
+
">After editing a navmesh, the green triangle that indicates a portal appears ... not under the door, nor near the marker, but in some completely random location. What gives?  Is this a problem?
  
So, using the example: "If (GetHitLocation == 1 || GetHitLocation == 2) && (rTarget.GetDead != 1) && (rTarget.GetIsCreature != 1)", change it into:
+
Nothing is wrong.  The portal will function properly, allowing followers and NPCs to use it correctly. The "green triangle" only confirms the connection and does not need to always be under the portal marker itself.  The player and NPC's will always spawn properly on the portal marker regardless of where the navmesh green triangle is located.
<pre>
 
If (GetHitLocation == 1 || GetHitLocation == 2)
 
    ; NVSE required: PrintD (string:expression), DBPrintC (formatted string)
 
    DBPrintC "Script [HeadshotAmmoSCRIPT], GetHitLocation = [%g].", GetHitLocation
 
  
    If (rTarget.GetDead != 1)
+
This seems to only happen if you create a navmesh, save the mod, then edit it later. If it really bugs you, then you can delete the entire navmesh for the cell and re-do it. No big deal for a small simple cell, but probably not something you want to do for a very complex navmesh in a large cell.
        ; NVSE required: PrintD (string:expression), DBPrintC (formatted string)
+
</div>
        PrintD "Script [HeadshotAmmoSCRIPT], rTarget.GetDead = [" + $(rTarget.GetDead) + "]."
 
  
        If (rTarget.GetIsCreature != 1)
+
=== NifSkope Mesh Editor ===
            ; NVSE required: PrintD (string:expression), DBPrintC (formatted string)
+
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
            PrintD "Script [HeadshotAmmoSCRIPT], rTarget.GetIsCreature = [" + $(rTarget.GetIsCreature) + "]."
+
* [http://www.youtube.com/watch?v=BvitRKEa1X0 How To Rotate A Mesh In Nifskope] 2 minute video by Zylice Liddell.
 +
* [http://www.nexusmods.com/newvegas/mods/56009/? Jokerine's Misc Resources Tutorials and Novac Bungalow: NifSkope Texture Paths by Jokerine] Mod PDF.
 +
* [http://www.nexusmods.com/newvegas/mods/64746 NIF tangents and binormals updater] Command line tool to batch update tangents/binormals.
 +
* [http://www.nexusmods.com/newvegas/mods/56203/? Material and Texture Animations in NifSkope - Tutorial] PDF/DOC download.
 +
* [http://niftools.sourceforge.net/wiki/NifSkope NifSkope Wiki] Wiki.
 +
* [http://forums.nexusmods.com/index.php?/topic/984792-tutorial-working-with-the-nicontrollermanager/ NifSkope: Working with the NiControllerManager] Forum Thread.  Alternate images available [http://www.mediafire.com/file/p0srsyrfuaszevp/Tutorial.zip here].
 +
* [http://www.nexusmods.com/newvegas/mods/45444/? Tutorials on Screenshots, NifSkope, Outfit creation and Posing by jonas opines] Mod.
 +
* [http://www.nexusmods.com/newvegas/mods/63770/? Nifskope Testing Skeleton] by clanky4. Mod for testing animations in NifSkope only.
  
            ForceActorValue Health 0
+
<span id="Tip-AttachLightSource"></span>
        Else ; (Can be dropped if you just want it to totally fail.)
+
==== TIP Attaching a light source to a mesh ====
            ; [do something]
+
: Thanks to '''MonsterMonkey''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
        Endif
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
    Else; (Can be dropped if you just want it to totally fail.)
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
        ; [do something]
+
background-color:#333333;padding:3px;
    Endif
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
Else
+
">So, you have an existing mesh that needs a light source added to illuminate only a portion of it. How do you go about it?
    ; [do something]
+
* Open your mesh in '''NifSkope''', and attach a "new node > ''bsvaluenode''" where you want the light source.
EndIf
+
* Now you'll have to open the '''GECK''', and find ''AddonNodes''.
</pre>
+
: ''AddonNodes'' are particle meshes that can use a light source.
Insert "debug messages" (examples given) as required to pin down what values your conditions are actually testing.  That should quickly isolate what is not as expected.  (I just repeat the '; NVSE required' comment line to remind myself of the required syntax differences with each line.  Not required otherwise.)
+
* ''AddonNodes'' have an '''Index number'''. You 'll need this '''Index number''' in '''NifSkope''', so make note of the one you want.
 
+
* Now go to '''NifSkope''', and in the ''bsvaluenode'' entry you created, go to the "value" line and write the related '''Index number''' of the ''AddonNode'' you want the mesh to use.
Use the game console "bat <filename>" command to run a "batch file" similar to this ("_MyDebug.bat") to trigger the debug print statements when testing.  You can type any series of console commands (one per line) into a Notepad or other plaintext editor file and save as a simple DOS text file.  The filename extension doesn't matter, and can be dropped when entering the command as the console ignores it if found, but the standard for all "batch files" is ".bat".  The file should be placed in the game root folder (where the game EXE file is found).  If the filename includes "spaces" then you need to enclose it in double quotation marks (i.e. type <bat "_My Debug File">).  See also: [[#Tip-Debugging|TIP: Debugging data to file.]]
+
The thread [http://forums.nexusmods.com/index.php?/topic/4522240-attaching-light-to-mesh/ Attaching light to mesh?] has an example of the before and after effect on an image.
* _MyDebug.bat:
+
</div>
<pre>
 
con_SCOF "_MyDebug.log" ; Output console messages to file "_MyDebug.log" in current directory
 
DBMode 1 65            ; "Enable Debug mode" command using decimal mod index
 
                        ; Most common reason for failure: incorrect decimal mod index for <ModPluginName>
 
                        ; NVSE required: PrintD (string:expression), DBPrint[C] (formatted string)
 
DBPrintC "Starting log for mod index 65(0x41) (<ModPluginName>) ..."  ; descriptive initialization message
 
</pre>
 
Without that "Enable Debug mode" command the debug print statements won't actually do anything normally.  The "semicolon" (;) signals an ignored comment from that point to the end of the line, but is not required except to explain the purpose of each command.
 
 
 
Place your "batch file" in the game root folder (where the "FalloutNV.exe" file is found). The filename begins with an "underscore" (_) so it will be sorted to the top of the file list, making it easy to locate.</div>
 
  
<span id="Tip-Debugging"></span>
+
<span id="TIP-FloatingHead"></span>
==== TIP: Debugging data to file ====
+
==== TIP Body part is floating ====
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas GECK and Modders" forum for help with the following.
+
: Thanks to '''AusAllerWelt''' of the Nexus "New Vegas GECK and Modders" forum for the basis of the folowing:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">The built-in mechanism for debugging is to display messages to the console (or HUD) screen. The console has a [http://geck.bethsoft.com/index.php?title=ToggleDebugText ToggleDebugText] function, which toggles an extra debug display to the console with 23 screens of data that can be paged through using the < Scroll Lock > key.<br>
+
">This problem is sometimes seen with a "mashup" (such as placing a helmet from one plugin on a head from another). Sometimes you can fix it by "skinning" the body part and leaving the ''scene root'' where it is to have the result appear correctly.
There is a list of "designer" debug tools, many of which are disabled in the retail version but may have been or eventually will be provided in a "script extender", listed for posterity here:
 
* [http://geck.bethsoft.com/index.php?title=Category:Designer_Debug_Tools Designer Debug Tools].
 
* [http://geck.bethsoft.com/index.php?title=Category:Console_Functions Console Functions]
 
  
To enable the console, make sure the ''bAllowConsole=1'' setting is in your game INI file.  The console can then be accessed in-game by toggling the 'tilde key' (the actual key can be <~>, <º>, <¬>, <|>,<^>, <\>, <§>, etc., depending on your keyboard layout), usually found near the "1" key across the top of most keyboards.  The console prompt will appear as a single blank line in the lower left-hand corner of your screen. You can scroll the console output using the "Page Up" and "Page Down" keys. The console is not case sensitive: entering any of "tdt" or "TDT" or "TdT" will toggle the debugging text.  More general information on the console can be found on the [http://en.uesp.net/wiki/Oblivion:Console UESP wiki] and holds true for later games.  Use "#" anywhere on a line to make everything after that symbol into a comment.<br>
+
There is a technique that allows a mesh to call for a bone without being skinned. (Details on how this works are "murky", but quite a lot of hats and headgear items use it in the game.)  For this the object needs to have its ''scene root'' in a specific position; or the bone "floats" at a distance from the rest of the body.
<br>
+
 
The forum article [http://www.nextgenupdate.com/forums/skyrim/560544-pc-skyrim-console-script-bat-file-compilation.html Skyrim Console Script/Bat File Compilation] is a tutorial with lots of information and ideas that can (with the appropriate changes) be used for other games.<br>
+
There is a bit of information about it in the [[Nifskope:_NiStringExtraData_guide | Nifskope: NiStringExtraData guide]].
<br>
 
If you use NVSE (at least while developing/testing your scripts), you can use the [http://geck.foesmm.org/index.php/SetDebugMode SetDebugMode] command from FOSE (all of which are supported by NVSE) as a toggle for debug messages.<br>
 
Then you can test if this mode has been enabled in your script with: <pre>if GetDebugMode ... endif</pre> or control the output to only appear by using commands with built-in checks such as [https://geck.foesmm.org/index.php/DebugPrint DebugPrint] or [https://geck.foesmm.org/index.php/PrintDebug PrintDebug].<br>
 
Note the distinction between these two types of commands.<br>
 
* The "DebugPrint" command, like "PrintToConsole" ([http://geck.foesmm.org/index.php/Print PrintC]), only accepts a string with optional "string format" specifiers as parameters (e.g. "my string: %g", iSomeNumber).<br>
 
* The "PrintD/PrintDebug" command on the other hand, like [http://geck.foesmm.org/index.php/Print Print], requires "string expressions": concatenated strings, string-returning functions, or [http://geck.foesmm.org/index.php/ToString ToString]'ed forms and numbers.<br>
 
* Don't mix the two types of message string formats. So it's either:
 
<pre>
 
set iStage to GetStage <Quest EditorID>
 
DBPrintC "Failed blah blah [%g], QStage [%g].", <Quest EditorID>.<QuestVariable>, iStage
 
</pre>
 
or<br>
 
<pre>
 
PrintD "Failed blah blah bark = [" + $(<Quest EditorID>.<QuestVariable>) + "], QStage [" + $(GetStage etc- + "']."
 
</pre><br>
 
* Other forms of "Print" has similar distinct requirements for their messages. Pay attention to their description's syntax.<br>
 
<br>
 
Often you want to know the state of various elements that are not stored in variables, for output.  A fairly common example of this is to print the current "Stage" in a "Quest".  You can use the "GetStage <Quest EditorID>" function in a conditional statement (e.g. ''If ( GetStage VT47 == 10 )'', but that by itself won't work as a parameter to a "PrintC" command.  Fortunately NVSE v4 added the [http://geck.foesmm.org/index.php/ToString ToString] function (abbreviated as the "$" symbol) which can be used to turn an "expression" into a string value (e.g. <span style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray; background-color:#333333; padding:3px;">PrintD "Active Quest [" + $(GetActiveQuest) + "Stage = [" + $(GetStage <Quest EditorID>) + "]."</span>).  Note the spaces separating the string concatenation "+" symbols are required.  Also that the "GetActiveQuest" function returns a ''RefID'' which is normally not printable but "$" converts into a string.<br>
 
<br>
 
Sometimes simply displaying messages to the screen or console is not sufficient to trace a problem.  NVSE provides a number of functions enabling you to dump debugging information to a text file.  These functions, and examples of how to use them, are listed on the GECK wiki under the subject [http://geck.bethsoft.com/index.php?title=Debug_Dumps Debug Dumps].  They all reference sending messages to the "console".  You need to first use the [http://geck.foesmm.org/index.php/Con_SCOF Con_SCOF] command to redirect console messages to a text file instead.<br>
 
<br>
 
When you need to send a sequence of commands to the console one immediately after the other, it is often useful to put them (one per line) into a plaintext "batch" file (e.g. "'''enabledebugfile.txt'''") placed in the game root folder, the same folder as the game executable (i.e. "<path>\common\Fallout New Vegas"), and use the console command "bat <filename>" (no extension and without the quotes) to run it (e.g. "bat '''enabledebugfile'''").<br>
 
Example ''''enabledebugfile.txt'''' file:<br>
 
<pre>con_SCOF "_Debug.log"  # "_" is to cause the file to sort to beginning of Windows Explorer filenames
 
DBMode 1 61                # '61' is 'mod index' in decimal
 
DBPrintC "Starting log for mod index 61(0x3D) (<mod name>) ..."</pre>
 
 
</div>
 
</div>
  
<span id="Tip-DismemberingCorpse"></span>
+
<span id="Tip-ConvertNIFHeader"></span>
==== TIP: Dismembering a corpse. ====
+
 
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the following.
+
==== TIP Convert NIF header ====
 +
: Thanks to '''pixelhate''' of the Nexus Fallout "New Vegas Mod Troubleshooting" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">According to the game [lore], there were a bunch of people beheaded in Nipton, but there were no beheaded bodies. So I created a bunch of NPCs and had them immediately get beheaded as soon as they spawned. This is the script I used:
+
">When you want to change the header of your custom mesh from "NiNode" to "BSFadenode" (because it prevents your object from moving, etc.) or vice versa:
<pre>
+
Select the '''NiNode''', <Right Click>, select "Block | Convert", and choose your node type.  
scn zzMongoBeheadedScript
+
</div>
  
Begin GameMode
+
<span id="Tip LightingPropertyFlags"></span>
    If (GetDead == 0)
+
==== TIP Lighting Property Flags ====
        Kill zzMongoCrucDead1REF 1 -1
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
    Endif
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
End</pre>  
+
background-color:#333333;padding:3px;
Just give this script, or rather your modified version of it, to your NPC in the dialog box where you define the NPC, under the ID and name. You probably know this already, but just making sure.
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">The thread [http://forums.nexusmods.com/index.php?/topic/1188259-bslightingshaderproperty-basics/ BSLightingShaderProperty Basics"] has a "quick reference" guide and some links to additional information.
 +
</div>
  
{The "kill" command is a shorthand name for the [http://geck.technodeep.net/index.php/KillActor KillActor] function.  You could use the "[ActorRef].command" syntax to make it explicitly clear who is the object of the command (being affected by it).  When the script is attached to an NPC via dialog, they become the implied "ActorRef".  Think of the "[ActorRef].command" syntax as "[subject].action [parameters]".  The "[]" are used to indicate it is an "optional" component of the function.}
+
<span id="Tip-ModelMashups"></span>
  
'''zzMongoCrucDead1REF''' is one of the beheaded NPCs. Basically, by using him as the killer, he gets blamed for all of the deaths and not the player or anyone else (prevents any factions from getting angry at the player or with other factions). "1" is the dismembered part, which in this case is the head. You'll want to change this for your exploded NPC. "-1" is the cause of death, which you will want to change to "0" for {an} explosion. The documentation for {the function} [http://geck.technodeep.net/index.php/GetCauseofDeath GetCauseofDeath] has a list of values for the cause of death.
+
==== TIP Merging parts from different source files ====
 
+
: Thanks to '''madmongo''' and '''M48A5''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
There are ready-to-use scripts available for several combinations of dismemberments in the GECK already.  To use them, drop a new cubic activator in the cell where you want to use it and point it to one of the "GenericDismembermentXXX" base forms. Then set its linked reference to the corpse that you want to dismember.
 
</div>
 
 
 
<span id="Tip-Dispel"></span>
 
==== TIP: Dispel Effect ====
 
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">A [http://geck.technodeep.net/index.php/Dispel Dispel] function call often doesn't take effect immediatelyThere is also a risk the spell will stick on any creature for which the code doesn't apply (depending upon the type of duration set, of course).  The following is a "good practice" trick for scripted spells (aka [http://geck.technodeep.net/index.php/Actor_Effect Actor Effect]) to keep in mind.
+
">Sometimes you want to "mash up" parts of mesh (and texture) files from different sources. You might think to export parts of models from the source files as "*.OBJ" files, and then import them into your "*.NIF" files as "*.OBJ" in NifSkopeThis is not how this is usually done, and will generally produce "array Shader Textures are invalid" and "device position incorrect after block number ##" errors. These are caused by missing ''BSShaderPPLightingProperty'' entries, and thus no ''BSShaderTextureSet''.
  
At the end of your ''ScriptEffectStart'' Block:
+
Generally speaking: "*.OBJ" files are for use importing into Blender, and should be exported as "*.NIF" files to work in NifSkope.  Blender is a much better tool for this sort of thing.
<pre>
+
 
else
+
When moving '''parts''' of meshes between "*.NIF" files in NifSkope, use the "Copy Branch" and "Paste Branch" functions.
  set DoOnce to 2 ; (or some appropriate value)
+
 
endif</pre>
+
'''NifSkope''' does not display ''textures'' from BSAs by default.  You have to point '''NifSkope''' to the BSA files location in it's settings.  In the '''NifSkope''' UI, left click "Options".  In the drop down menu, choose "Settings | Resources".  In the panel that opens, you will have to add the path to the BSAs. It should be the complete path, starting with the drive letter.  When you open "Resources" you should see a complete path to (and including) the "Data" folder.  If not, click on "Auto detect game path".
  
and at the top of your ''ScriptEffectUpdate'' Block:
+
When using ''custom textures'', you need to set the texture ''relative path'' to the '''loose file''' in the NIF with '''NifSkope'''.  This is done under ''BSShaderPPLightingProperty/BSShaderTextureSet''.  ("Relative" meaning the path starts BELOW the game "Data" folder: as in "textures\<some sub-folder>\<some filename>.dds".  No drive letters or any path above "textures\"; without even "Data\".  See the wiki article [[How_to_fix_hard-coded_texture_paths_in_NIF_files|How to fix hard-coded texture paths in NIF files]] for specific instructions.)
<pre>
 
if DoOnce == 2
 
  dispel <YourSpell/ActorEffect>
 
  return
 
endif
 
</pre>
 
 
</div>
 
</div>
  
<span id="Tip-EventHandler"></span>
+
<span id="Tip-ModelLighting"></span>
==== TIP: Don't overlook EventHandlers ====
+
 
 +
====TIP Model Lighting====
 +
: Thanks to '''EPDGaffney''' and '''pixelhate''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">Q: When you change the texture of an item with the GECK it always ends up different then the ground texture even if it's using the same texture.  Why?  Example: railroad tracks roadbed and ballast is always different than the surrounding terrain.
When you want to do something affecting multiple Actors, such as providing a particular dialog option or behavior, instead of editing their scripts directly consider using an '''NVSE''' [http://geck.technodeep.net/index.php/Event_Handling Event Handler] instead (functionality added by '''NVSE 4.6+''').
 
  
'''EventHandlers''' provide the very powerful ability to "trick" the game engine into supplementing or overriding the limitations of the standard GECK "On<Event>" functions such as "OnAdd", "OnActivate", or "OnEquip" into running a script to emulate something else in a "User Defined Function" (UDF)A simple example of this is the "Note EventHandler" script and UDF in [[#Tip-Notes|TIP: Passing a 'Note' to the player]], which is using this technique to "trick" the engine into running a script as if the note had been triggered by an "OnEquip" or "OnActivate" function without ever using that command; in this example instance by a mouse click or key press in a menu. See also [[#Tip-HotKeyEventHandler|Tip: EventHandler-HotKey]].
+
A: The model determines the lighting in this game.  I'm asking, in the vanilla game was it seamless?  I don't mean the 2D ".dds" texture file; I'm asking, did it look seamless in-game? [No, it doesn't.]
  
Note that just using an '''EventHandler''' isn't sufficient. The normal activation event will still need to occur. You have to disable interaction with the target Actor first if you want to prevent dialog, somehow. With '''JIP LN NVSE''' you can use the "SetInteractionDisabled" function.
+
(For any unfamiliar graphics related terms, please see the [http://web.archive.org/web/20170713081056/http://www.darkcreations.org/testg/wiki/Glossary TESTG Glossary].)
  
'''EventHandlers''' on objects are invoked ''before'' the actual event happens; hence the different timing for them compared to script blocks like "OnEquip".
+
So, the way it works is an object is lit dependent upon several factors.  The first is the ''normal map'' and its ''alpha channel''.  Obviously, you're telling me these are all the same texture, so that's not the problem here but it is certainly something to be aware of.  The ''normal map'' behaves as you expect, and its ''alpha channel'' is used as the ''specular map''.  Generally, you want that ''specular map'' to be mostly dark, down to drawing distinctly different effects in-game from a portion of a ''specular map'' that is 5% bright and 8% bright, for example (that is, 0% is pitch black, and bringing the RGB values all up 5% from 0 is 5%).
  
The mod creator should not be concerned about using "script extenders" and their plugins.  Other than providing notice to the downloader of their mod that such are required, there are no "downsides" to using them as far as the game engine is concerned; and they provide fixes to some deep level engine bugs that can only be provided by something working at that level (which mods can't).  Almost any load order with more than a dozen mods is likely to already require their use.  They are a mod creator asset, providing enhanced capabilities.  Utilize them.
+
Now, be aware that the ''specular map'' is manipulated in '''NifSkope''' but its effects are completely ignored visually until you see it in the '''GECK''' or the game, though the '''GECK''' usually doesn't display it accurately to the way it will look in-game.
  
Please see the article [http://www.loverslab.com/topic/39417-tutorial-nvse4-part-5-event-handlers-user-defined-events-udes/ NVSE4+: Event Handlers & User-Defined Events (UDEs) - Part 5] by DoctaSax for details.
+
So, now that the basics are out of the way, the rest of the lighting stuff is determined per model in '''NifSkope'''.  Open your train tracks model in '''NifSkope''' (located in ''Meshes\dungeons\metro\exterior''), and click on the dirt portion: [[File:EPDGaffney_TrainTracks_Fig01.png|thumbnail|100px|TrainTracks_Fig-01]](See '''TrainTracks_Fig-01'''.  {{Thumbnail_enlargement_message}})
</div>
+
<br>
 
+
This tells you quickly and easily which ''NiTriStrips'' it is. Expand that and go to the ''NiMaterialProperty'' node that is attached to the ''NiTriStrips'' for the dirt: [[File:EPDGaffney_TrainTracks_Fig02.png|thumbnail|100px|TrainTracks_Fig-02]] (See '''TrainTracks_Fig-02'''.  {{Thumbnail_enlargement_message}})
<span id="Tip-HotKeyEventHandler"></span>
+
<br>
==== Tip: EventHandler-HotKey ====
+
The ''Specular'' and ''Emissive'' both have an effect but it's really the ''Glossiness'' entry that's likely to have the effect you're looking for.  It will take a good bit of trial and error.
: Thanks to '''FiftyTifty''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
+
<br>
 +
Other things that can have an effect are the ''Shader'' flags: [[File:EPDGaffney_TrainTracks_Fig03.png|thumbnail|100px|TrainTracks_Fig-03]] (See '''TrainTracks_Fig-03'''.  {{Thumbnail_enlargement_message}})
 +
<br>
 +
and though not in this case (unless the terrain model has it), other texture slots besides the ''diffuse'' and ''normal maps'': [[File:EPDGaffney_TrainTracks_Fig04.png|thumbnail|100px|TrainTracks_Fig-04]] (See '''TrainTracks_Fig-04'''.  {{Thumbnail_enlargement_message}})
 +
<br>
 +
The ''NiTristripsData'' can also have vertices colored (used for shading purpose). If that's the case, that part will always look darker no matter what changes are made in the previous settings.
 +
 
 +
However, looking at images of the vanilla [railroad track] graphics, I think they just did their ''UV maps'' in a way that makes the textures look more cohesive just where they meet, perhaps, but they definitely aren't seamless, at least in the screenshots I'm seeing.
 +
 
 +
: '''Radioactivelad''' and '''KiCHo666''' add:
 +
The engine only supports a limited number of visible light sources on a given piece of landscape, and that includes the Pipboy light. Static objects can handle more, but even they are pretty limited.  Another thing to consider is ''light radius'' overlapping. From experience, one object can have up to 3 lights affecting it with the ''light radius'' overlapping. If a 4th one is introduced, then the 4th light will simply not affect that object or one of the previous 3 lights will stop working. The 3 light limit seems to be standard for the forward type of rendering that FNV uses.
 +
</div>
 +
 
 +
<span id="Tip-RotateMesh"></span>
 +
 
 +
====TIP Rotate Mesh====
 +
: Summary from [http://www.youtube.com/watch?v=BvitRKEa1X0 How To Rotate A Mesh In Nifskope]
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520; color: lightgray; background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">
 +
:* < Right-click > the object in the '''NifSkope''' "viewport", then "transform | edit | R (rotate in +/- 1-180 degrees)".
 +
:* After you have it positioned correctly: < Right-click >, "transform | apply".  
 +
</div>
 +
 
 +
<span id="Tip-ShinyLines"></span>
 +
==== TIP Shiny lines in exported NIF normal map ====
 +
: Thanks to '''TzeHuen''', '''pixelhate''', and '''KiCHo666''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Please see the article [http://www.loverslab.com/topic/39417-tutorial-nvse4-part-5-event-handlers-user-defined-events-udes/ NVSE4+: Event Handlers & User-Defined Events (UDEs) - Part 5] by DoctaSax for details first.
+
">The [http://www.nexusmods.com/newvegas/mods/64746 NIF tangents and binormals updater] command line tool does a better job than NifSkope to fix this problem, and can do batch jobs.  But it can also be resolved manually in NifSkope by:
: Required knowledge:
+
* Make a copy of your mesh for this test.
:* UDFs, blocktypes, forms and refs
+
* Open the test NIF in NifSkope and select the ''NiTriStrips'',
: Also required:
+
* <right click> and select "Face Normal" then "Smooth Normals".
:* NVSE 4.6+
+
: If the shiny lines disappear, then they are  mesh related and probably due to the export settings from your 3D program.
 +
* If that doesn't resolve the problem, then select "update tangent space".
 +
</div>
  
CIPCIS' method in [http://www.cipscis.com/fallout/tutorials/detecting_keypresses.aspx NVSE: Detecting Keypresses] is not ideal, as it uses '''GameMode''' for the bulk of the scripting. The point of having event handlers, is to only process code when we need to, rather than every frame or every few seconds.
+
=== Scripting ===
 +
Other sections have relevant information to this subject. The following "Tips" in particular are applicable.
  
To get a "HotKey EventHandler" to work, you make two scripts. One is the "EventHandlerRegistration" script you attach to the quest, so you can detect the keypress: that has a very barebones '''GameMode''' block, which then readies the event handler.  
+
* See the [[#Custom NPCs|Custom NPCs]] section regarding scripting "AI Packages".
<pre>
+
:* [[#Tip-GetDistance|TIP: AI Packages and Distance.]]
scn MyHotkeyEventScript
+
:* [[#TIP-CompanionWheel|TIP: Companion Wheel.]]
short bDone
+
:* [[#Tip-Hostility|TIP: Hostility between NPCs.]]
 +
:* [[#Tip-NPCMovement|TIP: Making NPCs move (aka "AI Packages").]]
 +
:* [[#Tip-CompanionPerks|TIP: Perks for Companions.]]
 +
:* [[#TIP-AIPackages|TIP: Using AI Packages.]]
  
Begin GameMode
+
* See the [[#Dialogue & Lip-synch|Dialogue & Lip-synch]] section regarding scripting "Dialogue" and "Conversations"
    if bDone == 0                                        ; Eventhandler has not previously been set
+
:* [[#Tip-Translators|TIP: Conversation/Quest system.]]
        SetOnKeyDownEventHandler MyEventUDFScript 1 210  ; Establish the Eventhandler for the "<Insert>" key.
+
:* [[#TIP-GetSpeaker|TIP: Get the current speaker reference.]]
        set bDone to 1                                  ; Eventhandler has now been set, so this code will be skipped next frame
+
:* [[#Tip-OCE|TIP: Obsidian Conversation Editor (OCE).]]
    endif
+
:* [[#TIP-RandomNPCcomments|Tip: Random NPC Comments.]]
End
+
:* [[#Tip-DialogTabs|TIP: Standard Dialog.]]
</pre>
 
You then point it to the second, "User-Defined Event" script you made, which is the one that does all the work. If you look at the first example "EventHandlerRegistration" script ('''MyHotkeyEventScript''') attached to the quest, it calls the following line:
 
<pre>
 
SetOnKeyDownEventHandler MyEventUDFScript 1 210
 
</pre>
 
The "User-Defined Event" script '''MyEventUDFScript''' is the one that does the bulk of the processing. The "1" parameter means we want to enable the event handler, and "210" parameter is the scancode for the "<Insert>" key.  (See the wiki article [[#DirectX_Scancodes_And_How_To_Use_Them|DirectX Scancodes And How To Use Them]] for a list of the DirectX scancode keys.)
 
  
The '''MyEventUDFScript''' has to follow the basic structure of a "User Defined Function" (UDF).<br>
+
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
Example:
+
* [http://geckwiki.com/index.php/Category:Conditions GECK Category: Conditions] GeckWiki.
<pre>
+
* [http://geckwiki.com/index.php/Category:Tutorials GECK Category: Tutorials page] GeckWiki.
scn MyEventUDFScript
+
* [http://geckwiki.com/index.php/Adding_an_Options_Menu GECK: Adding an Options Menu Tutorial] GeckWiki.
int iKeyID ; this is the keypress that triggered the EventHandler (e.g. scancode "210": the "<Insert>" key)
+
* [http://geckwiki.com/index.php?title=Bethsoft_Tutorial_Basic_Quest GECK: Bethsoft Tutorial Basic Quest] GeckWiki.
; Other variable definitions as required
+
* [http://www.nexusmods.com/newvegas/mods/45278/? GECK: Companion] Mod by '''Caprius'''.
 +
* [http://geckwiki.com/index.php/List_of_Global_Variables GECK: Global Variables List] GeckWiki.
 +
* [http://youtu.be/3Bauvvmo31g GECK: Making a Counter] (for tracking scripts.) Video (9:57) by ''' by Seddon4494'''.
 +
* [http://geckwiki.com/index.php/Notes GECK: Notes] GeckWiki.
 +
* [http://www.youtube.com/watch?v=zDE4yHOz0cQ GECK: Script to Spawn/Enable NPCs at a Certain Time] Video (2:28) by ''' Seddon4494'''.
 +
* [http://geckwiki.com/index.php/Scripting_for_Beginners GECK: Scripting for Beginners] GeckWiki.
 +
* [https://www.youtube.com/watch?v=19mppusqPzQ GECK Tutorial - Terminals]  Video (6:30) by ''' Seddon4494'''.
 +
* [http://nvse.silverlock.org/ New Vegas Script Extender (NVSE)] Site.
 +
:* [http://geckwiki.com/index.php?title=Category:Functions_(FOSE) FOSE Functions] GeckWiki.
 +
:* [http://geckwiki.com/index.php?title=Complete_List_of_Functions_in_NVSE NVSE Functions] GeckWiki.
 +
:* [https://geckwiki.com/index.php?title=Category:Functions_(JIP) JIPLN NVSE Functions] GeckWiki.
 +
:* [https://geckwiki.com/index.php?title=Category:Functions_(JohnnyGuitar_NVSE) JohnnyGuitar NVSE Functions] GeckWiki.
 +
:* [http://www.cipscis.com/fallout/tutorials/detecting_keypresses.aspx Tutorial - NVSE: Detecting Keypresses] Wiki.
 +
* [http://fallout.fandom.com/wiki/Pip-Boy_3000 Pipboy Interface Tabs] Wiki.
 +
* [http://cs.elderscrolls.com/index.php?title=Performance_Problems TES: Script Performance Problems] Original TES Construction Set Wiki.  Some things on this site are obsolete information as regards the GECK.
 +
* [http://www.nexusmods.com/newvegas/mods/63880/? Timescale Pacemaker] Mod.
 +
* [http://tesalliance.org/forums/index.php?/topic/2318-how-to-make-a-terminal/ Tutorial - How to Make a Terminal in Fallout 3 DO something] Wiki.
 +
* [http://www.youtube.com/watch?v=RLrV-R_0hnY Tutorial - Making something happen every day] Video (5:19) by '''Seddon4494'''.
 +
* [http://www.youtube.com/watch?v=APnz-qdQxfQ Tutorial - Scripting Notes] Video (9:43) by '''Seddon4494'''.
 +
* [http://www.nexusmods.com/newvegas/mods/62777/? Unlocked MCM - Advanced MCM script templates] Mod by '''DoctaSax'''.
 +
* The following tutorials are found on an "Adult (18+) Only Access" site.
 +
:* [http://www.loverslab.com/topic/33181-scripting-in-fallout-new-vegas-for-dummies/ Scripting in Fallout New Vegas for Dummies] by '''tomm434'''.
 +
:* [http://www.loverslab.com/topic/4320-fallout-new-vegas-geck-scripting-help-101/ Fallout New Vegas GECK & Scripting Help 101] Thread.
 +
:* [http://www.loverslab.com/topic/26749-tutorial-nvse4-part-1-syntax-and-expressions/ NVSE4+: Syntax and Expressions - Part 1] by '''DoctaSax'''.
 +
:* [http://www.loverslab.com/topic/26802-tutorial-nvse4-part-2-user-defined-functions-udfs/ NVSE4+: User Defined Functions (UDFs) - Part 2] by '''DoctaSax'''.
 +
:* [http://www.loverslab.com/topic/26963-tutorial-nvse4-part-3-string-variables/ NVSE4+: String Variables - Part 3] by '''DoctaSax'''.
 +
:* [http://www.loverslab.com/topic/27076-tutorial-nvse4-part-4-array-variables/ NVSE4+: Array Variables] by '''DoctaSax'''.
 +
:* [http://www.loverslab.com/topic/39417-tutorial-nvse4-part-5-event-handlers-user-defined-events-udes/ NVSE4+: Event Handlers & User-Defined Events (UDEs) - Part 5] by '''DoctaSax'''.
 +
:* [http://www.loverslab.com/topic/22270-fnv-scripting-nx-variables/?hl=nvse4 FNV Scripting: NX Variables] by '''DoctaSax'''.
  
Begin Function {iKeyID}
+
Refer back to the section [[#GECK_Form-ID,_Base-ID,_Ref-ID,_and_Editor-ID|GECK Form-ID, Base-ID, Ref-ID, and Editor-ID]] as necessary until the different types of "IDs" become second nature.  The distinctions are crucial to getting various script functions to work correctly. They will primarily work with either ''Editor-ID'' or ''Reference-ID'' values.  They seldom work with both, but if so the syntax must be read carefully to determine which type of value is used for each parameter.
  ; Main processing logic for when the triggering key is pressed goes here.
 
End Function
 
</pre>
 
It's a more difficult concept to understand than to implement.
 
</div>
 
  
<span id="Tip-GameDaysPassedBug"></span>
+
Even if you have another favorite text editor, strongly suggest using '''Notepad++''' along with the GECK specific syntax highlighters listed in the [[#Programs_and_Tools|Programs and Tools]] section.  These will catch most syntax errors, saving you a lot of grief.
==== TIP: GameDaysPassed Bug ====
 
: Thanks to '''Asterra''' and '''DoctaSax''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
"><span style="margin:0px 10px 10px 100px;border:1px solid #00C600;color: green;
 
background-color:#fff5f5;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">NOTE: This bug is now fixed in the game engine by the '''JIP LN NVSE''' plugin (linked under the [[#Programs_and_Tools|Programs and Tools section]]).</span>
 
  
''GameDaysPassed'' is a GECK "base type" [http://geck.foesmm.org/index.php/List_of_Global_Variables Global Variable] used to return the number of days that have passed "in-game".  However, it has been found to become inaccurate over time (more quickly if the timescale is adjusted to anything other than the default of 30) and eventually to fail to advance at allThis causes problems with many vanilla and mod scripts; particularly in "Hardcore Mode" where the sudden advance can cause instant, unexpected death.
+
There are 3 kinds of scripts:
 +
* The default when creating one is an ''Object'' script.  Which means this is a script that can be attached to anything in the ''object tree'' of GECK that has a "script" drop down field ... except for ''Quests'' and ''Base Effects''.
 +
* ''Quests'' require you to select the script as a "Quest" typeThey are called (triggered) by various "Quest" conditions.
 +
* ''Base Effects'' require you to select the script as an "Effect" type, available when you are on the window with the "Script" drop down listOnly those type of scripts will show up in the list.
  
"The nature of [the problem] seems to be that single-precision floating point math is only accurate up to so many digits, 7 to 8, depending. Sleep, wait and fast travel update the var by sufficiently high values to never go unnoticed. But during gamemode ''GameDaysPassed'' [(GDP)] is updated by tiny fractions, every frame. That means that every frame, it should be updated by something close to TimeScale / (FPS * 86400). At 30 timescale and 30 FPS, that's 0.0000157407407407 (etc.); 0.000005787037037 (etc.) at FPS 60.
+
''Effect'' scripts attach on "Assoc Item" just below "Effect Archetype". But ''Object'' and ''Quest'' scripts are straight forward on where to attach the script: to "Objects" or "Quests" respectively.
  
"If you add it to the existing GDP value, then even at day 1 in the game (day 6, isn't it?), the result of this addition, stored in the GDP var, will only be reliably accurate until 6 digits after the decimal point. The var itself could store more precise data, but it's the calculation that is inaccurate and the result of that is what's being stored. So it may only accurately apply an increase of 0.000005 at 60 FPS or 0.000015 at 30. The following digits of the GDP value will be very much random, and each time the increase is added, it just results in new randomness beyond those digits, possibly rolling over to a higher digit and affecting its accuracy too.
+
Reference variables must be "defined" and assigned a value before they can be used in a command.  This often occurs in one of the script types that are executed before the one you are looking at in the moment. But don't assume they are: verify if your script won't save.
  
"Then, when GDP hits 10, or 100, the whole problem becomes much larger because from then on only 5, or 4, digits behind the decimal point are theoretically reliable, and because of earlier inaccuracies that happened over time, it's hard to trust them either.
+
So in short: creating a script & saving it (which "compiles" it; turning it into actual code instead of "human readable" instructions) is required for it to then exist.  If a script fails to compile, then it won't be saved.  Use '''CIPCIS''' to determine if it is a simple syntax error preventing your script from compiling.  But bear in mind '''CIPCIS''' is not aware of "script extender" syntax, so such will produce as error as an unrecognized command.  Otherwise the problem is most likely either using an inappropriate command choice or the wrong type of value for the function in question.
  
"The sad part is that all numeric variables in FNV are actually stored as double-precision, but math involving any var is single-precision."
+
But merely existing in a saved/compiled form means nothing towards having that script tell the game engine what to do.  You must attach it to something (based upon which one of the 3 types it is) to then have the script code interact with the other dynamic game code.
  
The mod [http://www.nexusmods.com/newvegas/mods/63880/? Timescale Pacemaker] by '''Asterra''' was developed specifically to address this issue. It has since been corrected in the game engine by [http://www.nexusmods.com/newvegas/mods/58277/? JIP LN NVSE Plugin] v51.60 or later.</div>
+
==== Scripting Assistance ====
 +
* [http://www.nexusmods.com/newvegas/mods/64888/? GECK Extender] NVSE Plugin.  Project to extend GECK functionality and bug fixes.  Compatible with all NVSE script extender plugins.  <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: red; background-color:#fff5f5;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">(Do not use together with '''GECK Powerup''' (nor the '''Forked''' version), which it replaces.)</span>
 +
* [http://www.nexusmods.com/newvegas/mods/41642/? GECK 1.4 Powerup Mod]. Comes in a "standalone" version for the "vanilla" GECK functions, and one for GECK with NVSE functions. It fixes and improves some issues while providing the missing messages when the GECK compiler finds an error or warning, and lets you save a script without compiling it. Considered "essential" by experienced mod creators.  <span style="margin:0px 10px 10px 0px;border:1px solid #00C600;color: red; background-color:#fff5f5;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">(Replaced by '''GECK Extender'''.  Do not use both together.)</span>  
 +
* [http://www.cipscis.com/fallout/tutorials/beginners.aspx CIPSCIS: Scripting for Beginners] HTML Tutorial.  Does not support "script extender" syntax.
 +
* [http://code.tutsplus.com/tutorials/top-15-best-practices-for-writing-super-readable-code--net-8118 Top 15 Best Practices for Writing Super Readable Code] HTML.
 +
* [http://www.nexusmods.com/newvegas/mods/67395 RuntimeScriptProfiler] by '''lStewieAl - shadeMe'''.  An NVSE plugin to profile script execution. Ported from '''shadeMe''''s '''Oblivion''' plugin.  Use this to check how efficient your script is when running.
  
<span id="Tip-ParsingLines"></span>
+
==== '''TIP Best Practice'''  Do not begin EditorIDs with numbers ====
==== TIP: GECK parses the entire line before evaluating ====
+
<span style="color: red; background-color:#fff5f5;" id="TIP-EditorIDNames"></span>
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the following.
+
: Thanks to '''madmongo''' and '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Bear in mind when using compound conditions [&& (and), || (or); see [http://geck.foesmm.org/index.php/Category:Conditions GECK Category: Conditions]] that the GECK parses the entire line at onceFor instance:
+
">
<pre>If (IsFormValid rActor) && (IsReference rActor)</pre>
+
The GECK confuses Editor-IDs, script names, and variable names that begin with numbers for Form-IDsThey are not the same and scripts will fail to compile with (if using the GECK Power-Up plugin) messages to the effect it can't find the (perfectly valid) command.  It's "best practice" to avoid prefixing anything with numbers. Do use a consistent naming convention, such as beginning Editor-IDs and variables with the initials of the mod, so they are grouped together in the GECK's lists by type making it easier to locate them for editing later.
can crash your  script if ''rActor'' doesn't hold a valid form, because ''IsReference'' will freak out over it and the ''IsFormValid'' check does nothing to prevent it. You need to break that line up into two:
 
<pre>
 
if IsFormValid rActor
 
  if IsReference rActor</pre>
 
Geck script processes an entire line: substituting the result values from functions, and then determines the "true/false" result of any conditionals last, so if the ref var holds an invalid form or none at all, it will be passed to ''IsReference'' in a compound conditional line.  The ''IsFormValid'' conditional check in the same line doesn't stop that - the only way to prevent it is to split up the line. Overall it's good practice to stagger your validity checks to separate lines as this becomes an issue if you use a function with ref syntax in such lines.
 
</div>
 
  
<span id="Tip-PCHealth"></span>
+
When you create Forms for your mod, the GECK assigns them Form-IDs in sequence.  This means in the "Object Window" right-hand pane, you can expand the (collapsed by default) column between the "Editor ID" and "Count" field labels so it shows the "Form-ID".  You can <Click> on that field label to sort them.  As your mod will likely have the last "mod index" of those currently loaded, your forms will be sorted to the top when sorted into "descending" order.
 +
</div>
  
==== TIP: Get Actor Health functions ====
+
<span id="Tip-Encapsulation"></span>
<div class="boilerplate metadata" id="Notice_Box" style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray; background-color:#333333; padding:3px; word-wrap: break-word">Bear the following in mind when attempting to determine the health of any actor:  
+
==== '''TIP Best Practice'''  Encapsulation ''Parens Brackets and Braces'' ====
*'''[ActorRef].GetHealthPercentage''' is unreliable as it's determined from "base health" and sometimes returns values over 1.0 (100%).
+
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
*'''[ActorRef].GetAV ''Health''''' returns the current, modified health value (not the maximum)It takes into consideration permanent effects (e.g. perks) as they contribute to your "health pool".
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
*'''[ActorRef].GetBaseAV ''Health''''' returns the base value with no consideration for permanent (e.g. "Life Giver" perk) or temporary effects (eg. Buffout).  
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
*'''[ActorRef].GetPermAV ''< StatName >''''' returns include permanent effects (e.g. Perks like "Tag!", and from Skill Books), but no bonus from situational perks, equipped items, drugs, etc..
+
background-color:#333333;padding:3px;
*'''[ActorRef].ResetHealth''' Restores the actor's health and cures crippling damage.  
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
*No function known at the moment can return the max value with temporary effects.  
+
">Do not get careless when choosing how you "group" ([http://geckwiki.com/index.php?title=Encapsulation Encapsulate]) expressions in FNV scripting. For instance, some functions need to be "encapsulated" using "(parentheses)", aka 'parens', in order to return a single value.  "Parens" around complete expressions are almost always not harmful and can help the line parser in determining the order in which to process multiple expression combinations on the same line.  (See [http://geckwiki.com/index.php?title=NVSE_Expressions NVSE Expressions] on operator precedence and overriding the default precedence.) However, "[square brackets]" are exclusively used for handling arrays and NVSE string vars. "{Curly Braces}" encapsulate a function as an argument to another function. (i.e. ''"if eval (somefunc <span style="color: red;">'''{'''</span>someotherfunc arg1 arg2<span style="color: red;">'''}'''</span> arg3)"'' ). Mixing up their use can allow a script to compile, but fail the first time it is run.  Their different uses can often be easily overlooked when trying to determine why things are going wrong.  Best practice is to use "parens" unless you know you need to use something else.
 +
</div>
  
Please see the '''GECKWiki''' [http://geckwiki.com/index.php/ActorValue ActorValue] page regarding the "Damage Pool" and that determining an Actor's current health is a multistage process. It looks like "GetAV Health" is what you want to track current damage, as [http://geckwiki.com/index.php/DamageActorValue DamageActorValue] function implies that it does reflect the "Damage Pool" from frame to frame.
+
<span id="Tip-FunctionParameters"></span>
</div>  
+
==== '''TIP Best Practice'''  Function parameter separation with commas ====
&nbsp;
+
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Some people are under the impression that the use of commas on script functions causes errors.<br>
 +
Using commas to separate function parameters is actually preferable, especially when you use advanced NVSE scripting (CO, arrays, UDFs with dynamically constructed parameters in the call line). Much like extensive use of parentheses, it not only keeps things more readable for yourself, but prevents errors at compile or at run time. It isn't usually needed for simple code, but it's a good practice to get into for when it is needed, so let's please not advise against doing it.</div>
  
==== TIP: Level Lists and GetBaseObject versus GetBaseForm ====
+
<span id="Tip-ShareVariables"></span>
: Thanks to '''EPDGaffney''', '''DoctaSax''', and '''Mktavish''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
==== '''TIP Best Practice''' Sharing Variables between Scripts ====
 +
: Thanks to the contributors to the [http://www.loverslab.com/topic/4320-fallout-new-vegas-geck-scripting-help-101/ Fallout New Vegas GECK & Scripting Help 101] forum on the (Age 18+ gated) "LoversLab.com" site for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">According to the [http://geckwiki.com/index.php/Main_Page GECKWiki]:<br>
+
">When you want to share variables across more than one script, create a simple "Quest" with a name indicating it's purpose (e.g. "<MyCurrentQuest>VAR").  It doesn't need to do anything (i.e. it can be completely empty), but you need to enable the "StartGame enabled" checkbox.
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
+
 
style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;
+
Then create a new script to be run when that Quest starts, so name it something related like "<MyCurrentQuest>VARScript", and use the "Script Type" drop down list at the top right of the "Script Edit" shortcut icons to designate it as "Quest" type.
/* Remove the next four 'white-space' lines to restore default white-space processing. */
+
 
white-space: pre-wrap;      /* css-3 */
+
Now define any variables you want to use across more than one script or permit others to read for other Mods.
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
+
 
white-space: -pre-wrap;      /* Opera 4-6 */
+
Important points to remember:
white-space: -o-pre-wrap;    /* Opera 7+ */
+
* As a general practice: Declare all your variables at the top. If you declare them all over the place when you need them, you'll eventually regret it.
word-wrap: break-word;      /* Internet Explorer 5.5+ */
+
 
">
+
* Variables declared OUTSIDE the BEGIN blocks retain their value between runs, and in save games. Variables declared INSIDE a BEGIN block will be reset to 0 each time the script is run. In this "variable declaration script" you do not need or want any "BEGIN/END" blocks.
There are three types of level lists in Fallout 3 (& New Vegas):
+
* [http://geckwiki.com/index.php/LeveledCreature Leveled Creatures],
+
* Prefix your variable with their "function type" to avoid confusion when using them in other scripts.
* [http://geckwiki.com/index.php/LeveledCharacter Leveled Characters], and
+
 
* [http://geckwiki.com/index.php/LeveledItem Leveled Items].
+
* Use "floats" (floating decimal values) or "ints" (integer values), but never "shorts". The less you have to type the better, and using a "non-int" alias in the '''GECK''' language will cause confusion among those who know another programming language.  Don't expect a "short" to roll over at 32767 or 65535; it will roll over at 2-billion-something just like a regular signed integer. 
Refer to the individual pages for details about each of them.
+
 
In general, a leveled list allows the choice of object or actor to be dependent on the level of the player relative to the [http://geckwiki.com/index.php/Encounter_Zone Encounter Zone]. Therefore as the player grows in level, the actor or object generated changes. Loot in containers is better. Creatures and NPCs encountered are tougher.
+
* Use prefixes for ''usage'' and ''functionality'', not "datatype".
* [http://geckwiki.com/index.php/GetBaseObject GetBaseObject] Returns the base object id of the calling referenceWill return the leveled character/creature Actor form if called on references spawned by one. {The Form-ID will actually be an ''object'' that contains a list of other leveled Actors.}  Use ''GetBaseForm'' to return the Actor "base form" instead.
+
 
* [http://geckwiki.com/index.php/Gbf GetBaseForm] (A function added by NVSE) Returns the actual base form of a leveled calling reference. {Meaning it goes within the list of the calling leveled object, and finds the Base-ID template of the leveled object it picked at random from that list. Hence this would have to be called in scripting, after the leveled item reference loads.}</div>
+
* All numeric vars in the '''GECK''' language are signed (can be negative).
 +
 
 +
* When naming variables, try to be consistent. You don't need to adhere to any naming scheme other than what you like but stay consistent with whatever you do choose to use. Many programmers are "Hungarian Camel Case" users (e.g. "int iMyCount", "short sTheValue", "ref rTheNPC", etc.) following [http://en.wikipedia.org/wiki/Hungarian_notation#Systems_vs._Applications_Hungarian Hungarian notation].
 +
 
 +
* Strive to always put constants on the LEFT. "if (0 == foo)" is preferable to "if (foo == 0)". This is more important in other languages, but it's because statements are evaulated from left to right across a line of code. The practice comes from the C languages, where the first time you write "if (foo = 0)" when you meant "if (foo == 0)" you'll understand why.
 +
 
 +
* Use parenthesis generously, but judiciously. You can almost never have too many.
 +
 
 +
* Indent your code consistently (makes bug hunting easier). Settle on using spaces or tabs (spaces are heavily preferred as tab stops can vary in spacing on the same line) and stick to itIf you expect to indent a lot, try to use no fewer than two spaces for readability.
 +
 
 +
* Try to be ''explicit'' at all times rather than ''implicit''.  Assuming that version X treats something one way can burn you when version Y changes the default behavior. A good example is using a function without prefacing it with "Player.". While this may be assumed to be true, it can easily not be true depending on situation. So if you mean to run something on the player, be explicit and say so... never trust implicit compiler/interpreter behavior.
  
The trouble with any actor templated to a leveled list is that their Base Object (''GetBaseObject'', aka GBO) is not static, but dynamic (i.e. if you called ''GetBaseObject'' on the ref in-game you would get a Form-ID that starts with FF (255). This explains the problem with some of the debug readouts, in that ''IsInList'' called on the reference won't match the base form that is stored in the GECK. To get that base form, you'd need ''GetBaseForm'' (GBF) and look it up in the list with ''ListGetFormIndex''.  This is "normal behavior" for GBO: i.e. when an actor's base form is directly templated to a levelled listSome instances, however, seem to be templated to another actor form which in turn is templated to a levelled list. (There really is no limit to how many levels of templating that can go on, except the restraint of the person making the NPCs.) That may explain the base object not returning as dynamic in some instances, and so, being checked off correctly by ''IsInList''. This is an area not extensively explored.
+
* Just because you can change something doesn't mean you should. There are tons of globals and gamesettings that can be altered with almost no effort on your part ... with horrible side effects and consequences for everyone else. Try to ALWAYS consider what repercussions your changes could have for other scripters and other moddersAlways try to remember that your playstyle isn't more or less important than everyone else's playstyle. Be considerate in your choices whenever possible.
  
Recall (from the [[#GECK Form-ID, Base-ID, Ref-ID, and Editor-ID|GECK Form-ID, Base-ID, Ref-ID, and Editor-ID]] section) that the "Base ID is the number assigned to a template for an object that is used to create many instances of that object."  And "the Reference ID is the unique ID of an individual object (unlike the Base ID, which is an ID for an object template)" that is placed in the game world.
+
* If you've created a mod and find yourself whining about how many bugs your users complain about and you end up spending a ton of time on support ... well, stop putting so many bugs into your mods!  Just remember one word: testing, testing, testing, testing, testing, testing, testing, testing, testing, testing, testing, TESTING. Each hour spent testing will eliminate 5+ hours of support. Well worth the time and effort.
  
In other words: GBO returns the "Leveled" Base-ID (from the leveled list in the instance under consideration). And that can be stored in a reference variable.  GBF goes into the list within the "Leveled" Base-ID and gets the root Base-ID that was the template of the leveled object.  That can also be stored in a reference variable but is not actually a "Ref-ID" and cannot be used as one, as it has no specific object. (The "reference" / '''Ref-ID''' is expected to contain active characteristics, such as world location, current stats, etc. of a specific object instance in the game world.)
+
* Document your mod somewhere. Maybe not in the scripts themselves (due to size limits), but somewhere. Coming back to a mod you made two years ago can be harder than writing it from scratch. The more documentation you have, the easier maintaining a mod will be.
  
[http://geckwiki.com/index.php/GetSelf GetSelf] returns a Ref-ID that you can store in a reference variable, referring to the specific instance of it in-game.   ''GetSelf'' is only useful when this information is accessed externally, or when the scripted reference's Ref-ID needs to be passed as a parameter to a function like [http://geckwiki.com/index.php/PushActorAway PushActorAway]This can be a problem with inventory objects because they are destroyed regularly.
+
* Understand the block types and what functions can and should and can't and should NOT be used in each one. You can easily block thread execution with the wrong function and freeze a quest. Always give your code time to actually work. Many functions take longer than 1 pass (1 frame) to run. If in doubt, create stages and allow your script time to breathe(See [[#TIP_Block_Types_Multiple_vs_Single_Frame_processing|TIP Block Types Multiple vs Single Frame processing]].)
</div>
 
  
<span id="Tip-InteriorRadio"></span>
+
* NEVER NEVER NEVER use a local variable in a '''result script''' if you plan on it retaining a value. That includes ''quest stages, dialogue or any other small fragment of code'' that isn't in a script file. All of these scripts erase their variables after execution. Also, these fragment scripts act on top of other variables, replacing their scope. So if you have a global named '''iMyCount''' and you declare '''int iMyCount''' in a fragment, you are blocking the global and replacing it with your variable while that fragment is runningWhenever possible, avoid using local variables in a fragment unless they're "fire and forget" variables that do not need to retain any information.
==== TIP: Limit Radio Range to multiple Interior Cells ====
 
: Thanks to '''EPDGaffney''' and '''user826''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">In order to limit a Radio Broadcast to only be heard when the Player is inside a cluster of linked interior cells, you need to set the ''Talking Activator'' to ''Broadcast Range Type = Linked Interiors'' in the first cell.  (Place the ''Activator'' out of reach and sight to hide it from the player.) You then use ''[http://geckwiki.com/index.php/Bethsoft_Tutorial_Finalize_and_Connect Teleport Doors]'' as usual to link the interior cells together for the Radio Broadcast.
 
  
You may find it preferable to use a set of "hidden, dummy doors" to provide the Radio Broadcast linkageBe sure to flag such doors to be "Hidden from Local Map".
+
There are many more tips from experienced scripters in that threadCheck it out.
 
</div>
 
</div>
 +
 +
<span id="Tip-VariablePrefixes"></span>
  
<span id="Tip-Mannequins"></span>
+
==== '''TIP Best Practice'''  Type prefixes for Variables ====
==== TIP: Mannequins (static Actors) ====
+
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
: Thanks to '''b0bulat0r''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">A "mannequin" is nothing more than an Actor that doesn't move: no idle poses, sandbox, travel packages, etc.All it takes is adding an "OnLoad" script with the line "SetActorsAI 0", e.g.:
+
">It's easy to get confused as to what sort of values are "valid" for any given variable once you get beyond a simple script, especially if it was defined elsewhere than the current script.  When you "declare" a variable, you give it a "type" which determines both which sorts of values it can accept and how they are stored.  If it's expecting a "reference" then you can't assign it a "number" or "string"Experienced programmers have learned it's a "best practice" to use "type prefixes" in front of their variable names to help keep them straight.
<pre>
 
Begin OnLoad
 
  SetActorsAI 0
 
End
 
</pre>
 
</div>
 
  
<span id="Tip-MasterDependencies"></span>
+
These "type prefixes" are lowercase letters that go before a capitalized variable name, denoting a specific programming use for that variable.
  
==== TIP: Master Dependency Checking ====
+
* b - A ''boolean'' (aka "''bool''") is a variable that can be only true (set to 1) or false (set to 0).  We don't have true ''bools'' in this '''GECK''' programming language, but variables that a programmer knows will only ever be set to true or false can be referred to as a ''bool'' and its name can be chosen accordingly for organizational purposes.  They are technically defined as the short/integer variety of '''type'''.
: Thanks to '''miguick''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
+
: Example:
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
+
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
background-color:#333333;padding:3px;
+
style="margin:0px 10px 10px 30px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
 +
/* Remove the next four 'white-space' lines to restore default white-space processing. */
 +
white-space: pre-wrap;      /* css-3 */
 +
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 +
white-space: -pre-wrap;      /* Opera 4-6 */
 +
white-space: -o-pre-wrap;    /* Opera 7+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">When the game starts you may want to check for items introduced in DLCs (e.g. "HonestHearts") and store the results in a list.
+
">
 
+
short bFoundJohn
'''NVSE''''s ''[http://geck.technodeep.net/index.php/IsModLoaded IsModLoaded] "HonestHearts.esm"'' and ''[http://geck.technodeep.net/index.php/GetFormFromMod GetFormFromMod] "HonestHearts.esm" "xxxxxx"'' can't go wrong for such a thing.  (The quotation marks around the ''pluginName'' and ''hexFormID'' strings are required.)  Where "xxxxxx" are the last 6 digits of the FormIDs of the records you are concerned about.  The GECK displays them in a minimized column that you can stretch.
+
int bFoundJohn
 
</div>
 
</div>
 +
* f - a ''float'' is a variable that can store numbers that are in between integers.  Essentially, numbers that can have decimal values (e.g. "1.001").  Some functions will return a number that is in between two integers, and if you want to store that value as a variable for use in your script, it generally must be declared as a ''float'' variable.  A popular one is '''GetSecondsPassed''' for example.
  
<span id="Tip-ModAdditionsList"></span>
+
: Example:
==== TIP: Mod Additions list ====
+
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
+
style="margin:0px 10px 10px 30px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
+
/* Remove the next four 'white-space' lines to restore default white-space processing. */
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
+
white-space: pre-wrap;      /* css-3 */
background-color:#333333;padding:3px;
+
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 +
white-space: -pre-wrap;      /* Opera 4-6 */
 +
white-space: -o-pre-wrap;    /* Opera 7+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Sometimes you want to know about all the additions of a particular type (such as 'weapons' for example) that a specific mod adds to the game.
+
">
 
+
float fTimer
With the '''JIP LN NVSE''' plugin (which now since v40 incorporates the "Lutana" extensions) this is quite easy.  Use a combination of the [http://geck.technodeep.net/index.php/GetModIndex GetModIndex] and [http://geck.technodeep.net/index.php/GetLoadedTypeArray GetLoadedTypeArray] functions with [http://geck.technodeep.net/index.php/Form_Type_IDs Form Type IDs] code '40' ('Weapons'):
 
<pre>
 
array_var aWeapons
 
int iIndex
 
 
 
let iIndex := GetModIndex "<TheMod>.esp"
 
let aWeapons := GetLoadedTypeArray 40, iIndex
 
</pre>
 
 
</div>
 
</div>
 +
* i - an ''int'' variable is the same as a ''short'' variable, but we only use the 'i' prefix so that we can use the 's' prefix to denote a ''string'' variable, which we'll talk about in a minute.  ''Int/short'' variables can only be integers, or whole numbers.  If you try to use one to store a value that should be a ''float'', it may round down (truncate) to the nearest whole number or it may just not work.  These are the most common variables for our use.
  
<span id="Tip-NPCWpnChoice"></span>
+
: Example:
==== TIP: NPC Weapon Choice ====
+
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
style="margin:0px 10px 10px 30px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
+
/* Remove the next four 'white-space' lines to restore default white-space processing. */
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
+
white-space: pre-wrap;      /* css-3 */
background-color:#333333;padding:3px;
+
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 +
white-space: -pre-wrap;      /* Opera 4-6 */
 +
white-space: -o-pre-wrap;    /* Opera 7+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">When trying to force an NPC to use particular combat tactics (such a choice of Weapon) under specific circumstances, remember that the higher cyclic "Damage Per Second" (DPS) rate of the Weapon is what governs their choice; not the base "Damage" inflicted per shot.  {For Armor, it's "Damage Resistance" (DR) that governs.}  This is hard-coded into the game engine.
+
">
 
+
int DoOnce<br>
Consequently, in order to force the NPC to switch weapons, you may need to temporarily remove their current weapon and any alternative choices you don't want them to use, saving both the baseform of the removed weapon(s) and any timer using either a [http://geck.technodeep.net/index.php/Category:Tokens Token] or JIP's [https://geckwiki.com/index.php/Category:Auxiliary-Variable_Functions_(JIP) Auxvars] on the NPC in order to restore them after circumstances change again.  (Essentialy this is the same as the "reverse pickpocket" trick to cause an NPC to switch gear so you can steal what they had been wearing.) See [[#TIP:_Timers|TIP: Timers]] regarding limitations which necessitate this "Token" or "AuxVars" approach.
+
int iDoOnce<br>
 +
int bDoOnce<br>
 +
short DoOnce<br>
 +
short iRaidersKilled ; (probably the number of raiders player killed)<br>
 +
int bRaidersKilled  ; (probably if the player's killed all the designated raiders, or if they've killed at least one, depending on what you want)
 
</div>
 
</div>
 +
* s - a ''string'' variable is a weird one.  It's text, and requires special treatment.  It tends to be stuff the scripting language doesn't really understand and just takes on faith that you do.  You probably won't work with these for a while.  In general, the content of a ''string'' variable is for "human consumption"(such as a message or note) rather than use by the script/program.
  
<span id="TIP-MsgVariable"></span>
+
:Example:
==== TIP: Pass a variable number into a script message ====
+
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
+
style="margin:0px 10px 10px 30px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
+
/* Remove the next four 'white-space' lines to restore default white-space processing. */
background-color:#333333;padding:3px;
+
white-space: pre-wrap;      /* css-3 */
 +
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 +
white-space: -pre-wrap;      /* Opera 4-6 */
 +
white-space: -o-pre-wrap;    /* Opera 7+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">
 
">
* Read the "Formatting messages" section in the GECK article on the [http://geck.bethsoft.com/index.php?title=ShowMessage ShowMessage] function.  For an integer: use "%.0f" or "%g".  Include the formatting switch in the text in the message form, like this:<pre>"The winning number was %g."</pre>
+
string_var sDogName ; whatever the player typed for a dog's name at some point in your quest, so that it can appear in notes<br>
* Then pass the script variable to the ShowMessage function along with the message, like this:
+
string_var sBone    ; whatever bone/node in the .nif model is relevant to the script for whatever reason
<pre>
 
  set iWinningNumber to GetRandomPercent
 
  ShowMessage WinnerMessage, iWinningNumber</pre>
 
* Here's an example with [http://geck.bethsoft.com/index.php?title=MessageBoxEx NVSE], which allows you to show messages without creating a new message form. NVSE also supports a number of extra switches that can't be used in ordinary message forms.
 
:<pre>MessageBoxEx "The winning number was %g.", iWinningNumber</pre>
 
 
</div>
 
</div>
 +
* a - ''array'' variables are incredible, but an "advanced" technique.  It's a steep learning curve but they're easy once you've passed that.  They are basically like form lists, but they are made dynamically at run-time via script.
  
<span id="Tip-Notes"></span>
+
: Example:
==== TIP: Passing a 'Note' to the player ====
+
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
style="margin:0px 10px 10px 30px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
 +
/* Remove the next four 'white-space' lines to restore default white-space processing. */
 +
white-space: pre-wrap;      /* css-3 */
 +
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 +
white-space: -pre-wrap;      /* Opera 4-6 */
 +
white-space: -o-pre-wrap;    /* Opera 7+ */
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">
 +
array_var aNCR  ; maybe every actor in the area that is in an NCR faction, or maybe every NCR actor in the entire game, including all loaded mods<br>
 +
array_var aEntry ; this is a standard array variable that could be called anything and still work, but it's typically the name given to a short-lived variable that is used during any number of operations carried out on the larger array that contains all the stuff in the group you're working on.
 +
</div>
 +
 
 +
: <span style="color: red; background-color:#fff5f5;">WARNING: Mixing up ''references'' and ''base objects'', especially when assigning them to arrays, is one of the most common and lethal mistakes in '''Gamebryo''' scripting.  Always double check what the '''''type''''' of value any function you are using to assign them to an array is returning.  Unfortunate results can become baked into save game files, causing bloat.  The only remedy in such cases seems to be deletion of the ".nvse" file for the "save game" when it occurs, which will affect other mods which depend upon information saved in it with unpredictable results.</span>
 +
 
 +
* r - ''reference'' variables can store either a ''reference form'' or a ''base form''.  ''Base forms'' are the original "template" form as it was created in '''GECK''', BEFORE placing it in the game world.  ''Reference forms'' are specific instances of a ''base form'' AFTER they have been placed in the game world.  (There can be many ''reference forms'' of the same ''base form''.)  Their relationship to ''reference variables'' is that of a specific actor or object that you'll need to refer to later in your script.  (See the [[#GECK_Form-ID_Base-ID_Ref-ID_and_Editor-ID|GECK Form-ID Base-ID Ref-ID and Editor-ID]] section.)
 +
 
 +
: Example:
 +
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"
 +
style="margin:0px 10px 10px 30px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
 +
/* Remove the next four 'white-space' lines to restore default white-space processing. */
 +
white-space: pre-wrap;      /* css-3 */
 +
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 +
white-space: -pre-wrap;      /* Opera 4-6 */
 +
white-space: -o-pre-wrap;    /* Opera 7+ */
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">
 +
ref rSelf  ; often used in '''GetSelf''' operations for functions that may require it, like some uses of '''PushActorAway''' or '''KillActor'''<br>
 +
ref rTarget  ; often the choice for functions like '''GetOwnerLastTarget'''
 +
</div>
 +
Note you can use a different prefix with the same variable name (e.g. see the various "DoOnce" definitions under "i - integer"), and the '''GECK''' will treat them as distinct, separate entities. (But note "short DoOnce" and "int DoOnce" are not unique variable names.  They are defining the same variable name to the same type.)  However, that can get very confusing after awhile and is not recommended as a casual practice.  But it can have it's place.
 +
</div>
 +
 
 +
<span id="Tip-SaveBloat"></span>
 +
 
 +
==== Tip '''Best Practice''' Avoiding Save Game Bloat ====
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">This is a bit lengthy because it covers more than simply commands and functions, but concepts and how to implement themUnlike the tutorials listed, this tip is about how to pass a "note" to the Player directly or display it outside of the Pip-boy "Notes" tab(The concepts presented here similarly apply to passing along "recipes". See also [[#Tip-Recipes|TIP: Passing a 'Recipe' to the player]] in that instance.)
+
">'''LuthienAnarion''' (of the '''JIP LN NVSE Plugin''') reports the game saves data about every reference in every cell you have ever visited.  Save files are supposed to get larger and larger as you explore more and more locations (called "bloat"), and their size is something the player should not normally concern themselves with(Save Files in the tens of MB are common.)  Bloat is less of a problem for '''FO3/FNV''' than it is for '''Skyrim''' because scripts are not included in the save game filesHowever, script authors should still try to avoid adding to it wherever possible using the following '''best practices'''.
 +
 
 +
[http://geckwiki.com/index.php?title=Ar_Null Ar Null]: As of '''NVSE 4.6.2''', arrays defined in [http://geckwiki.com/index.php?title=User_Defined_Function UDF] scripts are cleaned up automatically, '''but those held in other scripts are not'''. Therefore it is essential to use ''Ar_Null'' to clear any local array variables when other scripts terminate to avoid save game bloat.
  
* The "Note" object:
+
[http://geckwiki.com/index.php?title=Sv_Destruct Sv_Destruct] the local string variables or they can cause save game bloat.
  
From a modder’s perspective, it’s important to be aware that [http://geck.technodeep.net/index.php/Notes GECK: Notes] are different to standard items. They store text, and that text will not receive an [http://geck.technodeep.net/index.php/Inventory_Reference inventory reference] like other ''objects'' / "pick-ups" and can never be dropped (though they can be removed in several less standard ways).  Additionally, "notes" can’t have a script attached to them directly, though there are several workarounds available.  (Most of the tutorials listed on the subject are addressing these workarounds.)
+
[http://geckwiki.com/index.php?title=Disable Disable] does not remove references from the game, just stops them from rendering. Do not rely on ''Disable'' to prevent savegame bloat by removing references.  
  
However, like normal "pick-ups", "notes" can be assigned a model (mesh file) and an inventory ''icon'' that will be visible when being taken from a container (and '''not''' in the player’s Pip-Boy), when the mod creator has placed them in such containersAny model can be chosen, but it must have ''collision'' in order to be "picked up".  "Holotape" and "paper" models are most common.  If the "note" is to be "picked up" as a model outside of a container in the game world, no icon is necessary; and if the "note" is never to be seen in the game world, no model is needed.  If it would not be seen in a container or in a cell, then it wouldn't need either one.  
+
[http://geckwiki.com/index.php?title=MarkForDelete MarkForDelete] should be used to remove '''temporary references''' from the game.  '''GECK''' Editor placed objects cannot be deleted.
  
"Notes" can be displayed in a ''terminal'' as well, and via the ''terminal form'' can be configured to be added to the player’s Pip-Boy upon reading them there, or not be added.
+
Excessive use of ''repeatable quest stages'' causes load time problems in some cases. The effect should be apparent after only a few hours of play. Low quest delays seem to affect it. '''Roy Batterian''' (of '''TTW''', '''4GB Patcher''', and 30+ mods) has never been able to determine the exact circumstances under which it occurs so he has just quit using them and uses functions instead.  ''Quest stages'' are "save baked", so perhaps this is behind it.
  
[[File:EPDGaffney_NoteObject.png|thumbnail|100px|NoteObject]]
+
[http://geckwiki.com/index.php?title=PlaceAtMe PlaceAtMe] and [http://geckwiki.com/index.php?title=PlaceLeveledActorAtMe PlaceLeveledActorAtMe] should be used sparingly, as they do create '''temporary references''', so once the player leaves the loaded cell and they are unloaded they will still remain in the save file as scripts cannot run on them to delete or reference them.  
Once in the Pip-Boy, "Notes" are one of four things: text, an image, a voice, or a sound.  (See the figure [[:File:EPDGaffney_NoteObject.png|NoteObject]]. {{Thumbnail_enlargement_message}})
 
  
It's often easiest to take an existing "note" item that shares the model you wish to use and then change the '''EditorID''' to make a new object. That way all the associated mesh and icon/texture files are already linked.  Otherwise you have to unpack them from the BSA as the '''GECK Editor''' doesn't look there for those files.
+
Actors should be ''spawned'' with '''spawn markers'''; having them initially disabled and then enabled will cause them to spawn immediately. If you want to do "waves of enemies" you can disable the '''spawn marker''' again and run resurrect on it (provided the spawned actor is dead and the marker is persistent), and then re-enable it.  
{{BSA Extraction Warning}}
 
  
* Scripting with "Notes":
+
''PlaceAtMe'' can also cause various '''havok''' problems like invincible creatures that have '''effect shaders''' and other weirdness: the '''Reavers''' in the "presidential metro" of '''Fallout 3''' is a good example of this bug.  It can also cause crashing due to memory problems and other stuff.  (See any mods with waves of enemies created this way; e.g. '''Someguy2000''''s '''The Better Angels''' exhibits this issue).
  
To add a "note" directly to the player’s [http://fallout.gamepedia.com/Pip-Boy_3000 Pipboy], use the ''[http://geck.technodeep.net/index.php/AddNote AddNote] <NoteID reference>'' function.  Unless the "note" is ever meant to be added in some other way (e.g. as an object dropped into the game world), a "note" added in this way will never be seen in the game world or any container and thus requires no icon or model.
+
Tons of lootable items also cause save bloat as the state of the items is "baked" when they are taken.
  
To trigger an '''OnAdd''' event when acquiring a "note", as one may be accustomed to doing with other items, a workaround is required.  A ‘dummy’ "item" must be placed in the game world or a container, and this item can’t be a "note" item.  It must be a separate form, which can be named the same as the relevant note (but can’t share the same '''EditorID'''), and this item can have a script attached to it with an '''OnAdd''' script block.  Then just drop it in a cell (the video [http://www.youtube.com/watch?v=APnz-qdQxfQ Tutorial - Scripting Notes] Video by '''Seddon4494''' covers three basic methods of accomplishing this); or use ''[http://geck.technodeep.net/index.php/AddNote AddNote] <NoteID reference>'' in a (running) script somewhere (such as a dialog ''End Result Script'') to proactively get it into the Player's inventory instead of waiting for the Player to pick up the ''item''.  (See the figure [[:File:EPDGaffney_NoteObject.png|NoteObject]].  {{Thumbnail_enlargement_message}})
+
Dropped items get "save baked" too, so it's best to put them in a container.
You can (if you wish; it's not required) then have your script remove the ‘dummy’ "item" (whose only purpose is to provide a flexible anchor for the note) from their inventory, and add the text/image/sound of the note (e.g. "FCRaiderNote" in the example below) to the player. It will then appear in their Pipboy "Data" tab under "Notes".
 
  
For more on the subject see the [http://geck.technodeep.net/index.php/Bethsoft_Tutorial_Basic_Quest Bethsoft Tutorial Basic Quest] article.
+
There is also the '''GECKWiki''' article [http://geckwiki.com/index.php?title=Causes_of_CTDs Causes of CTDs] authors should be aware of as well.
 +
</div>
  
Example script attached to the game world "item" (e.g. the "holotape"):<pre>
+
<span id="Tip-CheckVariables"></span>
  begin OnAdd Player        ; Run when player picks up 'misc. item'
 
    AddNote FCRaiderNote    ; Give note to player
 
    SetStage COLOMQ1 10    ; Start/set quest 'COLOMQ1' at stage 10
 
    RemoveMe                ; Remove 'misc. item'
 
  end
 
</pre>
 
  
* Using Message Functions:
+
==== TIP Assigning and Testing variables ====
 +
: Thanks to '''Mktavish''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Assigning a value to a variable and then attempting to use that variable immediately afterwards usually doesn't work reliably.  This is because the game engine appears to need at least one frame between the assignment and then being able to have that assigned value available in the variable in the same "action block" (e.g. "GameMode", etc. block).
  
Though the traditional method of viewing a "note" is by way of clicking on them in the '''Pip-boy''', "notes" are currently very unwieldy unless they're shortA mod using the concept of an "EventHandler" (see "Employing an EventHandler" below) to detect when the player clicks/presses a key or gamepad button on a note in the '''Pip-boy''' could theoretically change that if someone wanted, or someone could add readable books this way, or any number of things.  Such can make use of the improved ''message functions'' available to us by way of [http://nvse.silverlock.org/ New Vegas Script Extender (NVSE)] and [http://rd.nexusmods.com/newvegas/mods/58277 JIP LN NVSE Plugin] mods; which now include:
+
The solution is to first check if the variable is set to other than it's default, and if not to then set the variable, and process the "true" condition the next frameFor example:
* [http://geckwiki.com/index.php/MessageEx MessageEx] (NVSE)
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
* [http://geckwiki.com/index.php/MessageBoxEx MessageBoxEx] (NVSE)
+
style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;
* [http://geckwiki.com/index.php/MessageExAlt MessageExAlt] (JIP LN)
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
* [http://geckwiki.com/index.php/MessageBoxExAlt MessageBoxExAlt] (JIP LN)
+
">short DoOnce
 +
Begin GameMode
 +
: if (DoOnce > 1)
 +
: ; Already done once, so leave immediately.
 +
:: Return
 +
: elseif (DoOnce == 0)
 +
:: set DoOnce to 1 ; to be processed next frame
 +
: else
 +
: ; do whatever when the value of "DoOnce" is "1", including calling another script (e.g. "QuestScript") if needed.
 +
:: set DoOnce to 2 ; signal this has already been done.
 +
: endif
 +
end</div>
  
(However, as these constantly are updated and added to, the mod creator is advised to search the list of functions on the [http://geckwiki.com/index.php/Main_Page Community Wiki] site lists of [http://geckwiki.com/index.php/Complete_List_of_Functions_in_NVSE NVSE] and [http://geck.technodeep.net/index.php/Category:Functions_(JIP) JIP LN] functionsThe "official" Bethesda GECK Wiki is not getting those updates to it's function list.)
+
Other variations on this idea can be implemented as well.  A timer can be implemented if longer than one frame's delay seems to be neededRemember that "GameMode" block processing is cumulative in effect from frame to frame.
  
'''MessageEx''' and '''MessageBoxEx''' are NVSE functions and allow one to pass the text directly, which is very convenient, but they don't give any options and '''MessageBoxEx''' does not offer the ability to "title" the messageThe other two are JIP functions that improve upon this greatly.
+
Note that there are only 3 [http://geckwiki.com/index.php/Category:Blocktypes blocktypes] that will continually read the code lines in successive frames:
 +
* [http://geckwiki.com/index.php/GameMode GameMode]
 +
* [http://geckwiki.com/index.php/MenuMode MenuMode]
 +
* [http://cs.elderscrolls.com/index.php?title=ScriptEffectUpdate ScriptEffectUpdate]
 +
Each having specific circumstances when they are running.  All other blocks (e.g. "On<Event>") are one frame occurrence eventsSee also [[#Tip-BlockTypeProcessing|TIP: Block Types (Multiple vs Single Frame processing)]].
 +
</div>
  
With the '''MessageBoxExAlt''' function (as of JIP version 53.60) it is now possible to pass a dummy, non-script form as the UDF script argument, in which case no script will be invoked when a button (or key) is pressed.  This will mean that you can use that same blank form for every message box that you want to give a title but don't need buttons for it.  The UDF script is where you would implement button functionality, and it's far quicker than vanilla.  Only one such "dummy UDF script" per mod would be needed in the case where you desired to use a message box with a title but no buttons and pass the text directly as a string.
+
<span id="Tip-LeveledLists"></span>
  
* Employing an EventHandler:
+
==== TIP Adding Items to Actors ''aka Leveled Lists'' ====
 +
: Thanks to '''Ladez''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">So you've created this fantastic new item (weapon / armor / clothing, etc.) and want it to start appearing in the merchant inventories or NPC loot.  How to go about it without manually placing it in every individual's inventory is the question.
 +
 
 +
The answer is "[http://geckwiki.com/index.php/LeveledItem leveled lists]".  These are lists which can populate inventories of actors when the Player has attained a specified level of experience.  The subject is addressed in the Nexus Forum thread [http://forums.nexusmods.com/index.php?/topic/2219064-adding-items-to-levelled-listsgra Adding Items to Levelled Lists/GRA] and should answer most of your questions, but here is the summary.
  
"Notes" are only ''Activators'' if they're being picked up via activating a note's "in-game World model", such as a "holotape" on a tableIn a container or when added via script, they are just "Notes".  (Technically, all pick-ups are ''activators'' that are disabled on activating them and an inventory reference is added to the player's container; with the exception of "notes", which have no inventory reference but are still added to the '''Pip-boy''', and their ''activator'' is still destroyed.)
+
The basic process is covered in the GECK Wiki under the topic "[http://geckwiki.com/index.php/Adding_items_to_vendors Adding items to vendors]".  Note that avoiding incompatibilities with other mods requires using one of the following three methods:
 +
# create a new container owned by the NPC;
 +
# create a quest/script to add the items to the NPC's existing vendor container;
 +
# create a quest/script to add the items to a vendor's leveled item list.
  
The advantage of [http://geck.technodeep.net/index.php/Event_Handling EventHandling] (added by the '''NVSE''') is that it can "fake" using a standard activator "event" such as '''OnEquip''', but instead trigger when you desire and the standard event isn't otherwise permitted; such as when a key or button is pressed in a menu.  "An event handler allows response to game events, without having to attach scripts directly to objects.  Instead, the scripter uses [http://geck.technodeep.net/index.php/SetEventHandler SetEventHandler] to register a [http://geck.technodeep.net/index.php/User_Defined_Function User Defined Function (UDF)] as a handler for a specific event. When an event occurs during gameplay, NVSE will invoke any handlers that correspond to it, passing information about the event to their function through its arguments." [Source - Community GeckWiki]  See [[#Tip-EventHandler | TIP: Don't overlook EventHandlers.]]
+
The third method is recommended by experienced mod makers, especially for Actors who are not "merchants", as the best way to assure compatibility with other mods.  Remember: an Actor is it's own "container" and can use anything in it's inventory if the "Use Inventory" checkbox is enabledConsider the term "vendor" as a specific example of an "Actor".
  
These two scripts provide a functional example of a "Note EventHandler" script and UDFscript.<br>
+
You need to identify which leveled lists are being used by the Actors you want to have your items, and then add the items to at least one of those lists.  Different "groups" of Actors in different locations (even members of the same faction) may use different lists.
Example "EventHandlerRegistration" script:
+
* Find a likely "LeveledCharacter"/NPC under "Actors", "< Double-click >" on the entry to "Edit" it and view the contents of the "Inventory".  Items that appear with a "green box" icon are lists which appear under the "Items" category as "Leveled Item" entries.  For example:
<pre>
+
: Under "NPC" is the Editor-ID "188NCRTrooperA", whose inventory contains "CondKnifeLoot" (a "Leveled Item").
scn NoteEventHandlerQuestScript
+
: You will find "Leveled Items" under the "Object Window | Items" category. If you "< Right-click >" on the entry for a "Leveled Item" (such as "CondKnifeLoot") and select the "Use Info" property, you can see what utilizes that item.  Scroll down that list and you want the ones of type "LVLI", which are "Leveled Lists".
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 +
style="margin:0px 10px 10px 30px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">'''EPDGaffney''' expanded: When you select the "Use Info" property of an item, you see the "Count" and "Users" columns.  Levelled items will always have a "Count" of "0" because "Count" is how many instances/references are placed in the game cells, as opposed to a container.  Because levelled items can never be placed anywhere but a container (including an Actor of course), they will always have "0" in that column.  "Count" from the "Use Info" property is the same as "Count" in the "Object Window".
  
int DoOnce
+
What makes this really confusing is that you have "Levelled Items" nested inside of other "Lists" inside of other "Lists" and so on, and these can eventually be tracked to a template actor, who has a "Use Count" of "0" because the items are never placed in the game but whose template inventory is used by 100 actors.  Meaning that levelled item with a (Use) "Count" of "0" and 1 "User" will in fact (potentially) be in 100 inventories once you start playing the game.
  
Begin GameMode
+
That said, a high "Use Info" Count is going to be reliable in that the item will turn up in the game for sure.  But just look at different merchant inventories to see what's really the best way to go in choosing a list for generally adding your item to the game.</div>
    SetOnMenuClickEventHandler OnMenuClickUDF 1 MapMenu/GLOW_BRANCH/MM_MainRect/MM_NotesList"
+
* "Form Lists" are under the GECK "Object Window | Miscellaneous" category.  Find a likely list, "< Double-click >" on the entry to "Edit" it and view the contents of the list to determine how suitable it is for your purposes.  DO NOT manually add your new item directly to this list.  Use one of the three methods above.
    Set DoOnce to 1
 
    If DoOnce == 1
 
        Set DoOnce to 2
 
    EndIf
 
End
 
  
Begin GameMode                               
+
Note that by default it takes 72 hours in-game for an Actor's "inventory" to get recalculated (updated from a "leveled list").  You can force the inventory to "reset" by calling the [http://geckwiki.com/index.php/ResetInventory ResetInventory] function on the container reference, but remember that "all previously added, removed, or calculated objects will be lost". See the GECK Wiki entry on "[http://geckwiki.com/index.php/Force_an_actor_to_equip_new_stuff Force an actor to equip new stuff]" as well.
    ; Note that I tend to 'over-check' in my scripts, to be certain it will work as intended.
 
    ; DoOnce probably didn't need to go past 1 before stopping the script.
 
    If DoOnce == 2
 
        StopQuest NoteEventHandlerQuest
 
    EndIf
 
End</pre>
 
  
and the "User-Defined Event" script:
+
The vanilla GECK function is "[http://geckwiki.com/index.php/AddItemToLeveledList AddItemToLeveledList]". As the wiki says: <blockquote>
<pre>
+
"This should be used in the RARE case where we want to add an item to a Leveled Item list that already exists in the ESM. Its primary use is for modifying lists from the base game in downloadable content. In most cases you should add items to form lists in the editor object windows. This is for those special cases where you want to alter the contents of a list at runtime or want to change it without putting it in your ESP/ESM file. Once altered using this function, it will persist in the save game data.
scn OnMenuClickUDF
+
 
 +
It can not be undone."
 +
</blockquote>
  
int iMenuID
+
The "Lutana" extension to NVSE (now part of the "JIP LN NVSE" plugin) has the following "leveled list" functions which are preferred as overcoming the drawbacks of the vanilla GECK functions.
int iElementID
+
* [http://geckwiki.com/index.php/LeveledListAddForm LeveledListAddForm]
string_var sElementName
+
* [http://geckwiki.com/index.php/LeveledListRemoveForm LeveledListRemoveForm]
string_var sNoteName
+
* [http://geckwiki.com/index.php/LeveledListReplaceForm LeveledListReplaceForm]
string_var sNoteNameUI
+
* [http://geckwiki.com/index.php/LeveledListClear LeveledListClear]
  
Begin Function {iMenuID, iElementID, sElementName}
+
So, scripting added items with functions such as ''LeveledListAddForm'' needs to be done every time the game is started.  Most do it at "launch", but it can be done at every "reload" instead.  The vanilla function ''AddItemToLeveledList'' by contrast will save in the "save game" data.  It's not necessarily a bad function if you know how to use it (with a ''bDoOnce'' condition check most likely).  But likewise, modders need to know that the '''Lutana''' functions must be done each session/game load.  Items already spawned will of course remain in inventories if the '''Lutana''' function is called just once, but the items will never turn up anywhere else once the game is closed unless the function is called again next time.
    Let sNoteName := LnGetName NoteEditorID
 
    Let sNoteNameUI := GetActiveUIComponentFullName
 
    If eval ((Sv_Find "MM_ListItem", sNoteNameUI) > -1) ; check if UI component is a note
 
        let sNoteNameUI += "/ListItemText/string"
 
        let sNoteNameUI := GetUiString $sNoteNameUI ; get the name of the highlighted note
 
            If eval (sNoteName == sNoteNameUI)
 
                ; do something
 
            EndIf
 
    Endif
 
  
    ; Don't forget to put all the string_vars here
+
Always test from a "new game" file instead of a save game from a play session.
    sv_Destruct sElementName, sNoteNameUI, sElementName
 
End</pre>
 
 
</div>
 
</div>
  
<span id="Tip-Recipes"></span>
+
<span id="Tip-Conditionals"></span>
==== TIP: Passing a 'Recipe' to the player ====
+
==== TIP Basic '''conditional test''' syntax ====
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">The "Category" field of the '''Recipe Editor''' window determines where the "recipe" is utilized (i.e. "the crafting station"), so it does NOT appear in the [http://fallout.gamepedia.com/Pip-Boy_3000 Pipboy] "Data" tab under "Notes".  It can be added to the game in the same manner as other "notes".
+
">A "[http://geckwiki.com/index.php/Category:Conditions conditional statement]" (an "IF" is the basic form) consists of a "test condition" (e.g. "<this test must be 'true'>"), '''possibly''' followed by yet another "compound conditional test" which may be regarded as "Either/'''OR'''" '''''or''''' "'''AND'''/Also MUST BE TRUE", all in a single statement which is then followed (in the GECK: on the next line) by the statements to be executed if the overall combined conditional statement is "true" in all respects.  That's a mouthful, but simply put all tests in the same statement must evaluate to 'true' for the statement to be true.  (Qualifier: Only one of the pair of "individual tests" in an '''OR''' "compound conditional test" must be 'true'.)  See [[#TIP:_GECK_parses_the_entire_line_before_evaluating|TIP: GECK parses the entire line before evaluating]].
 +
 +
The question of "encapsulation" (see [[# TIP:_Best_Practice_-_Encapsulation_-_Parens,_Brackets,_and_Braces|TIP: Best Practice - Encapsulation - Parens, Brackets, and Braces]]) most commonly arises with "compound conditional tests".  You could safely use "(parens)" to enclose the basic test, as in: 'If (IsModLoaded "mod.esp")' in the example below, but in general a "''function''" (i.e. "IsModLoaded") followed by a single parameter (i.e. "mod.esp") doesn't require it unless you are getting errors.  ''Functions'' that require more than a single parameter usually do need encapsulation; the type of enclosing characters depending upon the type of function.  "(Parens)" are most common and generally safest when in doubt.  Liberal use of "(parens)" with "compound conditional tests" ensures they are resolved correctly: (e.g. "If (<condition1> OR <condition2>)" means only one of either condition has to be 'true' for the statement to be 'true'.  Whereas "If (<condition1> AND <condition2>)" means both individual conditions must be 'true' for the statement to be 'true'You can mix compound conditionals (e.g. "If ( (<test1>) AND (<test2>) OR (<test3>) )" can be misinterpreted; whereas "If ( (<test1>) AND ((<test2>) OR (<test3>)) )" is unambiguous (spaces added for clarify grouping): either <test2> or <test3> can be true, but at least one of them must be true along with <test1> for the entire statement to be 'true'.  If either <test1>, or both of <test2> and <test3> are false, then the statement fails.  However, such can be difficult to debug.  "Compound conditionals" are just another form of "nested conditionals" combined into a single statement. (See [[#TIP:_Debugging_Compound_Conditionals|TIP: Debugging Compound Conditionals]].)  They are best used when you are concerned about the size of your script.  (See [[#TIP:_Script_Size_limit|TIP: Script Size limit]].)
  
It is worth observing that a "[http://geck.technodeep.net/index.php/Recipe_Entry Recipe]" is a form type of structured list which is used to allow the player to craft items at workbenches, campfires, and reloading benches. (The form list appears in the '''GECK''' "Object Window" under "Miscellaneous | Recipe".) If you include a "note" (as simple as "This is a recipe to <do something>") in the "Ingredients" tab of the recipe, it will be a single use "consumed" item unless you also include that note in the "Output" tab as well(Anything not listed in the "Output" tab is "consumed" in creating the recipe itemSee "NVDLC03RecipeSkillBookBarter<Recipe|Note|Script>" in the "Old World Blues" DLC for an example of their use to create a SkillBook.) The "Note" form is used as a "requirement" for that recipe.  As such it can use the same "holotape" or other "misc. item" images.
+
For every "condition" you are checking to be "true" you are also (at least implying) there is a "false" condition that will occur if the test fails. The "conditional block" is made up of the "conditional statement" and is terminated by an appropriate "end" statement (i.e. for an "if" that is an "endif")Some forms of conditional blocks (such as the "If") permit additional conditional tests to be conducted if the first fails (I.e. "ElseIf <condition>" statements) and a single (optional) "Else" (all is "false") section for when all earlier tests failThis basic structure is more fully known as the "If ...( ElseIf) ... (Else) ... EndIf" (aka "If/Else") block where the parentheses indicated the statement is (optional)But for every "IF" there must be a concluding "ENDIF".  (Notice the different use of case in these various examples.  This is to show that case of the statements, commands, and functions is not important, but adopting a consistent pattern will help to make your script more readable.  The case of "parameters" however, may be of importance so it's always worth paying attention to.)
 
+
[[File:EPDGaffney_RecipeNote.png|thumbnail|100px|RecipeNote_Fig-01]]
+
So, here is an example of a basic "conditional test":
When the player picks up a "recipe" in the game, they are really picking up a "note" that could say anythingThen the only thing that's done with that "note" is a completely separate Recipe Form can be set to appear to the player only if they meet the condition of having that "note", like so: (See [[:File:EPDGaffney_RecipeNote.png|RecipeNote_Fig-01]]. {{Thumbnail_enlargement_message}}) The "note" itself is nothing more than a requirement to enable the recipe, either initialy or repeatedly.
+
<pre>
 +
If IsModLoaded "mod.esp"
 +
  <some code to run when that mod plugin file is loaded>
 +
; Else - do nothing
 +
EndIf
 +
</pre>
 +
 
 +
If the test for "mod.esp" fails, the code that follows is skipped down to the "EndIf" statement and resumes processing with the next statement afterwardsIf the test for "mod.esp" succeeds, then all the lines that follow (down to the "EndIf") are then executed in sequence.
 +
 
 +
(I prefer to document implied "Else" statements with comments (the ";" causes everything else on the line to be ignored) in the code so I know that I did consider the implication and what I thought would happen; in case things turn out differently later on.  The implied "Else" here is "do nothing if this mod fails to be loaded".)
  
"Recipe notes" can be passed to the Player in the same manner as described in [[#Tip-Notes|TIP: Passing a 'Note' to the player.]]
+
Note the use of indentation.  This gets to be very important later on as you develop "nested conditions", such as:
 +
<pre>
 +
If <condition1>
 +
  some code if <condition1> is true
 +
  If <condition2>
 +
    some additional code only if <condition2> is true (in addition to <condition1> or we never get here)
 +
  ; Else - do nothing if <condition2> fails
 +
  EndIf
 +
Else ; <condition1> failed - <condition2> was never tested
 +
  <code when <condition1> fails>
 +
EndIf
 +
</pre>
 +
 
 +
Indenting the beginning and ending statements of "blocks" to the same level helps ensure you have correctly matched them up.  (This is one of the most common syntax errors preventing a script from compiling, and hard to track down otherwise.)
 +
 
 +
An "if / elseif /else" structure is a way of handling a series of specific situations where only one condition can be true (or false) and you want to ensure you have covered all the possibilities.  So think of it conceptually as:
 +
<pre>
 +
If ("test condition1" is "true") then
 +
  take action1
 +
ElseIf ("test condition2" is "true") then
 +
  take action2
 +
ElseIf (as many "test conditions" as needed)
 +
  ...
 +
Else ;no anticipated conditions are true
 +
  take some alternative action indicating "no anticipated result"
 +
EndIf ;this test block is done
 +
</pre>
 +
 
 +
You should always consider what to do if your initial "condition test" fails.  This is where the other statements ("ElseIf" and "Else") come into play.  (They are considered to be part of the same "If / EndIf" block at the same level of nesting, and cannot appear on their own.)  Even if you decide to "do nothing", it is helpful to both yourself and others to employ either an explicit or implied "Else" statement which either displays a message to that effect or simply has a comment just so you know what you anticipated at that point when reviewing the code at a later point in time when you may have forgotten details.
  
All "recipes" are always present at their designated ''crafting station'', but if they have ''Visibility Requirements'', they are invisible to a player that does not meet the requirementsIt's important to note that this doesn't need to be a "Note".  This could be a quest variable, a gender, whether some actor sees another actor (GetLOS), and just about anything else. (See [[:File:EPDGaffney_RecipeNote.png|RecipeNote_Fig-01]]. {{Thumbnail_enlargement_message}})
+
Use an "ElseIf" only if you want to "test" before you do something in the case where that "condition" may have alternate values.  Otherwise use a simple "Else".
 +
 +
If you do not want to take any action if none of those "test conditions" are true, but don't need to do something when they all fail, then you don't need an "Else" at all.  However, it is often a good idea to place a "debug" message in an "Else" section to indicate that the tests all failed, at least until you know that part of the script is working as intendedOtherwise the tests all fail and the "EndIf" terminates the test block with no actions or message and "falls through" to the next line of code; which can give a false impression of "success".
 +
   
 +
The main point is that an "ElseIF" requires another test condition. An "Else" will only process if no other "If" or "ElseIf" statements were true. It is a "failsafe" for indicating that the test section was processed.
  
''Visibility Requirements'' are separate from ''Ingredients'' regarding "notes" in the way mentioned earlier, and ''Visibility Requirements'' are separate from the ''Required Skill'' above it in the image, in that whilst both can check the player's skill, ''Visibility Requirements'' will hide the "recipe" entirely from a player that doesn't meet its skill check, but a player that has a skill value lower than that specified in the ''Required Skill'' will see a greyed out, unusable "recipe" that they can read through but not "craft", similar to when the player doesn't have the required ''Ingredients''.
+
Finally, note that ''"let < var > :="'' is '''NVSE''' syntax.  (Vanilla uses ''"set < var> to < value >"'' syntax.)  You must have '''NVSE''' loaded when running the GECK (use the '''GECK Extender''': link under [[#Programs_and_Tools|Programs and Tools]]) to use it, (and specify '''NVSE''' as a requirement for your mod if you publish it) or you will get a ''compiler error'' and your users will not be able to get the mod to function correctly without it.  Don't let that stop you as almost everyone has '''NVSE''' installed anyway, but it is important to realize.
 
</div>
 
</div>
  
<span id="Tip-TargetEffectPerks"></span>
+
<span id="BlockTypeProcessing"></span>
==== TIP: Perk effect on target ====
+
 
: Thanks to '''Mktavish''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
==== TIP Block Types ''Multiple vs Single Frame processing'' ====
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">It seems a shame that the [http://geck.technodeep.net/index.php/Entry_Point Entry Point] feature of Perk objects is not available via [http://geck.technodeep.net/index.php/Actor_Effect Actor Effect].  But you can perform a "reverse entry point" check to get the same effect ... if it is only the target the Player is shooting at that is of interest.
+
">When creating a script it is important to use the correct "[http://geckwiki.com/index.php/Blocktype Block Type]" to contain itA "block" is bounded by a "Begin <type mode>" line and an "End" line. The most commonly used is the "GameMode" block, but many beginning script authors don't know why that is the case.  It has to do with the issue of "single frame" versus "multiple frame" processing of the scripts within a given block type.
  
To accomplish an reduction to damage (-80%) only upon hitting a target's head while wearing the "MyHelmet" piece of armor, you would select menu sequence (just as an example):
+
The term "frame" here is used very much the same as in "frames per second (FPS)" rendered on the display.  But for a script, it is more accurate to think of it as a single "pass" of the game engine through the code within a block.
"Perk | Entry Point | Calculate Weapon Damage | multiply value | 0.2".
+
 
Then in the "On Condition" field, select the "Target" tab and use:
+
A "single frame" block type only gets one pass through it's code when it gets triggered. This means if the code is structured such that it needs to be processed multiple times to get the correct result, but is placed in a "single frame" block type, it will not produce a correct result.  It only gets one "pass through" for evaluation.  Such blocks do not retain "intermediate result (temporary) values" in variables between calls.  Every time it is called, it is starting from a "clean slate".  Even it's "locally defined variables" (those defined within that script) have been reset to null values.  Only "[http://geckwiki.com/index.php/List_of_Global_Variables Global Variables]" or those "inherited" (defined in another script (typically a "quest script"), which in turn calls the script in question), can pass values between "scripts" or "frames".  (This "range of visibility" of variables between different parts of the code is called the "[http://en.wikipedia.org/wiki/Scope_(computer_science) scope]" of the variable.)
<pre>
+
 
"GetEquipped  MyHelmet == 1 AND"
+
There are only three "multiple frame" block types, which retain "intermediate result values" between successive frames:
"GetHitLocation == 1 "  ; Head location</pre>
+
* [http://geckwiki.com/index.php/GameMode GameMode]
</div>
+
* [http://geckwiki.com/index.php/MenuMode MenuMode]
 +
* [http://cs.elderscrolls.com/index.php?title=ScriptEffectUpdate ScriptEffectUpdate]
 +
Each having specific circumstances when they are running. All other blocks (e.g. "On<Event>") are one frame occurrence events.
 +
 
 +
Consequently, if your code requires a "loop" structure or more than one pass through it's conditional logic to get the final result, it must be moved out of a "single frame" block and into a "multiple frame" type.  "Loops" are easy to spot; "conditional logic trees" can sometimes be trickier. Some things to watch out for:
 +
 
 +
* "Gateway" conditions, such as "If bDoOnce == 0". This implies a second pass is required for the occassion when "bDoOnce == 1" logic to get applied. If "bDoOnce" is defined "globally" or "inherited", then it will retain it's value between calls, so it is not automatically disqualified from a "single frame" block type, but if defined "locally" then it will always be "0".
  
<span id="Tip-MenuMode"></span>
+
* Any logic depending upon a conditional test using a locally defined variableSuch a test is only valid if the value of the variable is assigned during that initial pass and ALL actions depending upon that value are performed in that same passThis means only one code branch of an "If ... ElseIf ... Else ... EndIf" logic tree will be processed.
==== TIP: Pre-load Scripts ====
 
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">'''MenuMode''' lets you specify which menu (or menus, in some cases) should run your script'''MenuMode 4''' is the main menu of '''New Vegas''' and was added in '''JIP LN NVSE''' at some pointIt's the most reliable place to run pre-load scripts (before a "save game" file is loaded) in the experience of many, provided they're running on base forms, setting event handlers, and so on and so forth.  Obviously, references and other things that are baked into the save data won't be accessible until you load a game.
 
  
Also, tangentially related, pretty much anything that gets done to a base form will be undone once the session is exited.  (See the section on [[#GECK Form-ID, Base-ID, Ref-ID, and Editor-ID|GECK Form-ID, Base-ID, Ref-ID, and Editor-ID]] if you need a refresher on the differences.)  That includes form lists, models, collision, AI, items added to a base form's inventory, and anything else you can think of that gets done to a base form.  However, references spawned with these scripts running may or may not retain the effects (they usually don't, but inventory stuff will stick, in the case of most functions, because that gets baked into the save data, whereas something like whether or not a base form's combat is disabled is not saved in a save file).
+
By bearing in mind "single" versus "multiple" frame block types, some "unexplained" code behavior can be understood and rectified.
 
</div>
 
</div>
  
<span id="Tip=QuestAdvancement"></span>
+
<span id="Tip-CompanionInvenotry"></span>
==== TIP: Quest - Advancement ====
+
==== TIP Companion Inventory Weight ====
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum and '''RangerBoo''' of the Nexus Fallout "Mod Troubleshooting" forum for the basis of the following:
+
: Thanks to '''user826''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Quest scripts are the driving force of each and every mod.  They need one or more "GameMode" blocks so the engine will examine those blocks of code every frame, but in turn each should be "gated" with ''conditional statements'' so their following code statements are only processed when all the "gate" conditions are "true"; to keep performance high.  These are often controlled by the value of variables defined in a Quest script (e.g. "DoOnce", "Status", "Bark", etc; the names are immaterial and up to you) which may exist solely for the purpose of defining those variables if numerous other scripts relying upon those variables may be disabled/enabled to improve performance.  Otherwise define them in the Quest script in question BEFORE the first "Begin GameMode" block.  The variables in Quest scripts persist and are accessible between other scripts.
+
">When attempting to use a hidden Actor as a storage container, it was discovered that calling "[ActorREF].GetAV InventoryWeight" always seemed to return zero, even if the hidden Actor was marked as a "companion".  The inventory can be accessed just fine but the weight cannot be determined.
  
Sections of code that are described as "Blocks" have a statement that signals the beginning (e.g. a "Begin" or an "IF" statement) and one that terminates the block (e.g. an "End" or "EndIf" statement respectively)Be careful that you use the correct block terminator in the correct place or your scripts will either prematurely halt processing or runaway from your control (infinite loops).
+
The underlying problem is that (according to the [http://geckwiki.com/index.php?title=Inventory_Reference Inventory Reference] page of the '''GECKWiki''') "objects stored inside of the inventories of actors or containers are not ''references''".  As explained in that discussion, you are going to need '''NVSE''' to approximate them as temporary references within a loop which is iterating over the inventory.  "The temporary nature of inventory references require some extra care in their use. The contents of the source container should not be modified within the loop."
  
Other Blocks within a "GameMode" block are typically dealing with "Events" triggered by the Player: OnActivate, OnAdd, OnDeath, OnEquip, etc; which are also terminated with an "End" statement. Use "nesting" indentation to keep track of which "terminators" belong to which "beginnings". This not only makes it easier to read but also to track that each "Beginning" has an "Ending".  It is possible for such "Events" to be triggered by NPCs.  (See the GECK tutorial [http://geck.technodeep.net/index.php/How_to_script_conversation_between_two_or_more_NPCs How to script conversation between two or more NPCs].)
+
Note that Lutana added the function [http://geckwiki.com/index.php?title=GetInventoryWeight GetInventoryWeight] that "Returns the total weight of items in the inventory of a reference.Try that instead of "GetAV" or the loop in the [http://geckwiki.com/index.php?title=Inventory_Reference Inventory Reference] page.
  
The point is such "Events" need to be detected and reactions initiated within a "GameMode" BlockIf your Quest or Dialog is not advancing, it is likely because you do not have the initiating conditions being detected within such a block, and hence you are not getting the response (such as another script or "AI package") started.
+
For those who want a "purely vanilla" based solution to limiting the inventory '''CarryWeight''' of the Actor, you can use "[ActorREF].ForceAV CarryWeight <amount>" to set their maximum carry capacity.  This causes the builtin engine process for an "overburdened" companion to be automatically triggered when their inventory exceeds their '''CarryWeight''' valueIn addition to playing their '''FollowersOverburdened''' dialog topic, a message pops up in the corner of the screen that says, "<Follower Name> can't carry any more" and the engine prevents you from placing any items into the follower's inventory that would put them over their '''CarryWeight''' limit.  
 
 
Another possibility preventing advancement is that the Quest script is not currently running.  (See [[#TIP-QuestSelfStopping|TIP: Quest - Stopping within it's own script.]])
 
 
</div>
 
</div>
  
<span id="Tip-QuestDelay"></span>
+
<span id="Tip-CompilingScripts"></span>
 
+
==== TIP Compiling Scripts ====
==== TIP: Quest - Delay timer ====
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Leave [http://geck.technodeep.net/index.php/Special_Variables Special variables]' '''''fQuestDelayTime''''' alone.  That sets the default quest delay for every quest in the game.  Try using function [http://geck.technodeep.net/index.php/SetQuestDelay SetQuestDelay] instead.</div>
+
">You may notice error messages that report "script is not compiled".  This may cause some confusion, so to clarify the situation:<br>
 
+
The GECK ''compiles'' a script when saving it. This means it turns the "human readable" instructions into binary "machine code". This is more efficient for the game engine to process. Editing and saving a script individually is the preferred method of ''compiling''.  A script that is not ''compiled'' will still run as long as it is properly constructed; without any errors.  But ''compiling'' is usually the only way to ensure the script is error free.<br>
<span id="Tip-QuestSelfStopping"></span>
+
If you can't exit your GECK session, it's usually because you failed to actually save/compile a script due to an error.  If you are not using the '''GECK''' '''Extender''' or '''Powerup''' plugin (see the [[#Programs_and_Tools|Programs and Tools]] section), this can happen without any error message being displayed to indicate it failed.  You may find yourself forced to revert to a backup or remove the script which refuses to compile.  Take precautions.<br>
==== TIP: Quest - Stopping within it's own script ====
+
<span style="margin:0px 10px 10px 0px; border:1px solid #cc3333; color: red;
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
background-color:#fff5f5;padding:3px;  
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
+
/* Remove the next four 'white-space' lines to restore default white-space processing. */
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
+
white-space: pre-wrap;      /* css-3 */
background-color:#333333;padding:3px;
+
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 +
white-space: -pre-wrap;      /* Opera 4-6 */
 +
white-space: -o-pre-wrap;    /* Opera 7+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Sometimes you might have reason to want to stop a quest script when certain conditions are met within that scriptTurns out this doesn't work if you try to put everything into a single "GameMode Block". You need to split it out into two such blocks.
+
">WARNING: There is a ''compile all'' command in the GECK script editor, but it compiles ALL the scripts that are currently loaded into the GECK ('''including by default''' all, numbering in the thousands, from the vanilla ESMs), regardless of their source plugin INTO YOUR PLUGIN, which will consequently override those scripts in any other pluginThis is best avoided (as in '''"never used"''') unless you really understand all the ramifications.</span>
 +
</div>
  
The following example is the part of an "EventHandler" which illustrates this technique:
+
<span id="Tip-CorpseOddness"></span>
<pre>
 
scn NoteEventHandlerQuestScript
 
  
int DoOnce
+
==== TIP ''Corpses'' are not Actors or Objects ====
Begin GameMode
+
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
    SetOnMenuClickEventHandler OnMenuClickUDF 1 "MapMenu/GLOW_BRANCH/MM_MainRect/MM_NotesList"
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
    Set DoOnce to 1
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
    If DoOnce == 1
+
background-color:#333333;padding:3px;
        Set DoOnce to 2
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
    EndIf
+
">Trying to get a ''Trigger Box'' to react to a "corpse" falling through it fails to work.  Apparently "dead actors" are not considered by the game engine to be either '''Actors''' or '''Objects''' as far as functions and events depending upon one or the other are concerned.
End
+
</div>
  
Begin GameMode     
+
<span id="Tip-CompoundConditionals"></span>
    ; Note that I tend to 'over-check' in my scripts, to be certain it will work as intended.
+
==== TIP Debugging Compound Conditionals ====
    ; DoOnce probably didn't need to go past 1 before stopping the script.
 
    If DoOnce == 2 
 
        StopQuest NoteEventHandlerQuest
 
    EndIf
 
End</pre></div>
 
 
 
<span id="Tip-References"></span>
 
==== TIP: Referencing Objects ====
 
: Thanks to '''uhmattbravo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">When you need to perform an action on some object placed inside of the "game world", you need to be able to [http://geckwiki.com/index.php/Reference reference] it.  The "Reference ID" (Ref-ID) is unique to each instance of an object placed in the game.  If you place a "static" object (a "rock" for instance) into the world, there is seldom any need to refer to it specifically, so you normally do not enable it's "reference data flag: ''persistent reference''" setting.  When you do intend to refer to that object later (in a script for instance), you simply enable that setting and it automatically gets pre-assigned a "Ref-ID" by the game (in addition to any "Editor-ID" you give it) which you can use anywhere.
+
">Here's a programming tip for when a compound conditional (multiple tests on the same line) is not working as expected: split it up into nested conditionsAn "ElseIf" is equivalent to an "OR (||)" compound (assuming the "[do something]" portion is identical in both the "If" and "ElseIf" portions of the block), and each nested "If" statement is equivalent to an "AND (&&)" compound.
  
If you need to bring a "persistent" object (such as a container) to your current location, the preferred method is to initially have your mod place the "persistent object" somewhere hidden in the game world (underneath "ground level" in a cell is common). (If you intend to be able to return the object to that location later, place an [http://geckwiki.com/index.php/XMarker X-Marker] there as well.  See the sub-entry "X Target Data" on the GECKWiki "Reference" page.) You can then either use the "object reference" (aka "Editor-ID") or create a [http://geckwiki.com/index.php/Ref_Variable Ref Variable] (see also the [http://geckwiki.com/index.php/Associating_data_with_a_reference Associating data with a reference] page), combined with either the [http://geckwiki.com/index.php/MoveTo MoveTo] or [http://geckwiki.com/index.php/PlaceAtMe PlaceAtMe] functions to bring the object to the desired current location, perform whatever actions with/upon it, and then use the "MoveTo" function to return the object to the hidden location "X-Marker".
+
So, using the example: "If (GetHitLocation == 1 || GetHitLocation == 2) && (rTarget.GetDead != 1) && (rTarget.GetIsCreature != 1)", change it into:
 +
<pre>
 +
If (GetHitLocation == 1 || GetHitLocation == 2)
 +
    ; NVSE required: PrintD (string:expression), DBPrintC (formatted string)
 +
    DBPrintC "Script [HeadshotAmmoSCRIPT], GetHitLocation = [%g].", GetHitLocation
  
On the other hand, there are many objects (such as "containers"; which you should recall all '''Actors''' are considered to be) that get dynamically ''spawned'' by the game during play (for instance from "leveled lists"). Such "spawned objects" are always as "non persistent" refs from a "Base Form" template without a pre-determined "Editor-ID" or "Ref-ID". (They are all given an automatically generated instance "Ref-ID" that begins with the "mod index" of "FF". All undeleted "FF" mod index entries get "baked into" your "save game" files. This is how you get "save game bloat".)
+
    If (rTarget.GetDead != 1)
 +
        ; NVSE required: PrintD (string:expression), DBPrintC (formatted string)
 +
        PrintD "Script [HeadshotAmmoSCRIPT], rTarget.GetDead = [" + $(rTarget.GetDead) + "]."
 +
 
 +
        If (rTarget.GetIsCreature != 1)
 +
            ; NVSE required: PrintD (string:expression), DBPrintC (formatted string)
 +
            PrintD "Script [HeadshotAmmoSCRIPT], rTarget.GetIsCreature = [" + $(rTarget.GetIsCreature) + "]."
  
Note that objects flagged as "quest items" apparently are treated as "persistent" by default, regardless of the "reference data flag" stateThat appears to be the only way to ''spawn'' "persistent refs" in-game as well.
+
            ForceActorValue Health 0
 +
        Else ; (Can be dropped if you just want it to totally fail.)
 +
            ; [do something]
 +
        Endif
 +
    Else; (Can be dropped if you just want it to totally fail.)
 +
        ; [do something]
 +
    Endif
 +
Else
 +
    ; [do something]
 +
EndIf
 +
</pre>
 +
Insert "debug messages" (examples given) as required to pin down what values your conditions are actually testing.  That should quickly isolate what is not as expected(I just repeat the '; NVSE required' comment line to remind myself of the required syntax differences with each line.  Not required otherwise.)
  
If you specifically need a "non persistent" ref, stick something like this on the script related to that "object" (e.g. container object script):
+
Use the game console "bat <filename>" command to run a "batch file" similar to this ("_MyDebug.bat") to trigger the debug print statements when testing.  You can type any series of console commands (one per line) into a Notepad or other plaintext editor file and save as a simple DOS text file.  The filename extension doesn't matter, and can be dropped when entering the command as the console ignores it if found, but the standard for all "batch files" is ".bat".  The file should be placed in the game root folder (where the game EXE file is found).  If the filename includes "spaces" then you need to enclose it in double quotation marks (i.e. type <bat "_My Debug File">).  See also: [[#Tip-Debugging|TIP: Debugging data to file.]]
 +
* _MyDebug.bat:
 
<pre>
 
<pre>
Short CurrentAction
+
con_SCOF "_MyDebug.log" ; Output console messages to file "_MyDebug.log" in current directory
Ref ContainerRef
+
DBMode 1 65            ; "Enable Debug mode" command using decimal mod index
 
+
                        ; Most common reason for failure: incorrect decimal mod index for <ModPluginName>
Begin GameMode
+
                        ; NVSE required: PrintD (string:expression), DBPrint[C] (formatted string)
; Remove all player equipment and place into this "non persistent" container.
+
DBPrintC "Starting log for mod index 65(0x41) (<ModPluginName>) ..."  ; descriptive initialization message
  If CurrentAction == 0
 
    Set ContainerRef to getself
 
    Set CurrentAction to 1
 
  Elseif CurrentAction == 1
 
    Player.removeallitems ContainerRef
 
    Set CurrentAction to 2
 
  Endif
 
End
 
 
</pre>
 
</pre>
 +
Without that "Enable Debug mode" command the debug print statements won't actually do anything normally.  The "semicolon" (;) signals an ignored comment from that point to the end of the line, but is not required except to explain the purpose of each command.
  
Otherwise, if it doesn't really need to be a "non persistent" ref: name it, and use it's Ref-ID.
+
Place your "batch file" in the game root folder (where the "FalloutNV.exe" file is found).  The filename begins with an "underscore" (_) so it will be sorted to the top of the file list, making it easy to locate.</div>
</div>
 
  
<span id="Tip-OnActivate"></span>
+
<span id="Tip-Debugging"></span>
 
+
==== TIP Debugging data to file ====
==== TIP: Restricting OnActivate blocks. ====
+
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas GECK and Modders" forum for help with the following.
: Thanks to '''uhmattbravo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Some doubt has been raised as to the ability of the "OnActivate Player" block to keep from running when activated by an NPC insteadIt is suggested that use of 'if IsActionRef Player == 1' in a normal "OnActivate" block is much more effective alternative.
+
">The built-in mechanism for debugging is to display messages to the console (or HUD) screen.  The console has a [http://geck.bethsoft.com/index.php?title=ToggleDebugText ToggleDebugText] function, which toggles an extra debug display to the console with 23 screens of data that can be paged through using the < Scroll Lock > key.<br>
 +
There is a list of "designer" debug tools, many of which are disabled in the retail version but may have been or eventually will be provided in a "script extender", listed for posterity here:
 +
* [http://geck.bethsoft.com/index.php?title=Category:Designer_Debug_Tools Designer Debug Tools].
 +
* [http://geck.bethsoft.com/index.php?title=Category:Console_Functions Console Functions]
 +
 
 +
To enable the console, make sure the ''bAllowConsole=1'' setting is in your game INI file.  The console can then be accessed in-game by toggling the 'tilde key' (the actual key can be <~>, <º>, <¬>, <|>,<^>, <\>, <§>, etc., depending on your keyboard layout), usually found near the "1" key across the top of most keyboards.  The console prompt will appear as a single blank line in the lower left-hand corner of your screen. You can scroll the console output using the "Page Up" and "Page Down" keys. The console is not case sensitive: entering any of "tdt" or "TDT" or "TdT" will toggle the debugging text.  More general information on the console can be found on the [http://en.uesp.net/wiki/Oblivion:Console UESP wiki] and holds true for later games.  Use "#" anywhere on a line to make everything after that symbol into a comment.<br>
 +
<br>
 +
The forum article [http://www.nextgenupdate.com/forums/skyrim/560544-pc-skyrim-console-script-bat-file-compilation.html Skyrim Console Script/Bat File Compilation] is a tutorial with lots of information and ideas that can (with the appropriate changes) be used for other games.<br>
 +
<br>
 +
If you use NVSE (at least while developing/testing your scripts), you can use the [http://geck.foesmm.org/index.php/SetDebugMode SetDebugMode] command from FOSE (all of which are supported by NVSE) as a toggle for debug messages.<br>
 +
Then you can test if this mode has been enabled in your script with: <pre>if GetDebugMode ... endif</pre> or control the output to only appear by using commands with built-in checks such as [https://geck.foesmm.org/index.php/DebugPrint DebugPrint] or [https://geck.foesmm.org/index.php/PrintDebug PrintDebug].<br>
 +
Note the distinction between these two types of commands.<br>
 +
* The "DebugPrint" command, like "PrintToConsole" ([http://geck.foesmm.org/index.php/Print PrintC]), only accepts a string with optional "string format" specifiers as parameters (e.g. "my string: %g", iSomeNumber).<br>
 +
* The "PrintD/PrintDebug" command on the other hand, like [http://geck.foesmm.org/index.php/Print Print], requires "string expressions": concatenated strings, string-returning functions, or [http://geck.foesmm.org/index.php/ToString ToString]'ed forms and numbers.<br>
 +
* Don't mix the two types of message string formats. So it's either:
 +
<pre>
 +
set iStage to GetStage <Quest EditorID>
 +
DBPrintC "Failed blah blah [%g], QStage [%g].", <Quest EditorID>.<QuestVariable>, iStage
 +
</pre>
 +
or<br>
 +
<pre>
 +
PrintD "Failed blah blah bark = [" + $(<Quest EditorID>.<QuestVariable>) + "], QStage [" + $(GetStage etc- + "']."
 +
</pre><br>
 +
* Other forms of "Print" has similar distinct requirements for their messages.  Pay attention to their description's syntax.<br>
 +
<br>
 +
Often you want to know the state of various elements that are not stored in variables, for output.  A fairly common example of this is to print the current "Stage" in a "Quest".  You can use the "GetStage <Quest EditorID>" function in a conditional statement (e.g. ''If ( GetStage VT47 == 10 )'', but that by itself won't work as a parameter to a "PrintC" command.  Fortunately NVSE v4 added the [http://geck.foesmm.org/index.php/ToString ToString] function (abbreviated as the "$" symbol) which can be used to turn an "expression" into a string value (e.g. <span style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray; background-color:#333333; padding:3px;">PrintD "Active Quest [" + $(GetActiveQuest) + "Stage = [" + $(GetStage <Quest EditorID>) + "]."</span>).  Note the spaces separating the string concatenation "+" symbols are requiredAlso that the "GetActiveQuest" function returns a ''RefID'' which is normally not printable but "$" converts into a string.<br>
 +
<br>
 +
Sometimes simply displaying messages to the screen or console is not sufficient to trace a problem.  NVSE provides a number of functions enabling you to dump debugging information to a text file.  These functions, and examples of how to use them, are listed on the GECK wiki under the subject [http://geck.bethsoft.com/index.php?title=Debug_Dumps Debug Dumps].  They all reference sending messages to the "console".  You need to first use the [http://geck.foesmm.org/index.php/Con_SCOF Con_SCOF] command to redirect console messages to a text file instead.<br>
 +
<br>
 +
When you need to send a sequence of commands to the console one immediately after the other, it is often useful to put them (one per line) into a plaintext "batch" file (e.g. "'''enabledebugfile.txt'''") placed in the game root folder, the same folder as the game executable (i.e. "<path>\common\Fallout New Vegas"), and use the console command "bat <filename>" (no extension and without the quotes) to run it (e.g. "bat '''enabledebugfile'''").<br>
 +
Example ''''enabledebugfile.txt'''' file:<br>
 +
<pre>con_SCOF "_Debug.log"  # "_" is to cause the file to sort to beginning of Windows Explorer filenames
 +
DBMode 1 61                # '61' is 'mod index' in decimal
 +
DBPrintC "Starting log for mod index 61(0x3D) (<mod name>) ..."</pre>
 
</div>
 
</div>
  
<span id="Tip-ScriptResult"></span>
+
<span id="Tip-DismemberingCorpse"></span>
==== TIP: Script Result vs Result Script ====
+
==== TIP Dismembering a corpse ====
: Thanks to '''Mktavish''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the following.
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">The terms "Script Result" & "Result Script" are not interchangeable.<br>
+
">According to the game [lore], there were a bunch of people beheaded in Nipton, but there were no beheaded bodies. So I created a bunch of NPCs and had them immediately get beheaded as soon as they spawned. This is the script I used:
The first word in each term is an adjective to the following noun.<br>
+
<pre>
"Script results" are an intangible noun of what we are trying to achieve from lines of script coding.<br>
+
scn zzMongoBeheadedScript
"Result scripts" are a specific batch of coding depending upon the result of some event item, which holds the FormID.<br>
+
 
Any "Result Script" field functions pretty much like any other one time event script, such as "Begin OnActivate".
+
Begin GameMode
You just can't declare variables or use "Begin Blocks".  They belong to whatever item/event they are found with as far as a RefID/FormID goes.<br>
+
    If (GetDead == 0)
When you want to put lines of code into (for example) a "Dialog Topic" conversation or "Quest Script" "Script Result" field, you need to click the "Compile Result" button just below/adjacent to that field in order to save the code.</div>
+
        Kill zzMongoCrucDead1REF 1 -1
 +
    Endif
 +
End</pre>  
 +
Just give this script, or rather your modified version of it, to your NPC in the dialog box where you define the NPC, under the ID and name. You probably know this already, but just making sure.
 +
 
 +
{The "kill" command is a shorthand name for the [http://geckwiki.com/index.php?title=KillActor KillActor] function.  You could use the "[ActorRef].command" syntax to make it explicitly clear who is the object of the command (being affected by it).  When the script is attached to an NPC via dialog, they become the implied "ActorRef". Think of the "[ActorRef].command" syntax as "[subject].action [parameters]". The "[]" are used to indicate it is an "optional" component of the function.}
 +
 
 +
'''zzMongoCrucDead1REF''' is one of the beheaded NPCs. Basically, by using him as the killer, he gets blamed for all of the deaths and not the player or anyone else (prevents any factions from getting angry at the player or with other factions). "1" is the dismembered part, which in this case is the head. You'll want to change this for your exploded NPC. "-1" is the cause of death, which you will want to change to "0" for {an} explosion. The documentation for {the function} [http://geckwiki.com/index.php?title=GetCauseofDeath GetCauseofDeath] has a list of values for the cause of death.
  
<span id="Tip-SpecialChars"></span>
+
There are ready-to-use scripts available for several combinations of dismemberments in the GECK alreadyTo use them, drop a new cubic activator in the cell where you want to use it and point it to one of the "GenericDismembermentXXX" base forms. Then set its linked reference to the corpse that you want to dismember.
==== TIP: Special Characters in String Variables ====
 
: Thanks to '''Radioactivelad''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">Some string characters have special meanings when parsed and can cause unexpected compiler problemsFor example, this code won't compile:
 
<pre>
 
SCN MESLoyalCustomerRewardScript
 
 
Begin Scripteffectstart
 
 
Player.addPerk MESPerkDiscount
 
showmessage MESPerkRewardMessage
 
 
End
 
</pre>
 
There is nothing obviously wrong with the code.  The problem actually lies in the "content" text of the [https://geckwiki.com/index.php/Tutorial:_String_Variables string variable] "MESPerkRewardMessage", which happens to contain the character "%" (percent sign).  Depending upon which function you use to display that text, some special characters are used to format output and you have to take steps to get them to "display" without being "interpreted" by the compiler.  Such frustrations are just one of the reasons "string and character functions" were added to NVSE, to provide means to work around those limitations.  A quick glance at the linked GECKWiki page will show that the subject is more complicated than one might suspect; but you can express your special characters (such as "%") so they only get rendered when displayed (e.g. using the 'AsciiToChar' function).  What is important is to realize such special "formatting" characters exist and account for them, even when buried in a string variable.
 
 
</div>
 
</div>
  
<span id="Tip-TestingFunctions"></span>
+
<span id="Tip-Dispel"></span>
==== TIP: Testing "new to you" functions ====
+
==== TIP Dispel Effect ====
: Thanks to '''Mktavish''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Often in attempting to solve a scripting problem you will find or be directed to a '''GECK''' or '''NVSE''' function which MIGHT be helpful, but no one is certain if it is really applicableAll you can do is test it out.
+
">A [http://geckwiki.com/index.php?title=Dispel Dispel] function call often doesn't take effect immediately.  There is also a risk the spell will stick on any creature for which the code doesn't apply (depending upon the type of duration set, of course)The following is a "good practice" trick for scripted spells (aka [http://geckwiki.com/index.php?title=Actor_Effect Actor Effect]) to keep in mind.
  
The temptation might be to just plug it into your current project code, but this can easily lead you astray.  Better by far to create a "stripped down, minimal to function test script" and plugin for the purpose which provides only the essential elements to test the conditions under which you want the function to operate.  While it might initially seem to be a waste of time, rethink that.
+
At the end of your ''ScriptEffectStart'' Block:
 +
<pre>
 +
else
 +
  set DoOnce to 2 ; (or some appropriate value)
 +
endif</pre>
  
# Creating a test script forces you to think about what you really need in order to have what you want to happen.  This alone can clarify your problem.
+
and at the top of your ''ScriptEffectUpdate'' Block:
# By producing only the essential code you have eliminated other potential factors in your project that may be clouding the picture of what is actually happening.  This may involve pulling elements initially created/stored in other scripts, but having them in one place makes it easier to spot omissions or incompatibilities.  This saves time in the long run.
+
<pre>
# Use debugging statements to your heart's content without worries about it's impact on the rest of the game or your project.  You don't even need to make them conditional upon a "debug mode" variable.
+
if DoOnce == 2
# Clearly delimit known functional code from your test code with comments.  This helps you to stay focused on the problem areas.
+
  dispel <YourSpell/ActorEffect>
# Indent code, lining up blocks and conditionals.  This helps identify syntax and structure errors as well as making the code more readable.
+
  return
# By focusing on only the one function, you can try various approaches that may have nothing to do with your project, but help you to clarify how the function does and can work.  This is especially helpful when the syntax and application is vaguely described.  Experimentation then hurts nothing else.
+
endif
# Test "in-game", as this is the only way to be absolutely certain what happens at "run-time".  (See the [[#TIP: Debugging data to file|TIP: Debugging data to file]] on how to produce a "console log file" of your test results.)
+
</pre>
# When you do test "in-game", be sure to toggle "ArchiveInvalidation" off-and-on again after including your test plugin in the "load order".  The conditions under which this "toggling" is required for proper functioning are vague, and it's simple enough to do that it should just be a normal part of your test regimen.
 
# Sometimes you need to use a "save game" from prior to the changes.  It's recommended to avoid making any saves while testing, unless the function you're testing needs a "save spot".  (For example: "GetGameRestarted"  needs a save spot, so create one just for that purpose.)  In that case, having a "TEST" game setup (profile) just for the purpose makes a lot of sense if you have the disk space.  At the very least, create a new, clearly identifiable character save game for the purpose.  Never use your "in-play" game for testing unless you are prepared to revert to a known point prior to starting any tests.
 
# Once you have complete your testing, you now know exactly what is required, and can toss the test file aside or perhaps find a re-use for it later.  This is a common practice and you will find that you can often build upon previous testing efforts.  If nothing else, a well designed shell of a test script/ESP can easily be re-purposed.
 
 
</div>
 
</div>
  
<span id="Tip-Timers"></span>
+
<span id="Tip-EventHandler"></span>
 
+
==== TIP Do not overlook '''EventHandlers''' ====
==== TIP: Timers ====
 
: Thanks to '''xqdcss''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">Timers are generally based upon the [http://geck.technodeep.net/index.php/GetSecondsPassed GetSecondsPassed] function, which returns the number of real life (not game) seconds that have passed since this function was last called by the calling script (i.e. it always "counts up")Things to bear in mind:
+
">
* Function will only work in ''Quest scripts''; and inside the ''GameMode'' and ''MenuMode Blocks'' of an ''Object/Effect script''.
+
When you want to do something affecting multiple Actors, such as providing a particular dialog option or behavior, instead of editing their scripts directly consider using an '''NVSE''' [http://geckwiki.com/index.php?title=Event_Handling Event Handler] instead (functionality added by '''NVSE 4.6+''').
* Function always returns 0 inside "User Defined Functions" (UDFs).
+
 
* [http://geck.technodeep.net/index.php/SetGlobalTimeMultiplier SetGlobalTimeMultiplier] will affect the return value of this function in the same way it affects the speed of the game.
+
'''EventHandlers''' provide the very powerful ability to "trick" the game engine into supplementing or overriding the limitations of the standard GECK "On<Event>" functions such as "OnAdd", "OnActivate", or "OnEquip" into running a script to emulate something else in a "User Defined Function" (UDF).  A simple example of this is the "Note EventHandler" script and UDF in [[#Tip-Notes|TIP: Passing a 'Note' to the player]], which is using this technique to "trick" the engine into running a script as if the note had been triggered by an "OnEquip" or "OnActivate" function without ever using either command. In this example instance: by a mouse click or key press in a menu instead.  See also [[#Tip-HotKeyEventHandler|Tip: EventHandler-HotKey]].
* Each script has its own independent tracking of when ''GetSecondsPassed'' was last called.
+
 
* Calling this function multiple times in the same script '''in the same frame''' will return the same values for each call.
+
An '''EventHandler''' is basically a '''UDF'''. As such, local variables are reset every time you call a UDF again. It's a one-frame only script, and when it's done, it's done.  They do not "carry over" locally defined variable values between instancesBy the same token, each time it is called, it is "reset" automatically so you don't have to worry about "re-initializing" variables, parameters, and triggers.
* This function is unreliable in a ''ScriptEffect'' during ''sleep/wait/fast travel''. Use [http://geck.technodeep.net/index.php/ScriptEffectElapsedSeconds ScriptEffectElapsedSeconds] in a [http://geck.technodeep.net/index.php/ScriptEffectUpdate ScriptEffectUpdate] block instead.
+
 
 +
Once an '''EventHandler''' has been registered in the game, it remains in the save game files until a "new game" is started.
 +
 
 +
An '''Eventhandler''' needs to be registered in '''GameMode''' because ''actor events'' are flushed every game load to avoid problems with temporary references. Avoid using "MenuMode 4" to register your EventHandlers.  Many mod authors are used to registering general event handlers only once at game restart (MenuMode 4), but are not aware the player can start the game before this mode runs, especially if several mods are using it and they cause some delay ... which can sometimes leading to breaking other handler registrations.
 +
 
 +
 
 +
Note that just using an '''EventHandler''' isn't sufficient.  The normal activation Event will still need to occur, usually by way of the [http://geckwiki.com/index.php/Activate Activate] function in your UDF. You have to disable interaction with the target Actor first if you want to prevent dialog, somehow.  With '''JIP LN NVSE''' you can use the [http://geckwiki.com/index.php/SetInteractionDisabled SetInteractionDisabled] function.
 +
 
 +
'''EventHandlers''' on objects are invoked ''BEFORE'' the actual Event happens; hence the different timing for them compared to normal script blocks like "OnEquip" or "OnAdd". Pay particular attention to any "Notes" on the function description pages for those Events, such as "OnAdd" requiring ''"an item to remain in the new container for at least one frame after it is added in order for the block to trigger"''.  You may need to use the '''JIP LN NVSE''' function [http://geckwiki.com/index.php/SetGameMainLoopCallback SetGameMainLoopCallback] (aka ''Callback'') to delay the execution of the Event trigger block by the number of frames you specify. (From experience, you need at least 2 frames of delay between taking an item and running a script on that item.  You will need to use [http://geckwiki.com/index.php/Auxiliary_Variables Auxiliary Variables] (aka ''Aux Vars''), by way of [http://geckwiki.com/index.php/AuxVarSetRef AuxiliaryVariableSetRef] to pass the Reference to the ''Callback'' function.)
 +
 
 +
The mod creator should not be concerned about using "script extenders" and their plugins.  Other than providing notice to the downloader of their mod that such plugins are required, there are no "downsides" to using them as far as the game engine is concerned; and they provide fixes to some deep level engine bugs as well as needed functionality that can only be provided by something working at that level (which mods can't).  Almost any load order with more than a dozen mods is likely to already require their use.  They are a mod creator asset, providing enhanced capabilities.  '''Utilize them.'''
 +
 
 +
Please see the article [http://www.loverslab.com/topic/39417-tutorial-nvse4-part-5-event-handlers-user-defined-events-udes/ NVSE4+: Event Handlers & User-Defined Events (UDEs) - Part 5] by '''DoctaSax''' for details.
 
</div>
 
</div>
  
<span id="Tip-ScriptSize"></span>
+
<span id="Tip-HotKeyEventHandler"></span>
==== TIP: Script Size limit ====
+
 
: Thanks to '''jazzisparis''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
==== Tip EventHandler for HotKey ====
 +
: Thanks to '''FiftyTifty''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">There is a limitation on the size of scripts in the GECK: based upon the number of characters: including spaces, comments, and "non-printing" control characters like "line feeds" (aka "new lines"). (Note Windows files use a pair of control characters (<CR>+<LF>) to signal a "new line" while Unix style systems use a single <LF> character, and Apple Macintosh uses a single <CR>.  Some editors (like '''Notepad++''') allow you to configure this, and to display character counts on a status line.)  Various numbers have been cited (usually "around 32,000"), but the most specific seem to put the maximum between 31875 and 32767.
+
">Please see the article [http://www.loverslab.com/topic/39417-tutorial-nvse4-part-5-event-handlers-user-defined-events-udes/ NVSE4+: Event Handlers & User-Defined Events (UDEs) - Part 5] by DoctaSax for details first.
 +
: Required knowledge:
 +
:* UDFs, blocktypes, forms and refs
 +
: Also required:
 +
:* NVSE 4.6+
 +
 
 +
CIPCIS' method in [http://www.cipscis.com/fallout/tutorials/detecting_keypresses.aspx NVSE: Detecting Keypresses] is not ideal, as it uses '''GameMode''' for the bulk of the scripting. The point of having event handlers, is to only process code when we need to, rather than every frame or every few seconds.
  
According to the author of the '''JIP NVSE''' plugin: "The size of the '''''compiled script''''' is also limited, and is more problematic since it's reached long before the character limit.  This is especially true with NVSE-heavy scripts."
+
To get a "HotKey EventHandler" to work, you make two scripts. One is the "EventHandlerRegistration" script you attach to the quest, so you can detect the keypress: that has a very barebones '''GameMode''' block, which then readies the event handler.  
 +
<pre>
 +
scn MyHotkeyEventScript
 +
short bDone
  
In addition, there is a common misconception that "the result script for a '''quest stage''' only allows around 1K". This can be worked around by clicking '''Edit''' button next to the '''Result Script''' box; instead of editing the script directly in the box.  This opens the '''result script''' in an "editor" instead of a form display control. (The same applies to any '''Result Script'''; not just for '''quest stages'''.)
+
Begin GameMode
</div>
+
    if bDone == 0                                        ; Eventhandler has not previously been set
 +
        SetOnKeyDownEventHandler MyEventUDFScript 1 210  ; Establish the Eventhandler for the "<Insert>" key.
 +
        set bDone to 1                                  ; Eventhandler has now been set, so this code will be skipped next frame
 +
    endif
 +
End
 +
</pre>
 +
You then point it to the second, "User-Defined Event" script you made, which is the one that does all the work. If you look at the first example "EventHandlerRegistration" script ('''MyHotkeyEventScript''') attached to the quest, it calls the following line:
 +
<pre>
 +
SetOnKeyDownEventHandler MyEventUDFScript 1 210
 +
</pre>
 +
The "User-Defined Event" script '''MyEventUDFScript''' is the one that does the bulk of the processing. The "1" parameter means we want to enable the event handler, and "210" parameter is the scancode for the "<Insert>" key. (See the wiki article [[#DirectX_Scancodes_And_How_To_Use_Them|DirectX Scancodes And How To Use Them]] for a list of the DirectX scancode keys.)
  
=== Texturing ===
+
The '''MyEventUDFScript''' has to follow the basic structure of a "User Defined Function" (UDF).<br>
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
Example:
* [http://wiki.nexusmods.com/index.php/Category:Texturing Texturing Category on Nexus] Wiki.  A large collection of articles on the subject.
+
<pre>
* [http://www.darkcreations.org/testg/wiki/Main_Page The Elder Scrolls Texture Guide (TESTG)] Wiki.  A glossary of terminology and summary of various basic aspects related to texture replacements, along with a collection of "The Elder Scrolls" game mods of that nature.  Designed for players rather than mod creators, but useful for beginners.
+
scn MyEventUDFScript
* [http://forums.getpaint.net/index.php?/forum/28-textures/ Paint.net Tutorials] Forum.
+
int iKeyID ; this is the keypress that triggered the EventHandler (e.g. scancode "210": the "<Insert>" key)
* [http://www.youtube.com/channel/UChSDb-rgM7QrW6QvZjOy-VA Paint.net tutorial] Video series by '''yakobelt'''.
+
; Other variable definitions as required
* [http://www.youtube.com/watch?v=c8uFdS_4pRg How to make seamless textures in Paint.net (No plugins)] Video by '''games528'''.
 
* [http://www.youtube.com/playlist?list=PLMK2xMz5H5ZuPzp5FfEIDjeYavpyRgpcb GIMP: Learn Gimp Tutorials] Video series by '''Jake Day Williams'''.
 
* [http://www.youtube.com/watch?v=1OJKh6o4Af8 Creating Seamless Textures using Paint.net and the 'Blend Seams' plugin] Video by '''gamesfromscratch'''.
 
* [http://www.gimp.org/tutorials/Tileable_Textures/ GIMP: Tilable Textures] Article by '''Adrian Likins'''.
 
* [http://www.youtube.com/watch?v=TKhs7F0hAik GIMP: Tutorial for beginners - Seamless Pattern] Video by '''tutor4u'''.
 
  
<span id="Tip-CustomPosters"></span>
+
Begin Function {iKeyID}
====TIP: Custom Posters====
+
  ; Main processing logic for when the triggering key is pressed goes here.
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
End Function
 +
</pre>
 +
It's a more difficult concept to understand than to implement.
 +
</div>
 +
 
 +
<span id="Tip-GameDaysPassedBug"></span>
 +
==== TIP GameDaysPassed Bug ====
 +
: Thanks to '''Asterra''' and '''DoctaSax''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">First you need to create or convert your desired poster image into a DDS file. See [[#Programs_and_Tools|Programs and Tools]] section for the available choices of Texture Editor.
+
"><span style="margin:0px 10px 10px 100px;border:1px solid #00C600;color: green;
 +
background-color:#fff5f5;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">NOTE: This bug is now fixed in the game engine by the '''JIP LN NVSE''' plugin (linked under the [[#Programs_and_Tools|Programs and Tools section]]).</span>
 +
 
 +
''GameDaysPassed'' is a GECK "base type" [http://geck.foesmm.org/index.php/List_of_Global_Variables Global Variable] used to return the number of days that have passed "in-game".  However, it has been found to become inaccurate over time (more quickly if the timescale is adjusted to anything other than the default of 30) and eventually to fail to advance at all.  This causes problems with many vanilla and mod scripts; particularly in "Hardcore Mode" where the sudden advance can cause instant, unexpected death.
 +
 
 +
"The nature of [the problem] seems to be that single-precision floating point math is only accurate up to so many digits, 7 to 8, depending. Sleep, wait and fast travel update the var by sufficiently high values to never go unnoticed. But during gamemode ''GameDaysPassed'' [(GDP)] is updated by tiny fractions, every frame. That means that every frame, it should be updated by something close to TimeScale / (FPS * 86400). At 30 timescale and 30 FPS, that's 0.0000157407407407 (etc.); 0.000005787037037 (etc.) at FPS 60.
 +
 
 +
"If you add it to the existing GDP value, then even at day 1 in the game (day 6, isn't it?), the result of this addition, stored in the GDP var, will only be reliably accurate until 6 digits after the decimal point. The var itself could store more precise data, but it's the calculation that is inaccurate and the result of that is what's being stored. So it may only accurately apply an increase of 0.000005 at 60 FPS or 0.000015 at 30. The following digits of the GDP value will be very much random, and each time the increase is added, it just results in new randomness beyond those digits, possibly rolling over to a higher digit and affecting its accuracy too.
 +
 
 +
"Then, when GDP hits 10, or 100, the whole problem becomes much larger because from then on only 5, or 4, digits behind the decimal point are theoretically reliable, and because of earlier inaccuracies that happened over time, it's hard to trust them either.
  
The poster mesh NIF that Fallout New Vegas uses for most of its posters isn't well suited for hanging posters from the ceiling or beams since it is one-sided. If you go behind it, there's no surface on the back side of it and you just see right through it as if it wasn't there. It's fine for posters that you hang on the wall though since you can't go behind the wall to look through it.
+
"The sad part is that all numeric variables in FNV are actually stored as double-precision, but math involving any var is single-precision."
  
The way the mesh for the posters is set up, it doesn't use the entire texture. It only uses part of it, which is why your poster may look cut off. All you need to do is shrink your image a bit and the entire image will show up. It's easiest to just copy your new image over an existing one so that you get the size right, but you may need to play around to get a feel for how far the front of the poster extends over the face of the texture image you are using.  Copy your new image so that it only covers the image part of the poster, leaving the rest of the image blank, and save that with your new texture name.  Then open a renamed copy of the poster mesh NIF file in '''NifSkope''' and assign that new texture file to it.
+
The mod [http://www.nexusmods.com/newvegas/mods/63880/? Timescale Pacemaker] by '''Asterra''' was developed specifically to address this issue.  It has since been corrected in the game engine by [http://www.nexusmods.com/newvegas/mods/58277/? JIP LN NVSE Plugin] v51.60 or later.</div>
</div>
 
  
<span id="Tip-CustomTexture"></span>
+
<span id="Tip-ParsingLines"></span>
====TIP: Customizing an existing texture====
+
==== TIP GECK parses the entire line before evaluating ====
: Thanks to '''pixelhate''' on the Nexus Fallout "New Vegas Mod Troubleshooting" forum for the basis of the following summary:
+
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the following.
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">Bear in mind when using compound conditions [&& (and), || (or); see [http://geck.foesmm.org/index.php/Category:Conditions GECK Category: Conditions]] that the GECK parses the entire line at once. For instance:
# You have to locate the original texture element files in the "Fallout - Textures/Textures2.BSA" file.
+
<pre>If (IsFormValid rActor) && (IsReference rActor)</pre>
# Extract them (using '''BSAOpt'''; listed in the [[#Programs and Tools|Programs and Tools]] section).
+
can crash your  script if ''rActor'' doesn't hold a valid form, because ''IsReference'' will freak out over it and the ''IsFormValid'' check does nothing to prevent it. You need to break that line up into two:
# Make the desired modification of the texture in the graphic app of your choice and save as a ".dds" file with a unique name.
+
<pre>
# Place your modified textures inside a created folder with your mod name, place that folder in "Data\textures\< type >", where "< type >" matches that of the original texture.
+
if IsFormValid rActor
# Place the unmodified texture elements (normal map, glow map) in your mod's Data folder, following the original texture's structure.
+
  if IsReference rActor</pre>
# Open GECK, create a new "Texture Set", make the "Diffuse texture" (aka "Color") map pointing to your modified texture and the other texture elements pointing to the original ones.
+
Geck script processes an entire line: substituting the result values from functions, and then determines the "true/false" result of any conditionals last, so if the ref var holds an invalid form or none at all, it will be passed to ''IsReference'' in a compound conditional line.  The ''IsFormValid'' conditional check in the same line doesn't stop that - the only way to prevent it is to split up the line.  Overall it's good practice to stagger your validity checks to separate lines as this becomes an issue if you use a function with ref syntax in such lines.
# Create an unique instance of the object mesh (with an unique name) using '''Blender''' or '''Nifskope'''; and make it use your new texture set.
+
</div>
# Remove the unmodified textures from point 5 (not needed anymore)
+
 
# Place the custom object in game, save, test in game.
+
<span id="Tip-PCHealth"></span>
 +
==== TIP Get Actor Health functions ====
 +
<div class="boilerplate metadata" id="Notice_Box" style="margin:0px 10px 10px 10px;  border:1px dashed #DAA520;  color: lightgray;  background-color:#333333;  padding:3px;  word-wrap: break-word">Bear the following in mind when attempting to determine the health of any actor:
 +
*'''[ActorRef].GetHealthPercentage''' is unreliable as it's determined from "base health" and sometimes returns values over 1.0 (100%).  
 +
*'''[ActorRef].GetAV ''Health''''' returns the current, modified health value (not the maximum).  It takes into consideration permanent effects (e.g. perks) as they contribute to your "health pool".
 +
*'''[ActorRef].GetBaseAV ''Health''''' returns the base value with no consideration for permanent (e.g. "Life Giver" perk) or temporary effects (eg. Buffout).
 +
*'''[ActorRef].GetPermAV ''< StatName >''''' returns include permanent effects (e.g. Perks like "Tag!", and from Skill Books), but no bonus from situational perks, equipped items, drugs, etc..
 +
*'''[ActorRef].ResetHealth''' Restores the actor's health and cures crippling damage.  
 +
*No function known at the moment can return the max value with temporary effects.  
  
: Never use "Texture Sets" on "Furniture"!  It will make your ESP crash, as well as the GECK.
+
Please see the '''GECKWiki''' [http://geckwiki.com/index.php/ActorValue ActorValue] page regarding the "Damage Pool" and that determining an Actor's current health is a multistage process. It looks like "GetAV Health" is what you want to track current damage, as [http://geckwiki.com/index.php/DamageActorValue DamageActorValue] function implies that it does reflect the "Damage Pool" from frame to frame.
: Always make back-ups before making any changes.</div>
+
</div>  
 +
&nbsp;
  
<span id="Tip-NormalMaps"></span>
+
<span id="Tip-GBOvsGBF"></span>
==== TIP: Improving Texture Normal Maps ====
+
==== TIP Level Lists and ''GetBaseObject'' versus ''GetBaseForm'' ====
: Thanks to '''pixelhate''', '''EPDGaffney''', and '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
: Thanks to '''EPDGaffney''', '''DoctaSax''', and '''Mktavish''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">(For an explanation of the specific terms used here, please see the [http://www.darkcreations.org/testg/wiki/Glossary Glossary] page of the TESTG wiki site.)
+
">According to the [http://geckwiki.com/index.php/Main_Page GECKWiki]:<br>
 +
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"
 +
style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;
 +
/* Remove the next four 'white-space' lines to restore default white-space processing. */
 +
white-space: pre-wrap;      /* css-3 */
 +
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 +
white-space: -pre-wrap;      /* Opera 4-6 */
 +
white-space: -o-pre-wrap;    /* Opera 7+ */
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">
 +
There are three types of level lists in Fallout 3 (& New Vegas):
 +
* [http://geckwiki.com/index.php/LeveledCreature Leveled Creatures],
 +
* [http://geckwiki.com/index.php/LeveledCharacter Leveled Characters], and
 +
* [http://geckwiki.com/index.php/LeveledItem Leveled Items].
 +
Refer to the individual pages for details about each of them.
 +
In general, a leveled list allows the choice of object or actor to be dependent on the level of the player relative to the [http://geckwiki.com/index.php/Encounter_Zone Encounter Zone]. Therefore as the player grows in level, the actor or object generated changes. Loot in containers is better. Creatures and NPCs encountered are tougher.
 +
* [http://geckwiki.com/index.php/GetBaseObject GetBaseObject] Returns the base object id of the calling reference.  Will return the leveled character/creature Actor form if called on references spawned by one.  {The Form-ID will actually be an ''object'' that contains a list of other leveled Actors.}  Use ''GetBaseForm'' to return the Actor "base form" instead.
 +
* [http://geckwiki.com/index.php/Gbf GetBaseForm] (A function added by NVSE) Returns the actual base form of a leveled calling reference.  {Meaning it goes within the list of the calling leveled object, and finds the Base-ID template of the leveled object it picked at random from that list. Hence this would have to be called in scripting, after the leveled item reference loads.}</div>
  
Suppose you want the '''normal map''' of a texture to provide as much detail as possibleThe key is understanding that it is working on two layers: the RGB "color" one which gives you the surface relief; and the ''Alpha channel'' one which gives you the ''Specularity''.
+
The trouble with any actor templated to a leveled list is that their Base Object (''GetBaseObject'', aka GBO) is not static, but dynamic (i.e. if you called ''GetBaseObject'' on the ref in-game you would get a Form-ID that starts with FF (255)This explains the problem with some of the debug readouts, in that ''IsInList'' called on the reference won't match the base form that is stored in the GECK. To get that base form, you'd need ''GetBaseForm'' (GBF) and look it up in the list with ''ListGetFormIndex''.  This is "normal behavior" for GBO: i.e. when an actor's base form is directly templated to a levelled list.  Some instances, however, seem to be templated to another actor form which in turn is templated to a levelled list. (There really is no limit to how many levels of templating that can go on, except the restraint of the person making the NPCs.) That may explain the base object not returning as dynamic in some instances, and so, being checked off correctly by ''IsInList''.  This is an area not extensively explored.
  
If the '''specular map''' is "White": things will be very shiny. If it's "Black": it will be completely dull.  Nuance of "Grey" will be in between.
+
Recall (from the [[#GECK Form-ID, Base-ID, Ref-ID, and Editor-ID|GECK Form-ID, Base-ID, Ref-ID, and Editor-ID]] section) that the "Base ID is the number assigned to a template for an object that is used to create many instances of that object.And "the Reference ID is the unique ID of an individual object (unlike the Base ID, which is an ID for an object template)" that is placed in the game world.
  
To have the '''normal map''' with an effective ''Alpha channel'' you have to save it in DXT5 format.
+
In other words:  GBO returns the "Leveled" Base-ID (from the leveled list in the instance under consideration).  And that can be stored in a reference variable.  GBF goes into the list within the "Leveled" Base-ID and gets the root Base-ID that was the template of the leveled object.  That can also be stored in a reference variable but is not actually a "Ref-ID" and cannot be used as one, as it has no specific object.  (The "reference" / '''Ref-ID''' is expected to contain active characteristics, such as world location, current stats, etc. of a specific object instance in the game world.)
  
If you want your texture to look even better, make a '''specular map''' and put that in the ''Alpha channel'' of the '''normal map'''.  (You can use the [http://www.mwgfx.co.uk/programs/dxtbmp.htm DXTBmp Texture Tool] for this purpose by exporting the ''specular map'' in ".bmp" format from your ''paint'' program, opening the ".dds" '''normal map''' in '''DXTBmp''', importing the ''specular map'' into the ''Alpha channel'', and saving.) Just be aware that depending on the settings on the mesh itself (which I would not change for a "face", unless it's a "custom race" mod), you may need to darken your '''specular map''' extremely for it to avoid "radiating like the sun itself".
+
[http://geckwiki.com/index.php/GetSelf GetSelf] returns a Ref-ID that you can store in a reference variable, referring to the specific instance of it in-game.   ''GetSelf'' is only useful when this information is accessed externally, or when the scripted reference's Ref-ID needs to be passed as a parameter to a function like [http://geckwiki.com/index.php/PushActorAway PushActorAway]This can be a problem with inventory objects because they are destroyed regularly.
 +
</div>
  
It's not straightforward to insert an image into the '''normal map''''s ''Alpha channel'' using just '''Photoshop CS2''', but it can be done.  You need to first flatten the image by converting it to ''Greyscale'', duplicate the Grey channel, name it "Alpha 1", remove the original "Alpha 1" channel in your '''normal map''', and then drag the "Alpha 1" channel you've just created into your '''normal map'''.
+
<span id="TIP-LLNesting"></span>
 +
==== TIP Level Lists Nesting ====
 +
: Thanks to '''FiftyThifty''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">While it's known that you can "nest" a '''Level List''' inside of another "hosting" '''Level List''', it is less well known that the engine has a problem with nested lists added to lists which have individual items in "Fallout 3" [or "Tale of Two Wastelands (TTW)" merchants in the "District of Columbia" (DC) area].  So if you have (where "+>" means "hosting a nested"):
 +
<pre>
 +
Levelled List +> Levelled List +> Levelled List +> Items
 +
</pre>
 +
Adding items to the last one would be fine. But if you have:
 +
<pre>
 +
Levelled List +> Levelled List +> Levelled List + Items +> Levelled List (your added list)
 +
</pre>
 +
Your added Levelled List won't be processed.  This structure works as expected in other FNV circumstances.  
 +
</div>
  
On the subject of tool choice for this purpose, '''madmongo''' said:
+
<span id="Tip-InteriorRadio"></span>
 +
==== TIP Limit Radio Range to multiple Interior Cells ====
 +
: Thanks to '''EPDGaffney''' and '''user826''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">In order to limit a Radio Broadcast to only be heard when the Player is inside a cluster of linked interior cells, you need to set the ''Talking Activator'' to ''Broadcast Range Type = Linked Interiors'' in the first cell.  (Place the ''Activator'' out of reach and sight to hide it from the player.)  You then use ''[http://geckwiki.com/index.php/Bethsoft_Tutorial_Finalize_and_Connect Teleport Doors]'' as usual to link the interior cells together for the Radio Broadcast.
I have never used '''Photoshop''' so I can't compare with that.
 
  
I have used both '''GIMP''' and '''Paint.Net'''. I found '''GIMP''' to be less intuitive so there is a bit of a steeper learning curve with it. '''Paint.Net''' seems more intuitive and easier to use to me. I personally tend to use '''Paint.Net''' for most '''FNV''' stuff. Most other modders prefer '''GIMP'''. I think '''GIMP''' is a bit more powerful, though '''Paint.Net''' usually does everything that I need it to do.
+
You may find it preferable to use a set of "hidden, dummy doors" to provide the Radio Broadcast linkage. Be sure to flag such doors to be "Hidden from Local Map".
 
 
'''Paint.Net''' includes DDS support right out of the box. With '''GIMP''' you need a plugin. '''GIMP''' and '''Paint.Net''' both require a plugin to make '''normal maps'''.
 
 
 
'''Paint.Net''' doesn't treat ''Alpha channel'' as a different layer, so it's more difficult to work with. If you are messing around with ''Alpha channel'' stuff, '''GIMP''' is the better choice, IMHO.</div>
 
 
</div>
 
</div>
  
=== Weapons ===
+
<span id="Tip-Mannequins"></span>
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
==== TIP Mannequins ''aka static Actors'' ====
* [http://www.nexusmods.com/newvegas/mods/63109/? Complete custom gun modding guide by GaigeStorm] PDF.
+
: Thanks to '''b0bulat0r''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
* [[Adding_ISA_to_Fallout:_New_Vegas|Adding Iron Sights Animation (ISA) to FNV]] Wiki.
 
* [http://www.nexusmods.com/newvegas/mods/61315/? Guide: Blender/NifSkope Weapon] Resource collection including tutorials.
 
* [http://www.nexusmods.com/newvegas/images/104855/?changePreference=3 Guide - Blender and NifSkope weapon] by '''SGTbayk47'''.
 
* [[Simple_vanilla_ironsights|Simple vanilla ironsights]] Wiki.
 
* [[Texturing_weapons_-_video_tutorial|Texturing weapons - video tutorial]] Video link in the wiki article.
 
 
 
<span id="Tip-GECKWpnCTD"></span>
 
====TIP: GECK CTD when editing weapons====
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">"Every time I attempt to use the GECK to edit a weapon it crashes, even when only the main NV master file is selected."
+
">A "mannequin" is nothing more than an Actor that doesn't move: no idle poses, sandbox, travel packages, etc..  All it takes is adding an "OnLoad" script with the line "SetActorsAI 0", e.g.:
 +
<pre>
 +
Begin OnLoad
 +
  SetActorsAI 0
 +
End
 +
</pre>
 +
</div>
  
This has been traced to the presence of a specific file that is overwritten by "Fallout Character Overhaul" (FCO): '''eyebrowm.nif''' in: ''Data\meshes\characters\hair''.  Remove it when using GECK, and restore it when playing.  If you put it into a batch (.cmd) file such as the following to launch GECK you won't forget.
+
<span id="Tip-MasterDependencies"></span>
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"  
+
==== TIP Master Dependency Checking ====
style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;  
+
: Thanks to '''miguick''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
/* Remove the next four 'white-space' lines to restore default white-space processing. */
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
white-space: pre-wrap;      /* css-3 */
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
+
background-color:#333333;padding:3px;
white-space: -pre-wrap;      /* Opera 4-6 */
 
white-space: -o-pre-wrap;    /* Opera 7+ */
 
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">
+
">When the game starts you may want to check for items introduced in DLCs (e.g. "HonestHearts") and store the results in a list.
@echo off
+
 
cls
+
'''NVSE''''s ''[http://geckwiki.com/index.php?title=IsModLoaded IsModLoaded] "HonestHearts.esm"'' and ''[http://geckwiki.com/index.php?title=GetFormFromMod GetFormFromMod] "HonestHearts.esm" "xxxxxx"'' can't go wrong for such a thing. (The quotation marks around the ''pluginName'' and ''hexFormID'' strings are required.)  Where "xxxxxx" are the last 6 digits of the FormIDs of the records you are concerned aboutThe GECK displays them in a minimized column that you can stretch.
<nowiki>::</nowiki>REM As GECK has to be run from an 'Administrator' account, you should launch it from a
+
 
<nowiki>::</nowiki>REM  shortcut (.lnk file) that has that "run as" setting in the 'Properties'.  This will
+
See also [[#ESM_and_ESP_Files| ESM and ESP Files]] entry about whether your mod should be a "master file" (ESM) or an ESP.
<nowiki>::</nowiki>REM  be run in a separate sub-process window. Otherwise the 'start' command won't WAIT
 
<nowiki>::</nowiki>REM  until GECK is done before continuing with this script.
 
<nowiki>::</nowiki>REM Change the 'set runpgm=' line to point to your GECK shortcut.
 
set runpgm=C:\Users\Public\Rec\FalloutNV\GeckPU.lnk
 
<nowiki>::</nowiki>REM Change the 'set gamedir=' line to point to your game install folder.
 
set gamedir=E:\Games\SteamLibrary\steamapps\common\Fallout New Vegas
 
<nowiki>::</nowiki>REM Nothing else below this point should need to be changed.
 
set tgtdir=%gamedir%\Data\meshes\characters\hair<br>
 
pushd "%gamedir%"
 
if exist "%tgtdir%\eyebrowm.nif" ren "%tgtdir%\eyebrowm.nif" eyebrowm.nif.hld && @echo SCRIPT: Removed file [eyebrowm.nif]<br>
 
@echo SCRIPT: Manually close the separate window GECK is launched in.  When you do, DO NOT
 
@echo SCRIPT:  select to 'Terminate batch job' (answer "N") or you won't restore files properly.
 
start "GECK" /D "%gamedir%" /WAIT cmd /k "%runpgm%"
 
if exist "%tgtdir%\eyebrowm.nif.hld" ren "%tgtdir%\eyebrowm.nif.hld" eyebrowm.nif && @echo SCRIPT: Restored file [eyebrowm.nif]<br>
 
<nowiki>:</nowiki>DONE
 
pause
 
popd
 
 
</div>
 
</div>
The GECK should also be patched to use up to 4GB of memory (i.e. [http://www.nexusmods.com/newvegas/mods/62552/? FNV 4GB Patcher], NT Core's [http://www.ntcore.com/4gb_patch.php 4GB EXE Patcher] or their more general [http://www.ntcore.com/exsuite.php CCF Explorer], or the like).
 
  
The GECK can also appear to "hang" while trying to load plugins.  This may be due to failing to select other plugins your target plugin requires as "masters", but which are not ESM files.  You can use the '''xEdit/FNVEdit''' "File Header" to identify all the files that are masters to your plugin, and then be sure to select all of them when loading it into the GECK.  Please see the wiki [[#Missing_Masters|Missing Masters]] article for details.
+
<span id="Tip-ModAdditionsList"></span>
</div>
 
  
<span id="Tip-WeaponAnimations"></span>
+
==== TIP Mod Additions list ====
====TIP: Weapon Effect Animations====
+
: Thanks to '''DoctaSax''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
: Thanks to '''pixelhate''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the following:
 
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">You can't Import/Export Texture animation in '''Blender''' (e.g. "Shishkebab's fire").  Set up for such animations are done in '''Nifskope'''.  See the [[#Animations|Animations]] section.
+
">Sometimes you want to know about all the additions of a particular type (such as 'weapons' for example) that a specific mod adds to the game.
 +
 
 +
With the '''JIP LN NVSE''' plugin (which now since v40 incorporates the "Lutana" extensions) this is quite easyUse a combination of the [http://geckwiki.com/index.php?title=GetModIndex GetModIndex] and [http://geckwiki.com/index.php?title=GetLoadedTypeArray GetLoadedTypeArray] functions with [http://geckwiki.com/index.php?title=Form_Type_IDs Form Type IDs] code '40' ('Weapons'):
 +
<pre>
 +
array_var aWeapons
 +
int iIndex
 +
 
 +
let iIndex := GetModIndex "<TheMod>.esp"
 +
let aWeapons := GetLoadedTypeArray 40, iIndex
 +
</pre>
 
</div>
 
</div>
  
<span id="Tip-VATSChance"></span>
+
<span id="TIP-MultipleScriptEffects"></span>
==== TIP: Weapon has unexpected zero% VATS Chance ====
+
 
: Thanks to '''yummy2''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
+
==== TIP Multiple Script Effects  ====
 +
: Thanks to '''FiftyThifty''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">So, you modded some weapon (either vanilla or from some mod) and suddenly it has "0%" chance to hit in VATS.
+
">Problem: when multiple ingestible items are used, that call their own script effect, only the first one is processed properly. Subsequent ingestibles used without closing the Pipboy and re-opening it after using a single ingestible, causes the item to be used and the menu to appear. But no actor is spawned.
  
The problem is not with your custom weapon mesh or texture; it's with the projectile, which may have inadvertently or intentionally been altered. For instance, a "non-zero" timer and proximity of the projectile's explosionEven if it was a "Trigger on impact" explosion, the non-zero values can still mess up VATSCompare such settings with other projectiles working correctly.
+
Solution: Use JIP LN NVSE function [https://geckwiki.com/index.php?title=MessageBoxExAlt MessageBoxExAlt] at the ''ScriptEffectStart'' block to create the menu, which calls back to a [https://geckwiki.com/index.php?title=UDF User Defined Function (UDF)] scriptAnd it automatically passes the selected button to your script.
</div>
+
   
 +
Example:
 +
<pre>
 +
scn SampleScript
  
=== Worldspace Creation ===
+
Begin ScriptEffectStart
(Worldspace creation is basically the same between FO3 and FNV.)
+
  Print "Starting script effect"
 +
  MessageBoxExAlt MyUDFMenuChoiceScript "^Multiple Effects Menu^ |Effect-1|Effect-2|Effect-3"
 +
End
 +
</pre>
  
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
And the UDF has the button pressed to select a particular choice (passed as the ''iButton'' parameter in the UDF function call example) checks block in it.
* [http://www.google.com/?gws_rd=ssl#q=geck+create+a+new+world+space&tbm=vid Google search result for Worldspace Tutorials] Video.
 
* [http://geck.bethsoft.com/index.php?title=Category:World_Spaces GECK: World Spaces] Wiki.
 
* [http://www.truancyfactory.com/tutorials/fallout3/fallout_worldspace.html Fallout3 World Space] by '''truancyfactory'''. HTML with images.
 
* [http://www.creationkit.com/index.php?title=Bethesda_Tutorial_Navmesh Bethesda Tutorial: Navmesh] Wiki.
 
* [http://afkmods.iguanadons.net/index.php?/topic/3337-skyrim-fixing-navmesh-deletion-using-tes5edit/ Fixing Navmesh deletion using TES5Edit by '''Arthmoor'''.] Thread.
 
* [http://www.youtube.com/watch?v=Q-ZQtgveKaM Fixing Deleted Navmesh with TES5edit by '''soupdragon'''] Video.
 
* [http://www.youtube.com/watch?v=babuNn5pzsw Filter for (find) Deleted Navmeshes with TES5edit by '''soupddragon'''] Video.
 
* [http://www.nexusmods.com/skyrim/mods/70285/? Guide for fixing deleted NavMeshes by '''AndrealphusVIII'''] Image guide. (For Skyrim but works for deleted NavMeshes in general).  This method is useful for fixing "merged navmesh islands", which cause a deleted navmeshes.
 
  
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"
+
Now you have a menu without needing to use the Pipboy(Of course it needs to be dressed up a bit more with a way to exit the effect script.)
style="margin:0px 10px 10px 20px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
 
/* Remove the next four 'white-space' lines to restore default white-space processing. */
 
white-space: pre-wrap;      /* css-3 */
 
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 
white-space: -pre-wrap;      /* Opera 4-6 */
 
white-space: -o-pre-wrap;    /* Opera 7+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
">
 
<span id="CleaningNavMeshDeletion"; style="color: red; background-color:#333333;">WARNING:</span> Do NOT use any of these methods to ''clean the deleted navmeshes'' in the official ESMsThis will do more harm than good. "Official ESMs" refers to the DLC by the game publisher.
 
 
</div>
 
</div>
  
<span id="Tip-WorldMap"></span>
+
<span id="Tip-NPCWpnChoice"></span>
==== TIP: Creating a new 'world map' ====
+
 
 +
==== TIP NPC Weapon Choice ====
 +
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 
background-color:#333333;padding:3px;
 
background-color:#333333;padding:3px;
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 
word-wrap: break-word;      /* Internet Explorer 5.5+ */
">All "world maps" are based upon a "bitmap image" in ".dds" formatDepending upon how "original" your worldspace territory is, you may be able to find "satellite images" or "heightmap" or other sources whose copyright permits you to create a "derivative work" by scanning/converting into a bitmap image formatOtherwise you will probably have to take screenshots of the various "render windows" of your unique worldspace in '''GECK''' and stitch the results together into a single image for use as described below.
+
">When trying to force an NPC to use particular combat tactics (such a choice of Weapon) under specific circumstances, remember that the higher cyclic "Damage Per Second" (DPS) rate of the Weapon is what governs their choice; not the base "Damage" inflicted per shot{For Armor, it's "Damage Resistance" (DR) that governs.} This is hard-coded into the game engine.
  
'''Ptolemy''' by '''Alan Broad''' (included in the mod [https://www.nexusmods.com/newvegas/mods/57245/? Ptolemy Maps for New Vegas]), being purpose-built for games like The Elder Scrolls, not only came with the Morrowind map but served as a tool for creating game maps from bitmap images. It included a simple but robust suite of tools for creating and organizing locations based on their type, faction, importance, etc.  It was used to create the FNV maps included in that mod.
+
Consequently, in order to force the NPC to switch weapons, you may need to temporarily remove their current weapon and any alternative choices you don't want them to use, saving both the baseform of the removed weapon(s) and any timer using either a [http://geckwiki.com/index.php?title=Category:Tokens Token] or JIP's [https://geckwiki.com/index.php/Category:Auxiliary-Variable_Functions_(JIP) Auxvars] on the NPC in order to restore them after circumstances change again(Essentialy this is the same as the "reverse pickpocket" trick to cause an NPC to switch gear so you can steal what they had been wearing.)  See [[#TIP:_Timers|TIP: Timers]] regarding limitations which necessitate this "Token" or "AuxVars" approach.
 
 
In addition, there is the wiki article [http://wiki.tesnexus.com/index.php/Oblivion_custom_in-game_map Oblivion custom in-game map] which is a short tutorial describing one method of creating a working world map for your worldspace in OblivionAs the same game engine is used for both, the process should work for FNV.  Just don't select anything in the "Parent Worldspace" field.
 
 
 
A more complete tutorial on the overall process is [http://www.truancyfactory.com/tutorials/fallout3/fallout_worldspace.html Creating a Custom Worldspace for Fallout 3] by '''truancyfactory'''.
 
 
</div>
 
</div>
  
=== Packaging Mods for Installation ===
+
<span id="Tip-Transformations"></span>
Once you have created (and tested) your mod, you still aren't done.  You have to "package" the ESM & ESP files, and all related "assets" into a structure suitable for installation.  And given that there are more than one "mod manager" in use by people, this requires some forethought. Once you have created your "mod package", you then have to "publish" it on the Internet, presumably to the "Nexus Mods" site which is the assumption here.
+
==== TIP Object Transformation ====
 +
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Suppose you are trying to make a '''Wild Wasteland''' mod where "something" (say a generic army truck) is changed to "something else" (such as a UFO) only if you have '''Wild Wasteland''' as a perk.
  
Note: If you package your mod into an "executable installer" (so it has a ".exe" extension), it cannot be installed with a "mod manager".  They can only deal with packages in '''7Zip''', '''ZIP''', or '''RAR''' archive formats.  You would have to "run" the installer executable first so it unpacked the package into a folder, and then manually move the contents of that folder to the correct locations under "Data".
+
The general way to do something like this is add your army truck and your UFO both to where you want them. Then you have something like an '''xmarker''' that acts as an ''enable parent''. If the '''xmarker''' is initially enabled, then you want the truck to use the '''xmarker''' as an ''enable parent'' as-is, but you want the UFO to be enabled opposite of the '''xmarker''' (there's a check box for this on the ''enable parent'' tab of the reference form). As you continue to add things (aliens, etc) have their ''enable parent'' also be the same '''xmarker'''.
  
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
+
The '''xmarker''' starts out enabled, so your truck and whatever else is using that '''xmarker''' is enabled and visible. As soon as you disable the '''xmarker''', the truck (and everything else that was enabled) is now disabled and disappears, and the UFO (and everything else) that is using the '''xmarker''' as opposite now becomes enabled.
* [http://wiki.nexusmods.com/index.php/Category:Using_the_Nexus_sites Category: Using the Nexus sites] Wiki page has articles on:
 
:* [[Blank_thumbnail_images | Blank thumbnail images]] Wiki
 
:* [[Compressing_your_images_before_uploading | Compressing your images before uploading]] Wiki
 
:* [[Formating_and_BBCode_in_Descriptions | Formatting and BBCode in Descriptions]] Wiki
 
:* [[How_to_convert_images_with_MS_Paint | How to convert images with MS Paint]] Wiki
 
:* [[How_to_crop_images_with_MS_Paint | How to crop images in MS Paint]] Wiki
 
:* [[How_to_upload_mods | How to upload mods]] Wiki
 
:* [[Illegal_Music_Pack_Uploads_and_You | Illegal Music Pack Uploads and You]] Wiki
 
* [http://zumbs.wordpress.com/2009/11/08/fomm-and-fomods-for-dummies-1/ FOMM and FOMODs for Dummies] by '''Zumbs'''
 
* [http://www.nexusmods.com/skyrim/mods/75140/? FOMOD Validator] by '''Ganda'''
 
* [http://www.nexusmods.com/newvegas/mods/44914/? Guide to FOMOD scripting] Mod by '''nyrb''' based on work by '''kaburke'''
 
* [http://www.nexusmods.com/skyrim/mods/35567/? Mod Publishing Tutorial for Nexus] Mod by '''TheThirdRace'''
 
* [http://cs.elderscrolls.com/index.php?title=Modding_Etiquette Modding Etiquette] Wiki
 
* [http://www.nexusmods.com/skyrim/mods/39434/? NMM Installer Tutorial - FOMOD - FOMM] Mod by '''XunAmarox'''
 
* [http://www.nexusmods.com/skyrim/mods/41440/? NMM ModuleConfig Creator] Mod by '''Twilightassassin'''
 
* [http://wiki.step-project.com/Guide:Wrye_Bash S.T.E.P. Guide: Wrye Bash] Wiki
 
:* [[BAIN_an_understanding|BAIN an understanding]]
 
:* [http://forums.bethsoft.com/topic/1084204-bain-mod-installation-projects/ BAIN Mod installation projects] thread on the Oblivion forum.  Understanding BAIN complex structures aids in scripting installs with other managers.
 
:* [http://www.nexusmods.com/skyrim/mods/4328/? BAIN Archive Tools - BAT] by Surazal
 
 
Re Original images:  You can use screenshots from the game, as long as you are the one who took them, or you use those posted by others with their explicit permission.  When in doubt, see the "Terms of Service" and the image "file" page to check the permissions there.
 
  
Re Music: If you intend to include externally sourced "music", "voices", or "sounds", see the wiki article [http://wiki.nexusmods.com/index.php/Illegal_Music_Pack_Uploads_and_You Illegal Music Pack Uploads and You]Unless it is your own original work, it's copyrighted by someone else. You have to check for permissions.
+
So now that everything switches in and out based on whether or not your '''xmarker''' is enabled or disabled, the last piece of this is to actually enable or disable that '''xmarker'''To do this, all you need is a trigger with a script that detects whether or not the player has the '''Wild Wasteland''' perk, and disable your '''xmarker''' if they do. You are going to want your trigger area large enough that it will disable your truck and enable the UFO before the player gets too close to it so that the player won't see the transition.
 +
</div>
  
Re REQUIRED: That setting is for linking other mods/plugins that are essential for your mod to work correctly.
+
<span id="TIP-MsgVariable"></span>
  
A video does not fall into that category, as it can only be describing how to install or use your mod. Your best bet if you feel it is essential people use it for your documentation is to provide that explanation and link it prominently in your description (as well as under the "Video" tab).  (See the wiki [http://wiki.nexusmods.com/index.php/Formating_and_BBCode_in_Descriptions Formatting and BBCode in Descriptions] article.) However, bear in mind that:
+
==== TIP Pass a variable number into a script message ====
* Not everyone likes or can even watch some videos: e.g. medical conditions; a different native language (not easily translated from a video; while it is from a text file);
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
* A video is no substitute for written instructions which should be included in a "ReadMe" file.  That link not only explains that position but links to a "ReadMe Generator" program to help you create a "proper" file.
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
* Most players do not want to read/view anything to get a mod installed.  People (well, most of them) never seem to RTFMThey assume all they need to do is install, and at most then add it in their mod manager to their current game settings.  They will then turn around and complain your mod is "broken" and demand you fix it NOWThis is a "fact of life" for mod creatorsPlan for it, and reduce your installation complexity upfront as much as possible.
+
background-color:#333333;padding:3px;
+
word-wrap: break-word;      /* Internet Explorer 5.5+ */
To that end, learn how to properly package your mod.
+
">
 +
* Read the "Formatting messages" section in the GECK article on the [http://geck.bethsoft.com/index.php?title=ShowMessage ShowMessage] function.  For an integer: use "%.0f" or "%g"Include the formatting switch in the text in the message form, like this:<pre>"The winning number was %g."</pre>
 +
* Then pass the script variable to the ShowMessage function along with the message, like this:
 +
<pre>
 +
  set iWinningNumber to GetRandomPercent
 +
  ShowMessage WinnerMessage, iWinningNumber</pre>
 +
* Here's an example with [http://geck.bethsoft.com/index.php?title=MessageBoxEx NVSE], which allows you to show messages without creating a new message form. NVSE also supports a number of extra switches that can't be used in ordinary message forms.
 +
:<pre>MessageBoxEx "The winning number was %g.", iWinningNumber</pre>
 +
</div>
 +
 
 +
<span id="Tip-Notes"></span>
 +
==== TIP Passing a '''Note''' to the player ====
 +
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"  
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">This is a bit lengthy because it covers more than simply commands and functions, but concepts and how to implement them.  Unlike the tutorials listed, this tip is about how to pass a "note" to the Player directly or display it outside of the Pip-boy "Notes" tab(The concepts presented here similarly apply to passing along "recipes".  See also [[#Tip-Recipes|TIP: Passing a 'Recipe' to the player]] in that instance.)
  
Packages can be divided into two categories: "standard" and "private":
+
* The "Note" object:
* A "standard" structured package follows the directory structure used by the game: that is vanilla game sub-folders under "Data" (such as "Meshes", "Textures", "Menus", etc.), with possibly additional "mod specific" sub-folders under those (e.g. "Meshes\armor\<ModName>").  Such can be handled by any of the available managers.  Note the current generation of mod managers do not require you to include the "Data" folder itself.  See the wiki article [http://cs.elderscrolls.com/index.php?title=Modding_Etiquette Modding Etiquette].
 
* A "private" structured package introduces layers of non-vanilla sub-folders (e.g. "<Mod Name>\Data\<Mod version folder>\Meshes", etc.).  Such have to be manually restructured to remove the offending "non-standard" folders before they can be properly installed using a "mod manager" (or even recognized if installed manually).
 
  
Obviously you want to create "standard" structured packages to avoid having to deal with the questions your users inevitably will have in getting your mod installed.
+
From a modder’s perspective, it’s important to be aware that [http://geckwiki.com/index.php?title=Notes GECK: Notes] are different to standard items.  They store text, and that text will not receive an [http://geckwiki.com/index.php?title=Inventory_Reference inventory reference] like other ''objects'' / "pick-ups" and can never be dropped (though they can be removed in several less standard ways).  Additionally, "notes" can’t have a script attached to them directly, though there are several workarounds available.  (Most of the tutorials listed on the subject are addressing these workarounds.)
  
The most common mistake is that people misunderstand the part about creating an archive package that goes:
+
However, like normal "pick-ups", "notes" can be assigned a model (mesh file) and an inventory ''icon'' that will be visible when being taken from a container (and '''not''' in the player’s Pip-Boy), when the mod creator has placed them in such containersAny model can be chosen, but it must have ''collision'' in order to be "picked up".  "Holotape" and "paper" models are most common.  If the "note" is to be "picked up" as a model outside of a container in the game world, no icon is necessary; and if the "note" is never to be seen in the game world, no model is neededIf it would not be seen in a container or in a cell, then it wouldn't need either one.  
<pre>
 
go back into the root of the folder so that the address bar once again shows '''C:\<MyMod>''' and then select all the files (.esp & .txt) and folders (meshes & textures) and right-click on them
 
</pre>
 
You are NOT supposed to select the folder '''C:\<MyMod>''' in the exampleYou are supposed to select all the files (and any sub-folders) '''''under''''' that folder.  If you select the folder itself, then the package gets created with that folder name as the top level in the archive, and every "mod manager" will treat it as a new folder under the "Data" folderThe files will not get placed in the correct locations; they will be buried one level down and never seen by the game engine.
 
  
Even when you build a "standard" package, the structure can be categorized into one of two forms: "simple" and "complex".
+
"Notes" can be displayed in a ''terminal'' as well, and via the ''terminal form'' can be configured to be added to the player’s Pip-Boy upon reading them there, or not be added.
  
==== Simple structure ====
+
[[File:EPDGaffney_NoteObject.png|thumbnail|100px|NoteObject]]
All modern "mod managers" can easily install packages with a "simple structure" that starts under (not including) the game "Data" folder (e.g. "Meshes\<category>\<mod name>\<other sub-folders as needed>").  They either add their files directly to the existing vanilla folders, or under their own sub-folder in order to keep them separate.  It all depends upon the paths used when building the mesh and texture files.  They might create their own, new folders starting at the "Data" level (e.g. "Data\NVSE"), but the package structure simply has the new folder in the package at the same level as the top level vanilla folders, like "Meshes", "Textures", and "NVSE"The "Data" folder is assumed by the managerThis is the reason some package structures, which require they be installed starting in the game root folder (e.g. "Fallout New Vegas\LOOT"), usually cannot be installed correctly with a "mod manager".
+
Once in the Pip-Boy, "Notes" are one of four things: text, an image, a voice, or a sound(See the figure [[:File:EPDGaffney_NoteObject.png|NoteObject]]{{Thumbnail_enlargement_message}})
  
==== Complex structure ====
+
It's often easiest to take an existing "note" item that shares the model you wish to use and then change the '''EditorID''' to make a new object. That way all the associated mesh and icon/texture files are already linkedOtherwise you have to unpack them from the BSA as the '''GECK Editor''' doesn't look there for those files.
The simple structure does not have "conditional install components": meaning some files that are only installed under certain conditions such as the presence of a plugin from a different mod.  Complex structure may also require certain "scripted" modifications to existing (usually vanilla) files.  The different "mod managers" vary in their ability to handle such scripting (often called "install wizards" or simply "wizards").  If the scripting capabilities of a particular manager are required, it is the author's responsibility to make this adequately clear to the potential mod usersOften such structures use various sub-folders to group the files related to the specific condition together.
+
{{BSA Extraction Warning}}
  
Understanding how the various "mod managers" can assist with installation will enable you to use a structure that takes advantage of the most available features of all of them.
+
* Scripting with "Notes":
  
==== Uploading to the Nexus ====
+
To add a "note" directly to the player’s [http://fallout.gamepedia.com/Pip-Boy_3000 Pipboy], use the ''[http://geckwiki.com/index.php?title=AddNote AddNote] <NoteID reference>'' functionUnless the "note" is ever meant to be added in some other way (e.g. as an object dropped into the game world), a "note" added in this way will never be seen in the game world or any container and thus requires no icon or model.
[http://sites.google.com/site/ttrcreations/skyrim/mod-publishing-tutorial Mod Publishing Tutorial] is written for Skyrim with plenty of illustrative images, but should be pretty universal with obvious changes for any specific game.  It's on [http://www.nexusmods.com/skyrim/mods/35567/ Nexus], but as the author suggests using the HTML version, that's what's linked first.
 
   
 
An older alternate, shorter version is the wiki [[How_to_upload_mods|How to upload mods]] article.
 
  
The wiki [[Formating_and_BBCode_in_Descriptions|Formating and BBCode in Descriptions]] article can help you create a more distinctive description page. Remember: this page is where you "sell" your mod to potential players. Like any advertising campaign, "eye appeal" is important.
+
To trigger an '''OnAdd''' event when acquiring a "note", as one may be accustomed to doing with other items, a workaround is required.  A ‘dummy’ "item" must be placed in the game world or a container, and this item can’t be a "note" item.  It must be a separate form, which can be named the same as the relevant note (but can’t share the same '''EditorID'''), and this item can have a script attached to it with an '''OnAdd''' script block.  Then just drop it in a cell (the video [http://www.youtube.com/watch?v=APnz-qdQxfQ Tutorial - Scripting Notes] Video by '''Seddon4494''' covers three basic methods of accomplishing this); or use ''[http://geckwiki.com/index.php?title=AddNote AddNote] <NoteID reference>'' in a (running) script somewhere (such as a dialog ''End Result Script'') to proactively get it into the Player's inventory instead of waiting for the Player to pick up the ''item''.  (See the figure [[:File:EPDGaffney_NoteObject.png|NoteObject]].  {{Thumbnail_enlargement_message}})
 +
You can (if you wish; it's not required) then have your script remove the ‘dummy’ "item" (whose only purpose is to provide a flexible anchor for the note) from their inventory, and add the text/image/sound of the note (e.g. "FCRaiderNote" in the example below) to the player. It will then appear in their Pipboy "Data" tab under "Notes".
  
== The next step ==
+
For more on the subject see the [http://geckwiki.com/index.php?title=Bethsoft_Tutorial_Basic_Quest Bethsoft Tutorial Basic Quest] article.
So, you wonder if you are ready to step out of the novice stage. You know you are at this stage after you realize the grand scheme you had in your head for your idea isn't going to happen, and scale back your initial ambition.
 
  
You should start looking to the forum boards and reading what others are coming up with for idea's on what to mod. Then just take that idea and since now you are more familiar with the GECK and information resources (like the GECK wiki), see if you can solve the problem with their idea.   Just in a "lurking" fashion if you don't want to actually go public.
+
Example script attached to the game world "item" (e.g. the "holotape"):<pre>
 +
  begin OnAdd Player        ; Run when player picks up 'misc. item'
 +
    AddNote FCRaiderNote    ; Give note to player
 +
    SetStage COLOMQ1 10    ; Start/set quest 'COLOMQ1' at stage 10
 +
    RemoveMe                ; Remove 'misc. item'
 +
  end
 +
</pre>
  
Many mod creators have found this to be a huge source of learning material, since they cannot come up with all the various idea's on what to mod on their own.  Helping others is actually helping yourself, and there is nothing like trying to solve a particular problem to consolidate all the various bits of information into an understanding.  You will almost always learn something new when investigating how to accomplish another's idea.  (Anyone who has engaged in teaching others will tell you they learn more preparing to teach than they started already knowing.)
+
* Using Message Functions:
  
And just for learning purposes there are all the past posts, some of which have been solvedMany haven't, so there is no shortage of first time solutions to be worked out.
+
Though the traditional method of viewing a "note" is by way of clicking on them in the '''Pip-boy''', "notes" are currently very unwieldy unless they're short.  A mod using the concept of an "EventHandler" (see "Employing an EventHandler" below) to detect when the player clicks/presses a key or gamepad button on a note in the '''Pip-boy''' could theoretically change that if someone wanted, or someone could add readable books this way, or any number of thingsSuch can make use of the improved ''message functions'' available to us by way of [http://nvse.silverlock.org/ New Vegas Script Extender (NVSE)] and [http://rd.nexusmods.com/newvegas/mods/58277 JIP LN NVSE Plugin] mods; which now include:
 +
* [http://geckwiki.com/index.php/MessageEx MessageEx] (NVSE)
 +
* [http://geckwiki.com/index.php/MessageBoxEx MessageBoxEx] (NVSE)
 +
* [http://geckwiki.com/index.php/MessageExAlt MessageExAlt] (JIP LN)
 +
* [http://geckwiki.com/index.php/MessageBoxExAlt MessageBoxExAlt] (JIP LN)
  
 +
(However, as these constantly are updated and added to, the mod creator is advised to search the list of functions on the [http://geckwiki.com/index.php/Main_Page Community Wiki] site lists of [http://geckwiki.com/index.php/Complete_List_of_Functions_in_NVSE NVSE] and [http://geckwiki.com/index.php?title=Category:Functions_(JIP) JIP LN] functions.  The "official" Bethesda GECK Wiki is not getting those updates to it's function list.)
  
== References ==
+
'''MessageEx''' and '''MessageBoxEx''' are NVSE functions and allow one to pass the text directly, which is very convenient, but they don't give any options and '''MessageBoxEx''' does not offer the ability to "title" the message.  The other two are JIP functions that improve upon this greatly.
  
(Generally in order of appearance in the article.)
+
With the '''MessageBoxExAlt''' function (as of JIP version 53.60) it is now possible to pass a dummy, non-script form as the UDF script argument, in which case no script will be invoked when a button (or key) is pressed.  This will mean that you can use that same blank form for every message box that you want to give a title but don't need buttons for it.  The UDF script is where you would implement button functionality, and it's far quicker than vanilla.  Only one such "dummy UDF script" per mod would be needed in the case where you desired to use a message box with a title but no buttons and pass the text directly as a string.
  
=== Refs: [[#Programs_and_Tools|Programs and Tools]] ===
+
* Employing an EventHandler:
  
==== Refs: [[#GECK_Tools|GECK Tools]] ====
+
"Notes" are only ''Activators'' if they're being picked up via activating a note's "in-game World model", such as a "holotape" on a table.  In a container or when added via script, they are just "Notes".  (Technically, all pick-ups are ''activators'' that are disabled on activating them and an inventory reference is added to the player's container; with the exception of "notes", which have no inventory reference but are still added to the '''Pip-boy''', and their ''activator'' is still destroyed.)
  
*[http://geck.bethsoft.com/index.php?title=Main_Page Garden of Eden Construction Kit (GECK)] Tool.
+
The advantage of [http://geckwiki.com/index.php?title=Event_Handling EventHandling] (added by the '''NVSE''') is that it can "fake" using a standard activator "event" such as '''OnEquip''', but instead trigger when you desire and the standard event isn't otherwise permitted; such as when a key or button is pressed in a menu.  "An event handler allows response to game events, without having to attach scripts directly to objects. Instead, the scripter uses [http://geckwiki.com/index.php?title=SetEventHandler SetEventHandler] to register a [http://geckwiki.com/index.php?title=User_Defined_Function User Defined Function (UDF)] as a handler for a specific event. When an event occurs during gameplay, NVSE will invoke any handlers that correspond to it, passing information about the event to their function through its arguments." [Source - Community GeckWiki] See [[#Tip-EventHandler | TIP: Don't overlook EventHandlers.]]
*[http://www.nexusmods.com/newvegas/mods/64888/? GECK Extender] NVSE Plugin. <span style="margin:0px 10px 10px 0px; border:1px solid #00C600; color: red;  background-color:#fff5f5; padding:3px;  word-wrap: break-word">(Do not use together with '''GECK Powerup''' (nor the '''Forked''' version), which it replaces.)</span>
 
*[http://www.nexusmods.com/newvegas/mods/41642/? GECK 1.4 Powerup] Plugin. <span style="margin:0px 10px 10px 0px; border:1px solid #00C600; color: red;  background-color:#fff5f5; padding:3px;  word-wrap: break-word">(Replaced by '''GECK Extender'''. Do not use both together.)</span>
 
*[http://geck.technodeep.net/index.php/Main_Page Community GECK Wiki] GECKWiki.  
 
  
:
+
These two scripts provide a functional example of a "Note EventHandler" script and UDFscript.<br>
:*[http://geck.foesmm.org/index.php/Tutorials GECK: Tutorials] Wiki.  
+
Example "EventHandlerRegistration" script:
:*[http://geck.technodeep.net/index.php/Category:Getting_Started#My_First_Vault_Tutorial_Series GECK: 'My first vault' tutorial series] Bethesda's intro to mod creation.
+
<pre>
:*[http://geck.technodeep.net/index.php/Category:FAQ GECK: FAQ] Simple questions with answers.
+
scn NoteEventHandlerQuestScript
:*[http://geck.technodeep.net/index.php/Category:Advanced_Modding_Techniques GECK: Advanced Modding Techniques] Questions with tricky answers. 
 
  
*[http://geck.bethsoft.com/index.php?title=Main_Page Official Bethesda GECK Wiki] Wiki. (No longer being updated by community.)
+
int DoOnce
*[http://cs.elderscrolls.com/index.php?title=Category:Solutions TES4 Construction Set Wiki] Older, more fundamental questions and answers.
 
  
==== Refs: [[#Image_Tools|Image Tools]] ====
+
Begin GameMode
 
+
    SetOnMenuClickEventHandler OnMenuClickUDF 1 MapMenu/GLOW_BRANCH/MM_MainRect/MM_NotesList"
*[http://wiki.nexusmods.com/index.php/Category:Tools Category:Tools on Nexus Mods wiki]
+
    Set DoOnce to 1
*[http://www.autodesk.com/products/3ds-max/overview 3DS Max] (1 month free trial, $185/month or $1470/year subscriptions, 3 yr student/educator license.)
+
    If DoOnce == 1
 +
        Set DoOnce to 2
 +
    EndIf
 +
End
  
:
+
Begin GameMode                               
:*[http://www.nexusmods.com/skyrim/mods/5622/? 3DS Max Nif Importer-Exporter] by '''figment'''  
+
    ; Note that I tend to 'over-check' in my scripts, to be certain it will work as intended.
:*[http://github.com/figment/max_nif_plugin/releases "Figment" 3DS Max Nif exporter plugin fork on GitHub]
+
    ; DoOnce probably didn't need to go past 1 before stopping the script.
:*[http://community.bethesda.net/thread/10364?tstart=0 Official Nif export tool only supports 3DS Max] 2013? thread. 
+
    If DoOnce == 2
 +
        StopQuest NoteEventHandlerQuest
 +
    EndIf
 +
End</pre>
  
*[http://www.nexusmods.com/oblivion/mods/12248/? Blender v2.49b] (freeware.) Recommended for FO3/FNV.
+
and the "User-Defined Event" script:
 +
<pre>
 +
scn OnMenuClickUDF
  
:
+
int iMenuID
:*[http://www.nexusmods.com/oblivion/mods/42755 Blender v2.49b Portable] by '''Room207'''. (freeware.) Recommended for FO3/FNV.
+
int iElementID
:*[[Installation_of_Blender|Installation of Blender]] (Wiki article.) 
+
string_var sElementName
 +
string_var sNoteName
 +
string_var sNoteNameUI
  
*[http://www.mwgfx.co.uk/programs/dxtbmp.htm DXTBmp Texture Tool] (freeware.)  
+
Begin Function {iMenuID, iElementID, sElementName}
*[http://www.gimp.org/ GIMP: GNU Image Manipulation Program] (freeware.)  
+
    Let sNoteName := LnGetName NoteEditorID
*[http://www.nexusmods.com/newvegas/mods/61538/? Hairs - Eyes - Races Auto - Patcher by '''Fallout 2AM'''] Mod.
+
    Let sNoteNameUI := GetActiveUIComponentFullName
*[http://www.darkcreations.org/testg/wiki/Category:VWD-OB LOD/VWD Overview] TESTG site wiki.
+
    If eval ((Sv_Find "MM_ListItem", sNoteNameUI) > -1) ; check if UI component is a note
 +
        let sNoteNameUI += "/ListItemText/string"
 +
        let sNoteNameUI := GetUiString $sNoteNameUI ; get the name of the highlighted note
 +
            If eval (sNoteName == sNoteNameUI)
 +
                ; do something
 +
            EndIf
 +
    Endif
  
:
+
    ; Don't forget to put all the string_vars here
:*[http://www.nexusmods.com/newvegas/mods/58562 FNVLODGen] "View While Distant (VWD)"/"Level Of Detail (LOD)" landscape ''object'' generation tool.
+
    sv_Destruct sElementName, sNoteNameUI, sElementName
:*[http://www.nexusmods.com/newvegas/mods/61035/? Ultimate resolution landscape LODs and generator TES4LL] landscape ''mesh'' and ''texture'' LOD generation tool. 
+
End</pre>
 +
</div>
  
*[http://www.autodesk.com/products/maya/overview Maya] (1 month free trial, $185/month or $1470/year subscriptions, 3 yr student/educator license.)
+
<span id="Tip-Recipes"></span>
*[http://www.nexusmods.com/newvegas/mods/64746 NIF tangents and binormals updater] (freeware) by '''zilav'''.  
+
==== TIP Passing a '''Recipe''' to the player ====
*[http://niftools.sourceforge.net/wiki/NifSkope NifSkope] (freeware.) Note this is the latest release and may not be the best choice for FO3/FNV.  
+
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">The "Category" field of the '''Recipe Editor''' window determines where the "recipe" is utilized (i.e. "the crafting station"), so it does NOT appear in the [http://fallout.gamepedia.com/Pip-Boy_3000 Pipboy] "Data" tab under "Notes". It can be added to the game in the same manner as other "notes".
  
:
+
It is worth observing that a "[http://geckwiki.com/index.php?title=Recipe_Entry Recipe]" is a form type of structured list which is used to allow the player to craft items at workbenches, campfires, and reloading benches. (The form list appears in the '''GECK''' "Object Window" under "Miscellaneous | Recipe".)  If you include a "note" (as simple as "This is a recipe to <do something>") in the "Ingredients" tab of the recipe, it will be a single use "consumed" item unless you also include that note in the "Output" tab as well.  (Anything not listed in the "Output" tab is "consumed" in creating the recipe item. See "NVDLC03RecipeSkillBookBarter<Recipe|Note|Script>" in the "Old World Blues" DLC for an example of their use to create a SkillBook.)  The "Note" form is used as a "requirement" for that recipe. As such it can use the same "holotape" or other "misc. item" images.
:*[http://github.com/niftools/nifskope/releases/tag/nifskope-1.1.3 NifSkope v1.3.3 (revision36efdd)] (freeware.) Recommended for FO3/FNV.
 
:*[http://niftools.sourceforge.net/wiki/NifTools NifTools Wiki] (freeware.)   
 
::
 
::*[http://niftools.sourceforge.net/wiki/NIF_Format/NifTools_XML_Format The NifTools XML Format] (documentation.) Version 0.7.0.0 recommended for FO3/FNV.  
 
:*[http://www.nexusmods.com/skyrim/mods/34626/? NifSkope: Mesh Tool N3 - Path Changer] by '''Anton'''
 
:*[http://www.nexusmods.com/skyrim/mods/19266/? NifSkope: NifTextures - Path Changer] by '''Macoron'''
 
:*[http://www.nexusmods.com/newvegas/mods/63770/? Nifskope: Testing Skeleton] by '''clanky4''' 
 
  
*[http://www.getpaint.net/index.html Paint.NET] (freeware.)  
+
[[File:EPDGaffney_RecipeNote.png|thumbnail|100px|RecipeNote_Fig-01]]
 +
When the player picks up a "recipe" in the game, they are really picking up a "note" that could say anything. Then the only thing that's done with that "note" is a completely separate Recipe Form can be set to appear to the player only if they meet the condition of having that "note", like so: (See [[:File:EPDGaffney_RecipeNote.png|RecipeNote_Fig-01]]. {{Thumbnail_enlargement_message}}) The "note" itself is nothing more than a requirement to enable the recipe, either initialy or repeatedly.
  
:
+
"Recipe notes" can be passed to the Player in the same manner as described in [[#Tip-Notes|TIP: Passing a 'Note' to the player.]]
:*[http://forums.getpaint.net/index.php?/topic/8318-boltbaits-plugin-pack-for-v3511-updated-january-31-2015/ Paint: BoltBaits Plugin Pack] for Paint.NET.
 
:*[http://www.nexusmods.com/skyrim/mods/6843/? Paint: The Normal Map Tools] by '''Goujosamma''' for Paint.net 
 
  
*[http://www.nexusmods.com/newvegas/mods/57245/? Ptolemy Maps for New Vegas] mod and tool suite by '''Rocketeer''' and '''Alan Broad'''
+
All "recipes" are always present at their designated ''crafting station'', but if they have ''Visibility Requirements'', they are invisible to a player that does not meet the requirements.  It's important to note that this doesn't need to be a "Note".  This could be a quest variable, a gender, whether some actor sees another actor (GetLOS), and just about anything else. (See [[:File:EPDGaffney_RecipeNote.png|RecipeNote_Fig-01]]. {{Thumbnail_enlargement_message}})
*[http://www.buckarooshangar.com/flightgear/tut_dds.html Working with DDS/DXT Files] (HTML article) by '''Gary "Buckaroo" Neely'''.
 
  
==== Refs: [[#Packaging_Tools|Packaging Tools]] ====
+
''Visibility Requirements'' are separate from ''Ingredients'' regarding "notes" in the way mentioned earlier, and ''Visibility Requirements'' are separate from the ''Required Skill'' above it in the image, in that whilst both can check the player's skill, ''Visibility Requirements'' will hide the "recipe" entirely from a player that doesn't meet its skill check, but a player that has a skill value lower than that specified in the ''Required Skill'' will see a greyed out, unusable "recipe" that they can read through but not "craft", similar to when the player doesn't have the required ''Ingredients''.
 +
</div>
  
*[http://www.nexusmods.com/skyrim/mods/4328/? BAIN Archive Tools - BAT] by '''Surazal'''.
+
<span id="Tip-TargetEffectPerks"></span>
*[http://www.nexusmods.com/newvegas/mods/64745 BSArch] (freeware) by '''zilav'''.
+
==== TIP Perk effect on target ====
*[http://www.nexusmods.com/oblivion/mods/41042/? BSAOpt] (freeware).
+
: Thanks to '''Mktavish''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
*[http://sourceforge.net/projects/bsaextractor/ BSAExtractor (BSAE)] (freeware).
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
*[http://www.nexusmods.com/newvegas/mods/65854 FNV BSA Decompressor] Mod by '''zilav'''.
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
*[http://www.nexusmods.com/newvegas/mods/54991/? FOMM - Forked] (freeware).  
+
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">It seems a shame that the [http://geckwiki.com/index.php?title=Entry_Point Entry Point] feature of Perk objects is not available via [http://geckwiki.com/index.php?title=Actor_Effect Actor Effect].  But you can perform a "reverse entry point" check to get the same effect ... if it is only the target the Player is shooting at that is of interest.
  
:
+
To accomplish an reduction to damage (-80%) only upon hitting a target's head while wearing the "MyHelmet" piece of armor, you would select menu sequence (just as an example):
:*[http://zumbs.wordpress.com/2009/11/08/fomm-and-fomods-for-dummies-1/ FOMM and FOMODS for Dummies] article.  
+
"Perk | Entry Point | Calculate Weapon Damage | multiply value | 0.2".
:*[http://www.nexusmods.com/skyrim/mods/75140/? FOMOD Validator] by Ganda.  
+
Then in the "On Condition" field, select the "Target" tab and use:
 +
<pre>
 +
"GetEquipped  MyHelmet == 1  AND"
 +
"GetHitLocation == 1 "  ; Head location</pre>
 +
</div>
 +
 
 +
<span id="Tip-MenuMode"></span>
 +
==== TIP Preload Scripts ====
 +
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">'''MenuMode''' lets you specify which menu (or menus, in some cases) should run your script.  '''MenuMode 4''' is the main menu of '''New Vegas''' and was added in '''JIP LN NVSE''' at some point.  It's the most reliable place to run pre-load scripts (before a "save game" file is loaded) in the experience of many, provided they're running on base forms, setting event handlers, and so on and so forth.  Obviously, references and other things that are baked into the save data won't be accessible until you load a game.
 +
 
 +
[Edit: There is now the "[http://www.nexusmods.com/newvegas/mods/69071?tab=description JIP LN NVSE script runner]" function available which can initialize mods without running quests, ''GetGameRestarted'', or ''MenuMode 4'' that you may wish to consider.]
 +
 
 +
Also, tangentially related, pretty much anything that gets done to a base form will be undone once the session is exited.  (See the section on [[#GECK Form-ID, Base-ID, Ref-ID, and Editor-ID|GECK Form-ID, Base-ID, Ref-ID, and Editor-ID]] if you need a refresher on the differences.)  That includes form lists, models, collision, AI, items added to a base form's inventory, and anything else you can think of that gets done to a base form.  However, references spawned with these scripts running may or may not retain the effects (they usually don't, but inventory stuff will stick, in the case of most functions, because that gets baked into the save data, whereas something like whether or not a base form's combat is disabled is not saved in a save file).
 +
</div>
 +
 
 +
<span id="Tip=QuestAdvancement"></span>
 +
 
 +
==== TIP Quest Advancement ====
 +
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum and '''RangerBoo''' of the Nexus Fallout "Mod Troubleshooting" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Quest scripts are the driving force of each and every mod.  They need one or more "GameMode" blocks so the engine will examine those blocks of code every frame, but in turn each should be "gated" with ''conditional statements'' so their following code statements are only processed when all the "gate" conditions are "true"; to keep performance high.  These are often controlled by the value of variables defined in a Quest script (e.g. "DoOnce", "Status", "Bark", etc; the names are immaterial and up to you) which may exist solely for the purpose of defining those variables if numerous other scripts relying upon those variables may be disabled/enabled to improve performance.  Otherwise define them in the Quest script in question BEFORE the first "Begin GameMode" block.  The variables in Quest scripts persist and are accessible between other scripts.
 +
 
 +
Sections of code that are described as "Blocks" have a statement that signals the beginning (e.g. a "Begin" or an "IF" statement) and one that terminates the block (e.g. an "End" or "EndIf" statement respectively).  Be careful that you use the correct block terminator in the correct place or your scripts will either prematurely halt processing or runaway from your control (infinite loops).
 +
 
 +
Other Blocks within a "GameMode" block are typically dealing with "Events" triggered by the Player: OnActivate, OnAdd, OnDeath, OnEquip, etc; which are also terminated with an "End" statement.  Use "nesting" indentation to keep track of which "terminators" belong to which "beginnings".  This not only makes it easier to read but also to track that each "Beginning" has an "Ending".  It is possible for such "Events" to be triggered by NPCs.  (See the GECK tutorial [http://geckwiki.com/index.php?title=How_to_script_conversation_between_two_or_more_NPCs How to script conversation between two or more NPCs].)
  
==== Refs: [[#Scripting_Tools|Scripting Tools]] ====
+
The point is such "Events" need to be detected and reactions initiated within a "GameMode" Block.  If your Quest or Dialog is not advancing, it is likely because you do not have the initiating conditions being detected within such a block, and hence you are not getting the response (such as another script or "AI package") started.
  
*[http://www.cipscis.com/fallout/utilities/validator.aspx CIPSCIS Script Validator] (freeware.)  
+
Another possibility preventing advancement is that the Quest script is not currently running.  (See [[#TIP-QuestSelfStopping|TIP: Quest - Stopping within it's own script.]])
*[http://nvse.silverlock.org/ New Vegas Script Extender (NVSE)] Site.
+
</div>
  
:
+
<span id="Tip-QuestDelay"></span>
:*[http://www.gribbleshnibit.com/projects/NVSEDocs/# NVSE Documentation] by '''gribbleshnibit'''.  
+
==== TIP Quest Delay timer ====
:*[http://www.nexusmods.com/newvegas/mods/58277/? JIP LN NVSE plugin] by '''jazzisparis''' and '''LuthienAnarion'''.  
+
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
:*[http://www.loverslab.com/files/file/553-nvse-extender-aka-nx/ NVSE Extender Plugin (NX)] by '''prideslayer'''.  
+
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
:*[http://geck.bethsoft.com/index.php?title=Category:Functions_(JIP) GECK: JIP Functions] (Wiki.)  
+
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Leave [http://geckwiki.com/index.php?title=Special_Variables Special variables]' '''''fQuestDelayTime''''' alone.  That sets the default quest delay for every quest in the game.  Try using function [http://geckwiki.com/index.php?title=SetQuestDelay SetQuestDelay] instead.</div>
 +
 
 +
<span id="Tip-QuestSelfStopping"></span>
 +
==== TIP Quest Stopping within its own script ====
 +
: Thanks to '''EPDGaffney''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Sometimes you might have reason to want to stop a quest script when certain conditions are met within that script.  Turns out this doesn't work if you try to put everything into a single "GameMode Block".  You need to split it out into two such blocks.
 +
 
 +
The following example is the part of an "EventHandler" which illustrates this technique:
 +
<pre>
 +
scn NoteEventHandlerQuestScript
 +
 
 +
int DoOnce
 +
Begin GameMode
 +
    SetOnMenuClickEventHandler OnMenuClickUDF 1 "MapMenu/GLOW_BRANCH/MM_MainRect/MM_NotesList"
 +
    Set DoOnce to 1
 +
    If DoOnce == 1
 +
        Set DoOnce to 2
 +
    EndIf
 +
End
 +
 
 +
Begin GameMode     
 +
    ; Note that I tend to 'over-check' in my scripts, to be certain it will work as intended.
 +
    ; DoOnce probably didn't need to go past 1 before stopping the script.
 +
    If DoOnce == 2 
 +
        StopQuest NoteEventHandlerQuest
 +
    EndIf
 +
End</pre></div>
 +
 
 +
<span id="Tip-References"></span>
 +
==== TIP Referencing Objects ====
 +
: Thanks to '''uhmattbravo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">When you need to perform an action on some object placed inside of the "game world", you need to be able to [http://geckwiki.com/index.php/Reference reference] it.  The "Reference ID" (Ref-ID) is unique to each instance of an object placed in the game.  If you place a "static" object (a "rock" for instance) into the world, there is seldom any need to refer to it specifically, so you normally do not enable it's "reference data flag: ''persistent reference''" setting.  When you do intend to refer to that object later (in a script for instance), you simply enable that setting and it automatically gets pre-assigned a "Ref-ID" by the game (in addition to any "Editor-ID" you give it) which you can use anywhere.
 +
 
 +
If you need to bring a "persistent" object (such as a container) to your current location, the preferred method is to initially have your mod place the "persistent object" somewhere hidden in the game world (underneath "ground level" in a cell is common).  (If you intend to be able to return the object to that location later, place an [http://geckwiki.com/index.php/XMarker X-Marker] there as well.  See the sub-entry "X Target Data" on the GECKWiki "Reference" page.)  You can then either use the "object reference" (aka "Editor-ID") or create a [http://geckwiki.com/index.php/Ref_Variable Ref Variable] (see also the [http://geckwiki.com/index.php/Associating_data_with_a_reference Associating data with a reference] page), combined with either the [http://geckwiki.com/index.php/MoveTo MoveTo] or [http://geckwiki.com/index.php/PlaceAtMe PlaceAtMe] functions to bring the object to the desired current location, perform whatever actions with/upon it, and then use the "MoveTo" function to return the object to the hidden location "X-Marker".
 +
 
 +
On the other hand, there are many objects (such as "containers"; which you should recall all '''Actors''' are considered to be) that get dynamically ''spawned'' by the game during play (for instance from "leveled lists").  Such "spawned objects" are always as "non persistent" refs from a "Base Form" template without a pre-determined "Editor-ID" or "Ref-ID".  (They are all given an automatically generated instance "Ref-ID" that begins with the "mod index" of "FF".  All undeleted "FF" mod index entries get "baked into" your "save game" files.  This is how you get "save game bloat".)
 +
 
 +
Note that objects flagged as "quest items" apparently are treated as "persistent" by default, regardless of the "reference data flag" state.  That appears to be the only way to ''spawn'' "persistent refs" in-game as well.
 +
 
 +
If you specifically need a "non persistent" ref, stick something like this on the script related to that "object" (e.g. container object script):
 +
<pre>
 +
Short CurrentAction
 +
Ref ContainerRef
 +
 
 +
Begin GameMode
 +
; Remove all player equipment and place into this "non persistent" container.
 +
  If CurrentAction == 0
 +
    Set ContainerRef to getself
 +
    Set CurrentAction to 1
 +
  Elseif CurrentAction == 1
 +
    Player.removeallitems ContainerRef
 +
    Set CurrentAction to 2
 +
  Endif
 +
End
 +
</pre>
 +
 
 +
Otherwise, if it doesn't really need to be a "non persistent" ref: name it, and use it's Ref-ID.
 +
</div>
 +
 
 +
<span id="Tip-Relocating"></span>
 +
==== TIP Relocating objects to Player by script ====
 +
: Thanks to '''madmongo''' and '''Nexusmodsaccountno2''' of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">When dealing with the game "coordinate" system of X/Y/Z axes, it is important to consider if you desire to deal in "absolute" coordinates with respect to the worldspace, or "relative" coordinates with respect to the "calling reference" (e.g. "Player").
 +
 
 +
<blockquote>
 +
Exterior cells belong to a world space, and are part of that world space's landscape, which is basically a grid that extends infinitely in all directions. Each exterior cell is 4096 [[Fallout 3/NV Game Units|game units]] by 4096 units or 192 feet by 192 feet or 58.5 meters by 58.5 meters. Each vertex in an exterior cell is 128 units apart - the same height roughly, as a human biped, or about 6 feet.
 +
 
 +
All exterior cells are automatically given a grid number that represents their X,Y coordinate starting from the center of the world space at coordinate 0,0. Cells to the right of 0,0 have a positive X coordinate. Cells above 0,0 have a positive Y coordinate. ...  [http://geckwiki.com/index.php/GetInGrid GetInGrid] is similar to [http://geckwiki.com/index.php/GetInSameCell GetInSameCell], but checks a grid of cells, making it useful for exteriors. Returns true (1) if the specified reference is within the grid of cells centered on the player, the size of which is specified by ''depth''. ''Depth'' defaults to 0, a value of -1 will use the ''uGrids to load'' setting. Added by NVSE 4.6.
 +
--GECKWiki
 +
</blockquote>
 +
 
 +
The coordinate system uses the "X-axis" to indicate "left-right of zero" and the "Y-axis" to indicate "front-behind of zero" on the same horizontal plane; while the "Z-axis" indicates "up-down/elevation" on the vertical plane relative to the center (0,0,0) grid or reference point.
 +
 
 +
You could use [http://geckwiki.com/index.php/GetAngle GetAngle Z] (which returns the heading angle of an object relative to the world) to get the angle of the player's rotation, which will be the direction the player is facing relative to the cell North orientation. OR use the [http://geckwiki.com/index.php/GetHeadingAngle GetHeadingAngle] which returns the angle between the calling reference and the specified object in a range from -180 to 180 degrees.  (The direction the calling reference is facing is considered 0 degrees.  Angles measured clockwise from 0 are positive, while angles measured counter-clockwise from 0 are negative.)  The choice depends upon whether you want an "absolute" or "relative" reference.
 +
 
 +
Then decide what distance you want to place the object (item or actor) from the Player.
 +
 
 +
To get the position '''''offset''''' based on angle and distance, use the following formulas:
 +
<pre>
 +
x = distance * sin (angle)
 +
y = distance * cos (angle)
 +
</pre>
 +
 
 +
You can either use those offsets in the "MoveTo" function, or add them to the Player's offsets and use [http://geckwiki.com/index.php/SetPos SetPos] (or JIP NVSE [http://geckwiki.com/index.php/SetPosEx SetPosEx]) instead.  Since you know the player's angle, adding 180 to that and using [http://geckwiki.com/index.php/SetAngle SetAngle Z] will rotate a relocated actor to face the opposite direction (i.e. directly facing the player).  <span style=color: green;background-color:#fff5f5;">Take heed of the "Notes" for this function.  This is a case of "the role of 'Z' axis varies by function", i.e. as "rotation" instead of "elevation".</span>
 +
 
 +
Example use in a script:
 +
<pre>
 +
Scriptname MoveInFrontOfPlayerScript
 +
 
 +
Begin onequip ;your choice
 +
 
 +
  int iDistance
 +
  float fOffsetX
 +
  float fOffsetY
 +
  float fPlayerFacingZ
 +
 
 +
  set iDistance to 70 ; or some desired <integer_value> in "game units"
 +
  set fPlayerFacingZ to PlayerRef.getangle z
 +
  set fOffsetX to iDistance * sin fPlayerFacingZ
 +
  set fOffsetY to iDistance * cos fPlayerFacingZ
 +
  SummonedRef.MoveTo PlayerRef fOffsetX fOffsetY
 +
End
 +
</pre>
 +
 
 +
Note that you could use "SummonedRef.MoveTo PlayerRef fOffsetX fOffsetY fPlayerFacingZ" if you want the "summoned" object to appear above or below in elevation at an angle to the Player.  However, "z" in the "MoveTo" commands refers to the vertical plane (i.e. "elevation") and not the "rotation angle" from the "GetAngle Z" command stored in "fPlayerFacingZ".  That variable will probably work as the value is not likely to offset the object too much, but the name chosen in this instance (while accurate) might lead to confusion in implementation.  A different variable (e.g. "fOffsetElevationZ" set to a specific value) might be better, depending upon circumstance.
 +
 
 +
Use with caution. There is nothing stopping those functions from placing the actor inside a tree or a rock or underneath the terrain if the terrain happens to rise suddenly, In an interior cell, the actor could be placed outside of all existing rooms, causing them to fall into the abyss (they'll usually end up somewhere on the map afterwards). Depending on what you are doing, you might be better off using a ''trigger'' and an ''Xmarker''.
 +
 
 +
"MoveTo" only works correctly if the "SummonedRef" object is in the same cell as the Player.  (See [http://geckwiki.com/index.php/GetInCell GetInSameCell].)  If not, you need to use '''Player.'''[http://geckwiki.com/index.php/GetParentCell GetParentCell] and [http://geckwiki.com/index.php/MoveToCell MoveToCell] functions instead, but in a similar manner.
 +
 
 +
Whether an [http://geckwiki.com/index.php/Interior_Cells Interior] or [http://geckwiki.com/index.php/Exterior_Cells Exterior] cell is the destination of the "MoveTo" function, the object has to be in the same cell as the calling Reference (e.g. Player), or the "MoveToCell" function has to be used.  "Borders/boundaries" are like exceedingly thin walls or "navmesh" lines: on one side or the other, but never straddling. 
 +
 +
<blockquote>
 +
When in an interior, the exterior world is no longer visible. Each interior cell is essentially its own universe.
 +
--GECKWiki
 +
</blockquote>
 +
There is no fixed size to interior cells, so it is more difficult to determine if a location is near a cell boundary.  A subsequent call to "GetInSameCell" to determine if the moved object was successfully re-located may be needed.
 +
 
 +
You may need to use "GetPos" for each axis to check for large values which are likely to indicate they are approaching a boundary.
 +
 
 +
A "relocation" of an object by "MoveTo" or "MoveToCell" can only be determined to succeed or fail while the script is running.  For this reason, the incorrect use of one or the other will not prevent the script from compiling/saving.  During execution (while running in the game) only that statement will fail, but subsequent statements may then fail as well as a result the statement in question failing to prove a valid (e.g. failing to set a variable or condition).  It could happen in the (probably rare) instance of being near a "cell boundary" when using "MoveTo".  If you add the "Cell" checks mentioned previously, it will probably be sufficient to prevent that.  You may want to split out the "Cell" checks into a "multiframe" block (see '[[#TIP_Block_Types_Multiple_vs_Single_Frame_processing|TIP Block Types Multiple vs Single Frame processing]]', and only call your "movement" script once you have identified the circumstances: one script for "MoveTo" and a separate one for "MoveToCell".
 +
 
 +
By default: the engine behavior where a script that has failed (due to any reason) at some point during execution will be effectively disabled by the game and will no longer be processed again until the game is restarted.  However, there is an INI configuration setting ("bNoFailedScriptLocks") for the "JIP LN NVSE Plugin" which allows such failing scripts to continue to run instead.  Where this is a possibility, requiring the use of "JIP LN NVSE" for your mod is not that big of a deal.  The "game fixes" provide by that Plugin are not available any other way, which is reason enough to make people use it.  And both NVSE and various plugins for it add functionality not available in the vanilla game, which make many mods possible.  Most mod users will already have one or both installed.  If they don't, it's their loss; not yours.
 +
</div>
 +
 
 +
<span id="Tip-OnActivate"></span>
 +
 
 +
==== TIP Restricting OnActivate blocks ====
 +
: Thanks to '''uhmattbravo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Some doubt has been raised as to the ability of the "OnActivate Player" block to keep from running when activated by an NPC instead.  It is suggested that use of 'if IsActionRef Player == 1' in a normal "OnActivate" block is much more effective alternative.
 +
</div>
 +
 
 +
<span id="Tip-ScriptResult"></span>
 +
==== TIP Script Result vs Result Script ====
 +
: Thanks to '''Mktavish''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">The terms "Script Result" & "Result Script" are not interchangeable.<br>
 +
The first word in each term is an adjective to the following noun.<br>
 +
"Script results" are an intangible noun of what we are trying to achieve from lines of script coding.<br>
 +
"Result scripts" are a specific batch of coding depending upon the result of some event item, which holds the FormID.<br>
 +
Any "Result Script" field functions pretty much like any other one time event script, such as "Begin OnActivate".
 +
You just can't declare variables or use "Begin Blocks".  They belong to whatever item/event they are found with as far as a RefID/FormID goes.<br>
 +
When you want to put lines of code into (for example) a "Dialog Topic" conversation or "Quest Script" "Script Result" field, you need to click the "Compile Result" button just below/adjacent to that field in order to save the code.</div>
 +
 
 +
<span id="Tip-SpecialChars"></span>
 +
==== TIP Special Characters in String Variables ====
 +
: Thanks to '''Radioactivelad''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Some string characters have special meanings when parsed and can cause unexpected compiler problems.  For example, this code won't compile:
 +
<pre>
 +
SCN MESLoyalCustomerRewardScript
 +
 +
Begin Scripteffectstart
 +
 +
Player.addPerk MESPerkDiscount
 +
showmessage MESPerkRewardMessage
 +
 +
End
 +
</pre>
 +
There is nothing obviously wrong with the code.  The problem actually lies in the "content" text of the [https://geckwiki.com/index.php/Tutorial:_String_Variables string variable] "MESPerkRewardMessage", which happens to contain the character "%" (percent sign).  Depending upon which function you use to display that text, some special characters are used to format output and you have to take steps to get them to "display" without being "interpreted" by the compiler.  Such frustrations are just one of the reasons "string and character functions" were added to NVSE, to provide means to work around those limitations.  A quick glance at the linked GECKWiki page will show that the subject is more complicated than one might suspect; but you can express your special characters (such as "%") so they only get rendered when displayed (e.g. using the 'AsciiToChar' function).  What is important is to realize such special "formatting" characters exist and account for them, even when buried in a string variable.
 +
</div>
 +
 
 +
<span id="Tip-TestingFunctions"></span>
 +
==== TIP Testing ''new to you'' functions ====
 +
: Thanks to '''Mktavish''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Often in attempting to solve a scripting problem you will find or be directed to a '''GECK''' or '''NVSE''' function which MIGHT be helpful, but no one is certain if it is really applicable.  All you can do is test it out.
 +
 
 +
The temptation might be to just plug it into your current project code, but this can easily lead you astray.  Better by far to create a "stripped down, minimal to function test script" and plugin for the purpose which provides only the essential elements to test the conditions under which you want the function to operate.  While it might initially seem to be a waste of time, rethink that.
 +
 
 +
# Creating a test script forces you to think about what you really need in order to have what you want to happen.  This alone can clarify your problem.
 +
# By producing only the essential code you have eliminated other potential factors in your project that may be clouding the picture of what is actually happening.  This may involve pulling elements initially created/stored in other scripts, but having them in one place makes it easier to spot omissions or incompatibilities.  This saves time in the long run.
 +
# Use debugging statements to your heart's content without worries about it's impact on the rest of the game or your project.  You don't even need to make them conditional upon a "debug mode" variable.
 +
# Clearly delimit known functional code from your test code with comments.  This helps you to stay focused on the problem areas.
 +
# Indent code, lining up blocks and conditionals.  This helps identify syntax and structure errors as well as making the code more readable.
 +
# By focusing on only the one function, you can try various approaches that may have nothing to do with your project, but help you to clarify how the function does and can work.  This is especially helpful when the syntax and application is vaguely described.  Experimentation then hurts nothing else.
 +
# Test "in-game", as this is the only way to be absolutely certain what happens at "run-time".  (See the [[#TIP: Debugging data to file|TIP: Debugging data to file]] on how to produce a "console log file" of your test results.)
 +
# When you do test "in-game", be sure to toggle "ArchiveInvalidation" off-and-on again after including your test plugin in the "load order".  The conditions under which this "toggling" is required for proper functioning are vague, and it's simple enough to do that it should just be a normal part of your test regimen.
 +
# Sometimes you need to use a "save game" from prior to the changes.  It's recommended to avoid making any saves while testing, unless the function you're testing needs a "save spot".  (For example: "GetGameRestarted"  needs a save spot, so create one just for that purpose.)  In that case, having a "TEST" game setup (profile) just for the purpose makes a lot of sense if you have the disk space.  At the very least, create a new, clearly identifiable character save game for the purpose.  Never use your "in-play" game for testing unless you are prepared to revert to a known point prior to starting any tests.
 +
# Once you have complete your testing, you now know exactly what is required, and can toss the test file aside or perhaps find a re-use for it later.  This is a common practice and you will find that you can often build upon previous testing efforts.  If nothing else, a well designed shell of a test script/ESP can easily be re-purposed.
 +
</div>
 +
 
 +
<span id="Tip-Timers"></span>
 +
 
 +
==== TIP Timers ====
 +
: Thanks to '''xqdcss''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">Timers are generally based upon the [http://geckwiki.com/index.php?title=GetSecondsPassed GetSecondsPassed] function, which returns the number of real life (not game) seconds that have passed since this function was last called by the calling script (i.e. it always "counts up").  Things to bear in mind:
 +
* Function will only work in ''Quest scripts''; and inside the ''GameMode'' and ''MenuMode Blocks'' of an ''Object/Effect script''.
 +
* Function always returns 0 inside "User Defined Functions" (UDFs).
 +
* [http://geckwiki.com/index.php?title=SetGlobalTimeMultiplier SetGlobalTimeMultiplier] will affect the return value of this function in the same way it affects the speed of the game.
 +
* Each script has its own independent tracking of when ''GetSecondsPassed'' was last called.
 +
* Calling this function multiple times in the same script '''in the same frame''' will return the same values for each call.
 +
* This function is unreliable in a ''ScriptEffect'' during ''sleep/wait/fast travel''. Use [http://geckwiki.com/index.php?title=ScriptEffectElapsedSeconds ScriptEffectElapsedSeconds] in a [http://geckwiki.com/index.php?title=ScriptEffectUpdate ScriptEffectUpdate] block instead.
 +
</div>
 +
 
 +
<span id="Tip-ScriptSize"></span>
 +
==== TIP Script Size limit ====
 +
: Thanks to '''jazzisparis''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">There is a limitation on the size of scripts in the GECK: based upon the number of characters: including spaces, comments, and "non-printing" control characters like "line feeds" (aka "new lines").  (Note Windows files use a pair of control characters (<CR>+<LF>) to signal a "new line" while Unix style systems use a single <LF> character, and Apple Macintosh uses a single <CR>.  Some editors (like '''Notepad++''') allow you to configure this, and to display character counts on a status line.)  Various numbers have been cited (usually "around 32,000"), but the most specific seem to put the maximum between 31875 and 32767.
 +
 
 +
According to the author of the '''JIP NVSE''' plugin: "The size of the '''''compiled script''''' is also limited, and is more problematic since it's reached long before the character limit.  This is especially true with NVSE-heavy scripts."
 +
 
 +
In addition, there is a common misconception that "the result script for a '''quest stage''' only allows around 1K". This can be worked around by clicking '''Edit''' button next to the '''Result Script''' box; instead of editing the script directly in the box.  This opens the '''result script''' in an "editor" instead of a form display control. (The same applies to any '''Result Script'''; not just for '''quest stages'''.)
 +
</div>
 +
 
 +
=== Texturing ===
 +
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 +
* [http://wiki.nexusmods.com/index.php/Category:Texturing Texturing Category on Nexus] Wiki.  A large collection of articles on the subject.
 +
* [http://web.archive.org/web/20170713081056/http://www.darkcreations.org/testg/wiki/Main_Page The Elder Scrolls Texture Guide (TESTG)] Wiki.  A glossary of terminology and summary of various basic aspects related to texture replacements, along with a collection of "The Elder Scrolls" game mods of that nature.  Designed for players rather than mod creators, but useful for beginners.
 +
* [http://forums.getpaint.net/index.php?/forum/28-textures/ Paint.net Tutorials] Forum.
 +
* [http://www.youtube.com/channel/UChSDb-rgM7QrW6QvZjOy-VA Paint.net tutorial] Video series by '''yakobelt'''.
 +
* [http://www.youtube.com/watch?v=c8uFdS_4pRg How to make seamless textures in Paint.net (No plugins)] Video by '''games528'''.
 +
* [http://www.youtube.com/playlist?list=PLMK2xMz5H5ZuPzp5FfEIDjeYavpyRgpcb GIMP: Learn Gimp Tutorials] Video series by '''Jake Day Williams'''.
 +
* [http://www.youtube.com/watch?v=1OJKh6o4Af8 Creating Seamless Textures using Paint.net and the 'Blend Seams' plugin] Video by '''gamesfromscratch'''.
 +
* [http://www.gimp.org/tutorials/Tileable_Textures/ GIMP: Tilable Textures] Article by '''Adrian Likins'''.
 +
* [http://www.youtube.com/watch?v=TKhs7F0hAik GIMP: Tutorial for beginners - Seamless Pattern] Video by '''tutor4u'''.
 +
 
 +
<span id="Tip-CustomPosters"></span>
 +
====TIP Custom Posters====
 +
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">First you need to create or convert your desired poster image into a DDS file.  See [[#Programs_and_Tools|Programs and Tools]] section for the available choices of Texture Editor.
 +
 
 +
The poster mesh NIF that Fallout New Vegas uses for most of its posters isn't well suited for hanging posters from the ceiling or beams since it is one-sided. If you go behind it, there's no surface on the back side of it and you just see right through it as if it wasn't there. It's fine for posters that you hang on the wall though since you can't go behind the wall to look through it.
 +
 
 +
The way the mesh for the posters is set up, it doesn't use the entire texture. It only uses part of it, which is why your poster may look cut off.  All you need to do is shrink your image a bit and the entire image will show up. It's easiest to just copy your new image over an existing one so that you get the size right, but you may need to play around to get a feel for how far the front of the poster extends over the face of the texture image you are using.  Copy your new image so that it only covers the image part of the poster, leaving the rest of the image blank, and save that with your new texture name.  Then open a renamed copy of the poster mesh NIF file in '''NifSkope''' and assign that new texture file to it.
 +
</div>
 +
 
 +
<span id="Tip-CustomTexture"></span>
 +
====TIP Customizing an existing texture====
 +
: Thanks to '''pixelhate''' on the  Nexus Fallout "New Vegas Mod Troubleshooting" forum for the basis of the following summary:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">
 +
# You have to locate the original texture element files in the "Fallout - Textures/Textures2.BSA" file.
 +
# Extract them (using '''BSAOpt'''; listed in the [[#Programs and Tools|Programs and Tools]] section).
 +
# Make the desired modification of the texture in the graphic app of your choice and save as a ".dds" file with a unique name.
 +
# Place your modified textures inside a created folder with your mod name, place that folder in "Data\textures\< type >", where "< type >" matches that of the original texture.
 +
# Place the unmodified texture elements (normal map, glow map) in your mod's Data folder, following the original texture's structure.
 +
# Open GECK, create a new "Texture Set", make the "Diffuse texture" (aka "Color") map pointing to your modified texture and the other texture elements pointing to the original ones.
 +
# Create an unique instance of the object mesh (with an unique name) using '''Blender''' or '''Nifskope'''; and make it use your new texture set.
 +
# Remove the unmodified textures from point 5 (not needed anymore)
 +
# Place the custom object in game, save, test in game.
 +
 
 +
: Never use "Texture Sets" on "Furniture"!  It will make your ESP crash, as well as the GECK.
 +
: Always make back-ups before making any changes.</div>
 +
 
 +
<span id="Tip-NormalMaps"></span>
 +
==== TIP Improving Texture Normal Maps ====
 +
: Thanks to '''pixelhate''', '''EPDGaffney''', and '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">(For an explanation of the specific terms used here, please see the [http://web.archive.org/web/20170713081056/http://www.darkcreations.org/testg/wiki/Glossary Glossary] page of the TESTG wiki site.)
 +
 
 +
Suppose you want the '''normal map''' of a texture to provide as much detail as possible.  The key is understanding that it is working on two layers: the RGB "color" one which gives you the surface relief; and the ''Alpha channel'' one which gives you the ''Specularity''.
 +
 
 +
If the '''specular map''' is "White": things will be very shiny.  If it's "Black": it will be completely dull.  Nuance of "Grey" will be in between.
 +
 
 +
To have the '''normal map''' with an effective ''Alpha channel'' you have to save it in DXT5 format.
 +
 
 +
If you want your texture to look even better, make a '''specular map''' and put that in the ''Alpha channel'' of the '''normal map'''.  (You can use the [http://www.mwgfx.co.uk/programs/dxtbmp.htm DXTBmp Texture Tool] for this purpose by exporting the ''specular map'' in ".bmp" format from your ''paint'' program, opening the ".dds" '''normal map''' in '''DXTBmp''', importing the ''specular map'' into the ''Alpha channel'', and saving.)  Just be aware that depending on the settings on the mesh itself (which I would not change for a "face", unless it's a "custom race" mod), you may need to darken your '''specular map''' extremely for it to avoid "radiating like the sun itself".
 +
 
 +
It's not straightforward to insert an image into the '''normal map''''s ''Alpha channel'' using just '''Photoshop CS2''', but it can be done.  You need to first flatten the image by converting it to ''Greyscale'', duplicate the Grey channel, name it "Alpha 1", remove the original "Alpha 1" channel in your '''normal map''', and then drag the "Alpha 1" channel you've just created into your '''normal map'''.
 +
 
 +
On the subject of tool choice for this purpose, '''madmongo''' said:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">
 +
I have never used '''Photoshop''' so I can't compare with that.
 +
 
 +
I have used both '''GIMP''' and '''Paint.Net'''. I found '''GIMP''' to be less intuitive so there is a bit of a steeper learning curve with it. '''Paint.Net''' seems more intuitive and easier to use to me. I personally tend to use '''Paint.Net''' for most '''FNV''' stuff. Most other modders prefer '''GIMP'''. I think '''GIMP''' is a bit more powerful, though '''Paint.Net''' usually does everything that I need it to do.
 +
 
 +
'''Paint.Net''' includes DDS support right out of the box. With '''GIMP''' you need a plugin. '''GIMP''' and '''Paint.Net''' both require a plugin to make '''normal maps'''.
 +
 
 +
'''Paint.Net''' doesn't treat ''Alpha channel'' as a different layer, so it's more difficult to work with. If you are messing around with ''Alpha channel'' stuff, '''GIMP''' is the better choice, IMHO.</div>
 +
</div>
 +
 
 +
<span id="Tip-TextureTransparency"></span>
 +
==== TIP Saving Texture (DDS) with Transparency ====
 +
: Thanks to '''madmongo''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">When having difficulty getting a texture file to save with "transparency" (e.g. with '''Paint.Net''' for example), try the following.
 +
# Save in the DXT5 file format from your paint program's "save dds file options".  (See the [http://www.buckarooshangar.com/flightgear/tut_dds.html Working with DDS/DXT Files] (HTML article) by Gary "Buckaroo" Neely regarding the differences in the various DXT formats.)
 +
# Open the mesh NIF file in '''NifSkope''' and add the ''NiAlpha'' property to the ''NiTriStrips'' of the mesh that uses the texture.
 +
</div>
 +
 
 +
=== Weapons ===
 +
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 +
* [http://www.nexusmods.com/newvegas/mods/63109/? Complete custom gun modding guide by GaigeStorm] PDF.
 +
* [[Adding_ISA_to_Fallout:_New_Vegas|Adding Iron Sights Animation (ISA) to FNV]] Wiki.
 +
* [http://www.nexusmods.com/newvegas/mods/61315/? Guide: Blender/NifSkope Weapon] Resource collection including tutorials.
 +
* [http://www.nexusmods.com/newvegas/images/104855/?changePreference=3 Guide - Blender and NifSkope weapon] by '''SGTbayk47'''.
 +
* [[Simple_vanilla_ironsights|Simple vanilla ironsights]] Wiki.
 +
* [http://www.nexusmods.com/newvegas/mods/66532 Tammer's Guide to NIF-Bashing] PDF and images tutorial by '''mc_tammer '''.
 +
* [[Texturing_weapons_-_video_tutorial|Texturing weapons - video tutorial]] Video link in the wiki article.
 +
* [http://www.nexusmods.com/newvegas/mods/66968 Weapon Animation Patching Tutorial] PDF with separate "screenshots" file by '''benja'''.
 +
 
 +
<span id="Tip-GECKWpnCTD"></span>
 +
====TIP GECK CTD when editing weapons====
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">"Every time I attempt to use the GECK to edit a weapon it crashes, even when only the main NV master file is selected."
 +
 
 +
This has been traced to the presence of a specific file that is overwritten by "Fallout Character Overhaul" (FCO): '''eyebrowm.nif''' in: ''Data\meshes\characters\hair''.  Remove it when using GECK, and restore it when playing.  If you put it into a batch (.cmd) file such as the following to launch GECK you won't forget.
 +
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"
 +
style="margin:0px 10px 10px 10px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;
 +
/* Remove the next four 'white-space' lines to restore default white-space processing. */
 +
white-space: pre-wrap;      /* css-3 */
 +
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 +
white-space: -pre-wrap;      /* Opera 4-6 */
 +
white-space: -o-pre-wrap;    /* Opera 7+ */
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">
 +
@echo off
 +
cls
 +
<nowiki>::</nowiki>REM As GECK has to be run from an 'Administrator' account, you should launch it from a
 +
<nowiki>::</nowiki>REM  shortcut (.lnk file) that has that "run as" setting in the 'Properties'.  This will
 +
<nowiki>::</nowiki>REM  be run in a separate sub-process window.  Otherwise the 'start' command won't WAIT
 +
<nowiki>::</nowiki>REM  until GECK is done before continuing with this script.
 +
<nowiki>::</nowiki>REM Change the 'set runpgm=' line to point to your GECK shortcut.
 +
set runpgm=C:\Users\Public\Rec\FalloutNV\GeckPU.lnk
 +
<nowiki>::</nowiki>REM Change the 'set gamedir=' line to point to your game install folder.
 +
set gamedir=E:\Games\SteamLibrary\steamapps\common\Fallout New Vegas
 +
<nowiki>::</nowiki>REM Nothing else below this point should need to be changed.
 +
set tgtdir=%gamedir%\Data\meshes\characters\hair<br>
 +
pushd "%gamedir%"
 +
if exist "%tgtdir%\eyebrowm.nif"  ren "%tgtdir%\eyebrowm.nif" eyebrowm.nif.hld && @echo SCRIPT: Removed file [eyebrowm.nif]<br>
 +
@echo SCRIPT: Manually close the separate window GECK is launched in.  When you do, DO NOT
 +
@echo SCRIPT:  select to 'Terminate batch job' (answer "N") or you won't restore files properly.
 +
start "GECK" /D "%gamedir%" /WAIT cmd /k "%runpgm%"
 +
if exist "%tgtdir%\eyebrowm.nif.hld"  ren "%tgtdir%\eyebrowm.nif.hld" eyebrowm.nif && @echo SCRIPT: Restored file [eyebrowm.nif]<br>
 +
<nowiki>:</nowiki>DONE
 +
pause
 +
popd
 +
</div>
 +
The GECK should also be patched to use up to 4GB of memory (i.e. [http://www.nexusmods.com/newvegas/mods/62552/? FNV 4GB Patcher], NT Core's [http://www.ntcore.com/4gb_patch.php 4GB EXE Patcher] or their more general [http://www.ntcore.com/exsuite.php CCF Explorer], or the like).
 +
 
 +
The GECK can also appear to "hang" while trying to load plugins.  This may be due to failing to select other plugins your target plugin requires as "masters", but which are not ESM files.  You can use the '''xEdit/FNVEdit''' "File Header" to identify all the files that are masters to your plugin, and then be sure to select all of them when loading it into the GECK.  Please see the wiki [[#Missing_Masters|Missing Masters]] article for details.
 +
</div>
 +
 
 +
<span id="Tip-WeaponAnimations"></span>
 +
====TIP Weapon Effect Animations====
 +
: Thanks to '''pixelhate''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">You can't Import/Export Texture animation in '''Blender''' (e.g. "Shishkebab's fire").  Set up for such animations are done in '''Nifskope'''.  See the [[#Animations|Animations]] section.
 +
</div>
 +
 
 +
<span id="Tip-VATSChance"></span>
 +
==== TIP Weapon has unexpected zero percent VATS Chance ====
 +
: Thanks to '''yummy2''' of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">So, you modded some weapon (either vanilla or from some mod) and suddenly it has "0%" chance to hit in VATS.
 +
 
 +
The problem is not with your custom weapon mesh or texture; it's with the projectile, which may have inadvertently or intentionally been altered.  For instance, a "non-zero" timer and proximity of the projectile's explosion.  Even if it was a "Trigger on impact" explosion, the non-zero values can still mess up VATS.  Compare such settings with other projectiles working correctly.
 +
</div>
 +
 
 +
=== Worldspace Creation ===
 +
(Worldspace creation is basically the same between FO3 and FNV.  See also the [[#Navmeshing|Navmeshing]] section.)
 +
 
 +
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 +
* [http://www.google.com/?gws_rd=ssl#q=geck+create+a+new+world+space&tbm=vid Google search result for Worldspace Tutorials] Video.
 +
* [http://geck.bethsoft.com/index.php?title=Category:World_Spaces GECK: World Spaces] Wiki.
 +
* [http://www.truancyfactory.com/tutorials/fallout3/fallout_worldspace.html Fallout3 World Space] by '''truancyfactory'''. HTML with images.
 +
* [http://www.creationkit.com/index.php?title=Bethesda_Tutorial_Navmesh Bethesda Tutorial: Navmesh] Wiki.
 +
* [https://www.afkmods.com/index.php?/topic/3337-skyrim-fixing-navmesh-deletion-using-tes5edit/ Fixing Navmesh deletion using TES5Edit by '''Arthmoor'''.] Thread.
 +
* [http://www.youtube.com/watch?v=Q-ZQtgveKaM Fixing Deleted Navmesh with TES5edit by '''soupdragon'''] Video.
 +
* [http://www.youtube.com/watch?v=babuNn5pzsw Filter for (find) Deleted Navmeshes with TES5edit by '''soupddragon'''] Video.
 +
* [http://www.nexusmods.com/skyrim/mods/70285/? Guide for fixing deleted NavMeshes by '''AndrealphusVIII'''] Image guide. (For Skyrim but works for deleted NavMeshes in general).  This method is useful for fixing "merged navmesh islands", which cause a deleted navmeshes.
 +
 
 +
<div name="Simulated code box" class="boilerplate metadata" id="Warning Notice"
 +
style="margin:0px 10px 10px 20px; border:1px dashed #DAA520; color: lightgray; background-color:#424242; padding:3px;"
 +
/* Remove the next four 'white-space' lines to restore default white-space processing. */
 +
white-space: pre-wrap;      /* css-3 */
 +
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 +
white-space: -pre-wrap;      /* Opera 4-6 */
 +
white-space: -o-pre-wrap;    /* Opera 7+ */
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">
 +
<span id="CleaningNavMeshDeletion"; style="color: red; background-color:#333333;">WARNING:</span> Do NOT use any of these methods to ''clean the deleted navmeshes'' in the official ESMs.  This will do more harm than good. "Official ESMs" refers to the DLC by the game publisher.
 +
</div>
 +
 
 +
<span id="Tip-WorldMap"></span>
 +
==== TIP Creating a new '''world map''' ====
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">All "world maps" are based upon a "bitmap image" in ".dds" format.  Depending upon how "original" your worldspace territory is, you may be able to find "satellite images" or "heightmap" or other sources whose copyright permits you to create a "derivative work" by scanning/converting into a bitmap image format.  Otherwise you will probably have to take screenshots of the various "render windows" of your unique worldspace in '''GECK''' and stitch the results together into a single image for use as described below.
 +
 
 +
'''Ptolemy''' by '''Alan Broad''' (included in the mod [https://www.nexusmods.com/newvegas/mods/57245/? Ptolemy Maps for New Vegas]), being purpose-built for games like The Elder Scrolls, not only came with the Morrowind map but served as a tool for creating game maps from bitmap images. It included a simple but robust suite of tools for creating and organizing locations based on their type, faction, importance, etc.  It was used to create the FNV maps included in that mod.
 +
 
 +
In addition, there is the wiki article [http://wiki.tesnexus.com/index.php/Oblivion_custom_in-game_map Oblivion custom in-game map] which is a short tutorial describing one method of creating a working world map for your worldspace in Oblivion.  As the same game engine is used for both, the process should work for FNV.  Just don't select anything in the "Parent Worldspace" field.
 +
 
 +
A more complete tutorial on the overall process is [http://www.truancyfactory.com/tutorials/fallout3/fallout_worldspace.html Creating a Custom Worldspace for Fallout 3] by '''truancyfactory'''.
 +
</div>
 +
 
 +
=== Packaging Mods for Installation ===
 +
Once you have created (and tested) your mod, you still aren't done.  You have to "package" the ESM & ESP files, and all related "assets" into a structure suitable for installation.  And given that there are more than one "mod manager" in use by people, this requires some forethought.  Once you have created your "mod package", you then have to "publish" it on the Internet, presumably to the "Nexus Mods" site which is the assumption here.
 +
 
 +
Note: If you package your mod into an "executable installer" (so it has a ".exe" extension), it cannot be installed with a "mod manager".  They can only deal with packages in '''7Zip''', '''ZIP''', or '''RAR''' archive formats.  You would have to "run" the installer executable first so it unpacked the package into a folder, and then manually move the contents of that folder to the correct locations under "Data".
 +
 
 +
[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]
 +
* [http://wiki.nexusmods.com/index.php/Category:Using_the_Nexus_sites Category: Using the Nexus sites] Wiki page has articles on:
 +
:* [[Blank_thumbnail_images | Blank thumbnail images]] Wiki
 +
:* [[Compressing_your_images_before_uploading | Compressing your images before uploading]] Wiki
 +
:* [[Formating_and_BBCode_in_Descriptions | Formatting and BBCode in Descriptions]] Wiki
 +
:* [[How_to_convert_images_with_MS_Paint | How to convert images with MS Paint]] Wiki
 +
:* [[How_to_crop_images_with_MS_Paint | How to crop images in MS Paint]] Wiki
 +
:* [[How_to_upload_mods | How to upload mods]] Wiki
 +
:* [[Illegal_Music_Pack_Uploads_and_You | Illegal Music Pack Uploads and You]] Wiki
 +
* [http://zumbs.wordpress.com/2009/11/08/fomm-and-fomods-for-dummies-1/ FOMM and FOMODs for Dummies] by '''Zumbs'''
 +
* [http://www.nexusmods.com/skyrim/mods/75140/? FOMOD Validator] by '''Ganda'''
 +
* [http://www.nexusmods.com/newvegas/mods/44914/? Guide to FOMOD scripting] Mod by '''nyrb''' based on work by '''kaburke'''
 +
* [http://www.nexusmods.com/skyrim/mods/35567/? Mod Publishing Tutorial for Nexus] Mod by '''TheThirdRace'''
 +
* [http://cs.elderscrolls.com/index.php?title=Modding_Etiquette Modding Etiquette] Wiki
 +
* [http://www.nexusmods.com/skyrim/mods/39434/? NMM Installer Tutorial - FOMOD - FOMM] Mod by '''XunAmarox'''
 +
* [http://www.nexusmods.com/skyrim/mods/41440/? NMM ModuleConfig Creator] Mod by '''Twilightassassin'''
 +
* [http://wiki.step-project.com/Guide:Wrye_Bash S.T.E.P. Guide: Wrye Bash] Wiki
 +
:* [[BAIN_an_understanding|BAIN an understanding]]
 +
:* [http://forums.bethsoft.com/topic/1084204-bain-mod-installation-projects/ BAIN Mod installation projects] thread on the Oblivion forum.  Understanding BAIN complex structures aids in scripting installs with other managers.
 +
:* [http://www.nexusmods.com/skyrim/mods/4328/? BAIN Archive Tools - BAT] by Surazal
 +
 +
Re Original images:  You can use screenshots from the game, as long as you are the one who took them, or you use those posted by others with their explicit permission.  When in doubt, see the "Terms of Service" and the image "file" page to check the permissions there.
 +
 
 +
Re Music: If you intend to include externally sourced "music", "voices", or "sounds", see the wiki article [http://wiki.nexusmods.com/index.php/Illegal_Music_Pack_Uploads_and_You Illegal Music Pack Uploads and You].  Unless it is your own original work, it's copyrighted by someone else.  You have to check for permissions.
 +
 
 +
Re REQUIRED: That setting is for linking other mods/plugins that are essential for your mod to work correctly.
 +
 
 +
A video does not fall into that category, as it can only be describing how to install or use your mod.  Your best bet if you feel it is essential people use it for your documentation is to provide that explanation and link it prominently in your description (as well as under the "Video" tab).  (See the wiki [http://wiki.nexusmods.com/index.php/Formating_and_BBCode_in_Descriptions Formatting and BBCode in Descriptions] article.)  However, bear in mind that:
 +
* Not everyone likes or can even watch some videos: e.g. medical conditions; a different native language (not easily translated from a video; while it is from a text file);
 +
* A video is no substitute for written instructions which should be included in a "ReadMe" file.  That link not only explains that position but links to a "ReadMe Generator" program to help you create a "proper" file.
 +
* Most players do not want to read/view anything to get a mod installed.  People (well, most of them) never seem to RTFM.  They assume all they need to do is install, and at most then add it in their mod manager to their current game settings.  They will then turn around and complain your mod is "broken" and demand you fix it NOW.  This is a "fact of life" for mod creators.  Plan for it, and reduce your installation complexity upfront as much as possible.
 +
 +
To that end, learn how to properly package your mod.
 +
 
 +
<span id="Tip-BSAFiles"></span>
 +
==== TIP BSA Files ====
 +
: Thanks to '''Zilav''' (of '''xEdit''', '''BSArch''', and '''TTW''' fame) in the Nexus Fallout "New Vegas Technical Support" forum for the basis of the following:
 +
<div name="Note Box" class="boilerplate metadata" id="Notice Box"
 +
style="margin:0px 10px 10px 10px;border:1px dashed #DAA520;color: lightgray;
 +
background-color:#333333;padding:3px;
 +
word-wrap: break-word;      /* Internet Explorer 5.5+ */
 +
">If you have a large number of "loose" asset files associated with your plugin, consider packaging them into a "Bethesda Software Archive (BSA)" file.  This is how the vanilla game provides most of it's files.  It can provide performance improvements for older systems, as well as keeping the "asset" files of your plugin neatly packaged and separate from those of other mods.  As a player, you may find it beneficial to package other mod's loose files into BSAs for your own performance gains. 
 +
 
 +
According to the GECKWiki page on [http://geckwiki.com/index.php?title=BSA_Files BSA Files], <span style="color: red;
 +
background-color:#fff5f5;">the GECK doesn't work with BSA files itself.  It requires "loose files".</span>  See that page for other important information.  Things to be aware of:
 +
# A BSA file can only be 2GB in size.  That is, no more than "2^31 = 2,147,483,648 bytes / 1024 = 2,097,152 KB / 1024 = 2048 MB".
 +
# Even though FNV distributes their Meshes and Textures in separate BSA files, they can be combined into one.  The only limitations are the overall file size and that the internal folder structure match that at the top level under "Data" (i.e. "meshes", "textures", "menus", etc.).  (This might not hold true for other games, but was successfully done for TTW.  For example: Fallout 4 has it's own format for ''textures only'' archives, so they are kept separate.)  Use the "Fallout - <name>.BSA" files as guidelines.
 +
# Older BSA tools are not guaranteed to correctly build BSA files suitable for ALL Bethesda games.  (They will probably extract files from them just fine.)  The internal formats have changed from game to game over time and as new discoveries have been unearthed.  [http://www.nexusmods.com/newvegas/mods/64745 BSArch] (by '''Zilav''') is currently the only tool specifically designed to recognize and ''build'' correct BSA archives for all the Bethesda games.  However, it is "command line" and does not have a Windows "Graphical User Interface (GUI)".
 +
# You can have multiple BSA files with the same ESP "parent" filename, e.g.:
 +
#* PluginName.ESP
 +
#* PluginName - Textures.BSA
 +
#* PluginName - Textures2.BSA
 +
#: etc.
 +
# The engine loads BSA files that match the significant part of the "base name" (up to the first embedded space or punctuation mark).  If you desire to have "spaces" in the significant part of the base filename, use the "underscore" character (_) instead (e.g. "MY_MOD" for "MY_MOD - Textures.bsa").  The secondary (less significant) portion of the filename after the first embedded space must be unique for each subsequent file.
 +
# Only an ESP can be associated with a BSA.  If the mod does not already include an ESP file, then a "dummy" one must be created using the '''GECK'''.  However, this ESP will take up a slot of the "active plugin cap".  See the '''Skyrim''' thread [http://forums.nexusmods.com/index.php?/topic/4591640-update-bsas-and-you/ BSAs and you] regarding these concerns, always bearing in mind that specifics mentioned there apply to '''Skyrim''' and not necessarily '''FNV'''.  The basics still apply.
 +
#* To create a "master-less dummy ESP": Open the '''GECK''' without loading any files (nothing checked under "File | Data").  Immediately save a "new file" as your dummy ESP name.  This file will have zero bytes and appear to be completely empty.  However, an empty plaintext file will not work instead, so there is something not obvious involved.
 +
#* FYI: '''Oblivion''', '''Fallout 3''' and '''New Vegas''' load archives by partial name matching, so "Mod.esp" will load all archives named "Mod*.bsa" (case insensitive of course in Windows, but not in Linux!) in alphabetical order. The only exception is the main game master plugin; so "FalloutWhatever.bsa" won't be loaded.  However naming after any DLC if available like "HonestHeartsMyAwesomeArchive.bsa" will work and allows to avoid using dummy plugins.
 +
#: '''Morrowind''' has no BSA loading by plugins and loads archives listed in the INI file only.
 +
#: '''Skyrim LE''' loads a single archive by exact name match: "Mod.bsa".
 +
#: '''Skyrim SE''' loads two archives per plugin: "Mod.bsa" and "Mod - Textures.bsa" (it can contain any assets despite the name).
 +
#: '''Fallout 4''' loads "Mod - Main.bsa" and "Mod - Textures.bsa".  (Probably others, but not investigated.)
 +
# Compression in the BSA: Please see that section of the "BSAs and You" thread linked above.
 +
# You may want to compare folder contents between the original mod distributed files folders and the ones you are packing into a BSA.  For comparing folders, suggest [http://winmerge.org/?lang=en WinMerge].  It can compare both files and folders.
 +
# Testing your BSA files will require adding the ESP to the "load order", toggling "ArchiveInvalidadtion", and exercising the game as appropriate to ensure the assets are loaded.  Using a "new game" for testing purposes is recommended.
 +
</div>
 +
 
 +
* File Names.
 +
While your current mod related filenames undoubtedly make sense to you, it is highly likely they were not named with the player or packaging in mind unless you are quite experienced with supporting mods.  The number of mods with the "documentation" in a file simply named "ReadMe.txt" (as if there were no other files with that name, ever) is only slightly less than the total number of mods in existence.  This might work for packaging a mod, but when it is unpacked by a mod manager (which typically place all installed "documentation" into a common "docs" folder) the latest installed will overwrite any already existing with that same name.  Similarly, a number of mod plugin files with disconnected names (e.g. "name1.esm", "name2.esp", "patch-x.esp") when installed into a "load order" get separated and lost in the list of filenames and become extremely difficult to associate with each other unless some care is taken to prefix them with a common string such as the mod name or abbreviation.  And without something to tie the mod abbreviation or prefix to the full package name (such as using both in the "ReadMe" filename), it can become impossible to trace backwards from the individual filename to the mod package name.  Listing all the related plugin filenames and their purpose in a "documentation" file is also a reasonable practice for the benefit of both the author and the user.
 +
 
 +
Consequently, you need to give all the individual files in your package a common prefix.  Long path and filename combinatons (up to 255 characters) are not a problem for modern operating systems, so don't be afraid to use them if necessary but try to use some restraint.  This also means you need to ensure that anything which depends upon knowing those specific filenames (such as BSA files) is also updated.
 +
 
 +
* Packages.
 +
Packages can be divided into two categories: "standard" and "private":
 +
* A "standard" structured package follows the directory structure used by the game: that is vanilla game sub-folders under "Data" (such as "Meshes", "Textures", "Menus", etc.), with possibly additional "mod specific" sub-folders under those (e.g. "Meshes\armor\<ModName>").  Such can be handled by any of the available managers.  Note the current generation of mod managers do not require you to include the "Data" folder itself.  See the wiki article [http://cs.elderscrolls.com/index.php?title=Modding_Etiquette Modding Etiquette].
 +
* A "private" structured package introduces layers of non-vanilla sub-folders (e.g. "<Mod Name>\Data\<Mod version folder>\Meshes", etc.).  Such have to be manually restructured to remove the offending "non-standard" folders before they can be properly installed using a "mod manager" (or even recognized if installed manually).
 +
 
 +
Obviously you want to create "standard" structured packages to avoid having to deal with the questions your users inevitably will have in getting your mod installed.
 +
 
 +
The most common mistake is that people misunderstand the part about creating an archive package that goes:
 +
<pre>
 +
go back into the root of the folder so that the address bar once again shows '''C:\<MyMod>''' and then select all the files (.esp & .txt) and folders (meshes & textures) and right-click on them
 +
</pre>
 +
You are NOT supposed to select the folder '''C:\<MyMod>'''  in the example.  You are supposed to select all the files (and any sub-folders) '''''under''''' that folder.  If you select the folder itself, then the package gets created with that folder name as the top level in the archive, and every "mod manager" will treat it as a new folder under the "Data" folder.  The files will not get placed in the correct locations; they will be buried one level down and never seen by the game engine.
 +
 
 +
Even when you build a "standard" package, the structure can be categorized into one of two forms: "simple" and "complex".
 +
 
 +
==== Simple structure ====
 +
All modern "mod managers" can easily install packages with a "simple structure" that starts under (not including) the game "Data" folder (e.g. "Meshes\<category>\<mod name>\<other sub-folders as needed>").  They either add their files directly to the existing vanilla folders, or under their own sub-folder in order to keep them separate.  It all depends upon the paths used when building the mesh and texture files.  They might create their own, new folders starting at the "Data" level (e.g. "Data\NVSE"), but the package structure simply has the new folder in the package at the same level as the top level vanilla folders, like "Meshes", "Textures", and "NVSE".  The "Data" folder is assumed by the manager.  This is the reason some package structures, which require they be installed starting in the game root folder (e.g. "Fallout New Vegas\LOOT"), usually cannot be installed correctly with a "mod manager".
 +
 
 +
==== Complex structure ====
 +
The simple structure does not have "conditional install components": meaning some files that are only installed under certain conditions such as the presence of a plugin from a different mod.  Complex structure may also require certain "scripted" modifications to existing (usually vanilla) files.  The different "mod managers" vary in their ability to handle such scripting (often called "install wizards" or simply "wizards").  If the scripting capabilities of a particular manager are required, it is the author's responsibility to make this adequately clear to the potential mod users.  Often such structures use various sub-folders to group the files related to the specific condition together.
 +
 
 +
Understanding how the various "mod managers" can assist with installation will enable you to use a structure that takes advantage of the most available features of all of them.
 +
 
 +
==== Uploading to the Nexus ====
 +
[http://sites.google.com/site/ttrcreations/skyrim/mod-publishing-tutorial Mod Publishing Tutorial] is written for Skyrim with plenty of illustrative images, but should be pretty universal with obvious changes for any specific game.  It's on [http://www.nexusmods.com/skyrim/mods/35567/ Nexus], but as the author suggests using the HTML version, that's what's linked first.
 +
 +
An older alternate, shorter version is the wiki [[How_to_upload_mods|How to upload mods]] article.
 +
 
 +
The wiki [[Formating_and_BBCode_in_Descriptions|Formating and BBCode in Descriptions]] article can help you create a more distinctive description page.  Remember: this page is where you "sell" your mod to potential players.  Like any advertising campaign, "eye appeal" is important.
 +
 
 +
== The next step ==
 +
So, you wonder if you are ready to step out of the novice stage.  You know you are at this stage after you realize the grand scheme you had in your head for your idea isn't going to happen, and scale back your initial ambition.
 +
 
 +
You should start looking to the forum boards and reading what others are coming up with for idea's on what to mod.  Then just take that idea and since now you are more familiar with the GECK and information resources (like the GECK wiki), see if you can solve the problem with their idea.  Just in a "lurking" fashion if you don't want to actually go public.
 +
 
 +
Many mod creators have found this to be a huge source of learning material, since they cannot come up with all the various idea's on what to mod on their own.  Helping others is actually helping yourself, and there is nothing like trying to solve a particular problem to consolidate all the various bits of information into an understanding.  You will almost always learn something new when investigating how to accomplish another's idea.  (Anyone who has engaged in teaching others will tell you they learn more preparing to teach than they started already knowing.)
 +
 
 +
And just for learning purposes there are all the past posts, some of which have been solved.  Many haven't, so there is no shortage of first time solutions to be worked out.
 +
 
 +
 
 +
== References ==
 +
 
 +
(Generally in order of appearance in the article.)
 +
 
 +
=== Refs [[#Programs_and_Tools|Programs and Tools]] ===
 +
 
 +
==== Refs [[#GECK_Tools|GECK Tools]] ====
 +
 
 +
*[http://geck.bethsoft.com/index.php?title=Main_Page Garden of Eden Construction Kit (GECK)] Tool.
 +
*[http://www.nexusmods.com/newvegas/mods/64888/? GECK Extender] NVSE Plugin. <span style="margin:0px 10px 10px 0px; border:1px solid #00C600; color: red;  background-color:#fff5f5; padding:3px;  word-wrap: break-word">(Do not use together with '''GECK Powerup''' (nor the '''Forked''' version), which it replaces.)</span>
 +
*[http://www.nexusmods.com/newvegas/mods/41642/? GECK 1.4 Powerup] Plugin. <span style="margin:0px 10px 10px 0px; border:1px solid #00C600; color: red;  background-color:#fff5f5; padding:3px;  word-wrap: break-word">(Replaced by '''GECK Extender'''. Do not use both together.)</span>
 +
*[http://geckwiki.com/index.php?title=Main_Page Community GECK Wiki] GECKWiki.
 +
 
 +
:
 +
:*[http://geck.foesmm.org/index.php/Tutorials GECK: Tutorials] Wiki.
 +
:*[http://geckwiki.com/index.php?title=Category:Getting_Started#My_First_Vault_Tutorial_Series GECK: 'My first vault' tutorial series] Bethesda's intro to mod creation.
 +
:*[http://geckwiki.com/index.php?title=Category:FAQ GECK: FAQ] Simple questions with answers.
 +
:*[http://geckwiki.com/index.php?title=Category:Advanced_Modding_Techniques GECK: Advanced Modding Techniques] Questions with tricky answers. 
 +
 
 +
*[http://geck.bethsoft.com/index.php?title=Main_Page Official Bethesda GECK Wiki] Wiki. (No longer being updated by community.)
 +
*[http://cs.elderscrolls.com/index.php?title=Category:Solutions TES4 Construction Set Wiki] Older, more fundamental questions and answers.
 +
 
 +
==== Refs [[#Image_Tools|Image Tools]] ====
 +
 
 +
*[http://wiki.nexusmods.com/index.php/Category:Tools Category:Tools on Nexus Mods wiki]
 +
*[http://www.autodesk.com/products/3ds-max/overview 3DS Max] (1 month free trial, $185/month or $1470/year subscriptions, 3 yr student/educator license.)
 +
 
 +
:
 +
:*[http://www.nexusmods.com/skyrim/mods/5622/? 3DS Max Nif Importer-Exporter] by '''figment'''
 +
:*[http://github.com/figment/max_nif_plugin/releases "Figment" 3DS Max Nif exporter plugin fork on GitHub]
 +
:*[http://community.bethesda.net/thread/10364?tstart=0 Official Nif export tool only supports 3DS Max] 2013? thread. 
 +
 
 +
*[http://www.nexusmods.com/oblivion/mods/12248/? Blender v2.49b] (freeware.) Recommended for FO3/FNV.
 +
 
 +
:
 +
:*[http://www.nexusmods.com/oblivion/mods/42755 Blender v2.49b Portable] by '''Room207'''. (freeware.) Recommended for FO3/FNV.
 +
:*[[Installation_of_Blender|Installation of Blender]] (Wiki article.) 
 +
 
 +
*[http://www.mwgfx.co.uk/programs/dxtbmp.htm DXTBmp Texture Tool] (freeware.)
 +
*[http://www.gimp.org/ GIMP: GNU Image Manipulation Program] (freeware.)
 +
*[http://www.nexusmods.com/newvegas/mods/61538/? Hairs - Eyes - Races Auto - Patcher by '''Fallout 2AM'''] Mod.
 +
*[http://web.archive.org/web/20170713081056/http://www.darkcreations.org/testg/wiki/Category:VWD-OB LOD/VWD Overview] TESTG site wiki.
 +
 
 +
:
 +
:*[http://www.nexusmods.com/newvegas/mods/58562 FNVLODGen] "View While Distant (VWD)"/"Level Of Detail (LOD)" landscape ''object'' generation tool.
 +
:*[http://www.nexusmods.com/newvegas/mods/61035/? Ultimate resolution landscape LODs and generator TES4LL] landscape ''mesh'' and ''texture'' LOD generation tool. 
 +
 
 +
*[http://www.autodesk.com/products/maya/overview Maya] (1 month free trial, $185/month or $1470/year subscriptions, 3 yr student/educator license.)
 +
*[http://www.nexusmods.com/newvegas/mods/64746 NIF tangents and binormals updater] (freeware) by '''zilav'''.
 +
*[http://niftools.sourceforge.net/wiki/NifSkope NifSkope] (freeware.) Note this is the latest release and may not be the best choice for FO3/FNV.
 +
 
 +
:
 +
:*[http://github.com/niftools/nifskope/releases/tag/nifskope-1.1.3 NifSkope v1.3.3 (revision36efdd)] (freeware.) Recommended for FO3/FNV.
 +
:*[http://niftools.sourceforge.net/wiki/NifTools NifTools Wiki] (freeware.) 
 +
::
 +
::*[http://niftools.sourceforge.net/wiki/NIF_Format/NifTools_XML_Format The NifTools XML Format] (documentation.) Version 0.7.0.0 recommended for FO3/FNV.   
 +
:*[http://www.nexusmods.com/skyrim/mods/34626/? NifSkope: Mesh Tool N3 - Path Changer] by '''Anton'''
 +
:*[http://www.nexusmods.com/skyrim/mods/19266/? NifSkope: NifTextures - Path Changer] by '''Macoron'''
 +
:*[http://www.nexusmods.com/newvegas/mods/63770/? Nifskope: Testing Skeleton] by '''clanky4''' 
 +
 
 +
*[http://www.getpaint.net/index.html Paint.NET] (freeware.)
 +
 
 +
:
 +
:*[http://forums.getpaint.net/index.php?/topic/8318-boltbaits-plugin-pack-for-v3511-updated-january-31-2015/ Paint: BoltBaits Plugin Pack] for Paint.NET.
 +
:*[http://www.nexusmods.com/skyrim/mods/6843/? Paint: The Normal Map Tools] by '''Goujosamma''' for Paint.net 
 +
 
 +
*[http://www.nexusmods.com/newvegas/mods/57245/? Ptolemy Maps for New Vegas] mod and tool suite by '''Rocketeer''' and '''Alan Broad'''
 +
*[http://www.buckarooshangar.com/flightgear/tut_dds.html Working with DDS/DXT Files] (HTML article) by '''Gary "Buckaroo" Neely'''.
 +
 
 +
==== Refs [[#Packaging_Tools|Packaging Tools]] ====
 +
 
 +
*[http://www.nexusmods.com/skyrim/mods/4328/? BAIN Archive Tools - BAT] by '''Surazal'''.
 +
*[http://www.nexusmods.com/newvegas/mods/64745 BSArch] (freeware) by '''zilav'''.
 +
*[http://www.nexusmods.com/oblivion/mods/41042/? BSAOpt] (freeware).
 +
*[http://sourceforge.net/projects/bsaextractor/ BSAExtractor (BSAE)] (freeware).
 +
*[http://www.nexusmods.com/newvegas/mods/65854 FNV BSA Decompressor] Mod by '''zilav'''.
 +
*[http://www.nexusmods.com/newvegas/mods/54991/? FOMM - Forked] (freeware).
 +
 
 +
:
 +
:*[http://zumbs.wordpress.com/2009/11/08/fomm-and-fomods-for-dummies-1/ FOMM and FOMODS for Dummies] article.
 +
:*[http://www.nexusmods.com/skyrim/mods/75140/? FOMOD Validator] by Ganda. 
 +
 
 +
==== Refs [[#Scripting_Tools|Scripting Tools]] ====
 +
 
 +
*[http://www.cipscis.com/fallout/utilities/validator.aspx CIPSCIS Script Validator] (freeware.)
 +
*[http://nvse.silverlock.org/ New Vegas Script Extender (NVSE)] Site.
 +
 
 +
:
 +
:*[http://www.gribbleshnibit.com/projects/NVSEDocs/# NVSE Documentation] by '''gribbleshnibit'''.  
 +
:*[http://www.nexusmods.com/newvegas/mods/58277/? JIP LN NVSE plugin] by '''jazzisparis''' and '''LuthienAnarion'''.  
 +
:*[http://www.loverslab.com/files/file/553-nvse-extender-aka-nx/ NVSE Extender Plugin (NX)] by '''prideslayer'''.  
 +
:*[http://geck.bethsoft.com/index.php?title=Category:Functions_(JIP) GECK: JIP Functions] (Wiki.)  
 
:*[http://geck.bethsoft.com/index.php?title=Category:Functions_(Lutana) GECK: Lutana (LN) Functions] (Wiki.)   
 
:*[http://geck.bethsoft.com/index.php?title=Category:Functions_(Lutana) GECK: Lutana (LN) Functions] (Wiki.)   
  
*[http://www.nexusmods.com/skyrim/mods/39434/? NMM Installer Tutorial - FOMOD - FOMM] by '''XunAmarox'''.  
+
*[http://www.nexusmods.com/skyrim/mods/39434/? NMM Installer Tutorial - FOMOD - FOMM] by '''XunAmarox'''.  
*[http://www.nexusmods.com/skyrim/mods/41440/? NMM ModuleConfig Creator] by '''Twilightassassin'''.  
+
*[http://www.nexusmods.com/skyrim/mods/41440/? NMM ModuleConfig Creator] by '''Twilightassassin'''.  
*[http://www.nexusmods.com/skyrim/mods/33797/? NMM Tracelog Help] by '''Thorne67'''.  
+
*[http://www.nexusmods.com/skyrim/mods/33797/? NMM Tracelog Help] by '''Thorne67'''.  
*[http://notepad-plus-plus.org/ Notepad++] (free.) Source code editor.  
+
*[http://notepad-plus-plus.org/ Notepad++] (free.) Source code editor.  
 
+
 
:
+
:
:*[http://www.nexusmods.com/skyrim/mods/33271/? BAIN User Defined Language for Notepad++] (Mod) by '''The_Catman'''. "Language" Plugin for BAIN syntax.  
+
:*[http://www.nexusmods.com/skyrim/mods/33271/? BAIN User Defined Language for Notepad++] (Mod) by '''The_Catman'''. "Language" Plugin for BAIN syntax.  
:*[http://www.nexusmods.com/newvegas/mods/62793/? Notepad++ GECK Syntax Highlighter] (Mod) by '''DoctaSax'''. "Language" Plugin for GECK editor syntax.   
+
:*[http://www.nexusmods.com/newvegas/mods/62793/? Notepad++ GECK Syntax Highlighter] (Mod) by '''DoctaSax'''. "Language" Plugin for GECK editor syntax.   
 +
 
 +
==== Refs [[#Sound_and_Voice_Tools|Sound and Voice Tools]] ====
 +
 
 +
*[http://www.audacityteam.org/ Audacity] (free.) Sound editor and audio format conversion.
 +
*[http://www.nexusmods.com/newvegas/mods/61248/? FonixData.cdf ( Easier .Lip Files )] ( Mod) by '''DingraThePishvaz'''.
 +
*[http://www.nexusmods.com/newvegas/mods/61265/? Latest Ogg Vorbis Libraries] (Mod) by '''KaneWright'''.
 +
*[http://www.nexusmods.com/newvegas/mods/63052/? Silent Voice Generator by Enter_77] (Mod).
 +
 
 +
==== Refs [[#Misc_Other_Tools|Misc Other Tools]] ====
 +
 
 +
*[http://darnified.net/forums/community/ DarNified Forum Community] site. Articles and questions primarily about Oblivion version of DarNUI but useful for anyone trying to understand User Interface and Menu XML files.
 +
*[http://www.nexusmods.com/newvegas/mods/62796/? Gamesettings profiler] (Mod) by '''Xilandro Axeuora'''.
 +
*[http://www.nexusmods.com/skyrim/mods/60733/? Tree LOD billboard creator for xLODGen] by zilav
 +
*[http://www.nexusmods.com/newvegas/mods/34703/? xEdit/FNVEdit] (freeware.) A generic tool called 'xEdit' which is renamed for working with specific games.
 +
 
 +
:
 +
:*[http://www.nexusmods.com/newvegas/mods/38413/? FNVEdit Training Manual] (PDF.) Generally applies to all 'xEdit' versions for other games.
 +
 
 +
=== Refs [[#Details|Details]] ===
 +
 
 +
*[https://www.afkmods.com/index.php?/topic/4966-wrye-bash-all-games/&page=16 Wrye Bash - All Games] (Thread.)
 +
*[http://en.uesp.net/wiki/Tes4Mod:Mod_File_Format Oblivion TES4 Header information] (UESP Wiki.)
 +
*[http://en.uesp.net/wiki/Tes5Mod:Mod_File_Format Skyrim TES5 Header information] (UESP Wiki.)
 +
*[http://github.com/TES5Edit/fopdoc/blob/master/Fallout3/Records.md Fallout 3 Header/Record information] (WrinklyNinja - BOSS/LOOT.)
 +
*[http://github.com/TES5Edit/fopdoc/blob/master/FalloutNV/Records.md Fallout NV Header/Record information] (WrinklyNinja - BOSS/LOOT.)
 +
*[http://github.com/TES5Edit/fopdoc/blob/master/Fallout3/Groups.md Fallout 3 Group Record information] (WrinklyNinja - BOSS/LOOT.)
 +
*[http://github.com/TES5Edit/fopdoc/blob/master/FalloutNV/Groups.md Fallout NV Group Record information] (WrinklyNinja - BOSS/LOOT.)
 +
*[http://en.uesp.net/wiki/Tes5Mod_talk:Mod_File_Format Tes5Mod talk:Mod File Format] (UESP Wiki.)
 +
*[http://libraries.io/github/TES5Edit/fopdoc TES5Edit/fopdoc] as of 2 Jun 2014 (GitHub wiki.)
 +
*[http://guides.github.com/features/mastering-markdown/ GitHub Flavored Markdown] (GitHub wiki.)
 +
*[http://www.uesp.net/wiki/Tes3Mod:Construction_Set TES3: Morrowind CK] (freeware.)
 +
*[http://www.uesp.net/wiki/Oblivion:Construction_Set TES4: Oblivion CK] (freeware.)
 +
*[http://tesalliance.org/forums/index.php?/forum/81-the-enclave/ TESAlliance: The Enclave] (wiki.)
 +
*[http://geck.bethsoft.com/index.php?title=Main_Page Garden of Eden Construction Kit (GECK)] (wiki.)
 +
*[http://geckwiki.com/index.php?title=Main_Page Community GECK Wiki] (wiki.)
 +
*[[Fallout_NV_Mod_Conflict_Troubleshooting|Fallout NV Mod Conflict Troubleshooting]] (wiki.)
 +
*[http://blog.digitaltutors.com/3ds-max-vs-maya-is-one-better-than-the-other/ 3ds Max vs Maya: Is one better than the other?] (Blog.)
 +
*[http://www.quora.com/Whats-the-difference-between-AutoDesks-Maya-and-3DS-MAX What's the difference between AutoDesk Maya and 3DS Max?] (Q&A Website.)
 +
*[http://forums.nexusmods.com/index.php?/forum/320-blender/ Software Programs - 3D Modelling - Blender forum] (Nexus Forum.)
 +
*[http://forums.nexusmods.com/index.php?/forum/321-3ds-max/ Software Programs - 3D Modelling - 3ds Max forum] (Nexis Forum.)
 +
*[http://forums.nexusmods.com/index.php?/forum/322-maya/ Software Programs - 3D Modelling - Maya forum] (Nexus Forum.)
 +
*[http://forums.nexusmods.com/index.php?/forum/335-miscellaneous-other/ Software Programs - 3D Modelling - Miscellaneous / Other forum] (Nexus Forum.)
 +
*[http://forums.nexusmods.com/index.php?/topic/234818-blender-read-this-1st/ Blender - Read this first: started by LHammonds] (Nexus Forum Thread.)
 +
 
 +
=== Refs [[#Common_Problems_with_GECK|Common Problems with GECK]] ===
 +
*[[:Category:New_Vegas_Templates|New Vegas Templates]] (Hidden Category). This article section consists entirely of file "Template:GECK: Common Problems" content, which needs to be edited directly to update.
  
==== Refs: [[#Sound_and_Voice_Tools|Sound and Voice Tools]] ====
+
=== Refs [[#GECK_and_the_Active_File|GECK and the Active File]] ===
 
 
*[http://www.audacityteam.org/ Audacity] (free.) Sound editor and audio format conversion.
 
*[http://www.nexusmods.com/newvegas/mods/61248/? FonixData.cdf ( Easier .Lip Files )] ( Mod) by '''DingraThePishvaz'''.
 
*[http://www.nexusmods.com/newvegas/mods/61265/? Latest Ogg Vorbis Libraries] (Mod) by '''KaneWright'''.
 
*[http://www.nexusmods.com/newvegas/mods/63052/? Silent Voice Generator by Enter_77] (Mod).
 
 
 
==== Refs: [[#Misc_Other_Tools|Misc Other Tools]] ====
 
 
 
*[http://darnified.net/forums/community/ DarNified Forum Community] site. Articles and questions primarily about Oblivion version of DarNUI but useful for anyone trying to understand User Interface and Menu XML files.
 
*[http://www.nexusmods.com/newvegas/mods/62796/? Gamesettings profiler] (Mod) by '''Xilandro Axeuora'''.
 
*[http://www.nexusmods.com/skyrim/mods/60733/? Tree LOD billboard creator for xLODGen] by zilav
 
*[http://www.nexusmods.com/newvegas/mods/34703/? xEdit/FNVEdit] (freeware.) A generic tool called 'xEdit' which is renamed for working with specific games.
 
 
 
:
 
:*[http://www.nexusmods.com/newvegas/mods/38413/? FNVEdit Training Manual] (PDF.) Generally applies to all 'xEdit' versions for other games. 
 
 
 
=== Refs: [[#Details|Details]] ===
 
 
 
*[http://afkmods.iguanadons.net/index.php?/topic/4966-wrye-bash-all-games/&page=16 Wrye Bash - All Games] (Thread.)
 
*[http://en.uesp.net/wiki/Tes4Mod:Mod_File_Format Oblivion TES4 Header information] (UESP Wiki.)
 
*[http://en.uesp.net/wiki/Tes5Mod:Mod_File_Format Skyrim TES5 Header information] (UESP Wiki.)
 
*[http://github.com/TES5Edit/fopdoc/blob/master/Fallout3/Records.md Fallout 3 Header/Record information] (WrinklyNinja - BOSS/LOOT.)
 
*[http://github.com/TES5Edit/fopdoc/blob/master/FalloutNV/Records.md Fallout NV Header/Record information] (WrinklyNinja - BOSS/LOOT.)
 
*[http://github.com/TES5Edit/fopdoc/blob/master/Fallout3/Groups.md Fallout 3 Group Record information] (WrinklyNinja - BOSS/LOOT.)
 
*[http://github.com/TES5Edit/fopdoc/blob/master/FalloutNV/Groups.md Fallout NV Group Record information] (WrinklyNinja - BOSS/LOOT.)
 
*[http://en.uesp.net/wiki/Tes5Mod_talk:Mod_File_Format Tes5Mod talk:Mod File Format] (UESP Wiki.)
 
*[http://libraries.io/github/TES5Edit/fopdoc TES5Edit/fopdoc] as of 2 Jun 2014 (GitHub wiki.)
 
*[http://guides.github.com/features/mastering-markdown/ GitHub Flavored Markdown] (GitHub wiki.)
 
*[http://www.uesp.net/wiki/Tes3Mod:Construction_Set TES3: Morrowind CK] (freeware.)
 
*[http://www.uesp.net/wiki/Oblivion:Construction_Set TES4: Oblivion CK] (freeware.)
 
*[http://tesalliance.org/forums/index.php?/forum/81-the-enclave/ TESAlliance: The Enclave] (wiki.)
 
*[http://geck.bethsoft.com/index.php?title=Main_Page Garden of Eden Construction Kit (GECK)] (wiki.)
 
*[http://geck.technodeep.net/index.php/Main_Page Community GECK Wiki] (wiki.)
 
*[[Fallout_NV_Mod_Conflict_Troubleshooting|Fallout NV Mod Conflict Troubleshooting]] (wiki.)
 
*[http://blog.digitaltutors.com/3ds-max-vs-maya-is-one-better-than-the-other/ 3ds Max vs Maya: Is one better than the other?] (Blog.)
 
*[http://www.quora.com/Whats-the-difference-between-AutoDesks-Maya-and-3DS-MAX What's the difference between AutoDesk Maya and 3DS Max?] (Q&A Website.)
 
*[http://forums.nexusmods.com/index.php?/forum/320-blender/ Software Programs - 3D Modelling - Blender forum] (Nexus Forum.)
 
*[http://forums.nexusmods.com/index.php?/forum/321-3ds-max/ Software Programs - 3D Modelling - 3ds Max forum] (Nexis Forum.)
 
*[http://forums.nexusmods.com/index.php?/forum/322-maya/ Software Programs - 3D Modelling - Maya forum] (Nexus Forum.)
 
*[http://forums.nexusmods.com/index.php?/forum/335-miscellaneous-other/ Software Programs - 3D Modelling - Miscellaneous / Other forum] (Nexus Forum.)
 
*[http://forums.nexusmods.com/index.php?/topic/234818-blender-read-this-1st/ Blender - Read this first: started by LHammonds] (Nexus Forum Thread.)
 
 
 
=== Refs: [[#GECK_and_the_Active_File|GECK and the Active File]] ===
 
  
 
*[[#Tip-SaveOften|TIP: Save early and often. Make backups. Use "Vista SP2" compatibility mode.]].  
 
*[[#Tip-SaveOften|TIP: Save early and often. Make backups. Use "Vista SP2" compatibility mode.]].  
  
=== Refs: [[#GECK_Form-ID.2C_Base-ID.2C_Ref-ID.2C_and_Editor-ID|GECK Form-ID, Base-ID, Ref-ID, and Editor-ID]] ===
+
=== Refs [[#GECK_Form-ID.2C_Base-ID.2C_Ref-ID.2C_and_Editor-ID|GECK Form-ID, Base-ID, Ref-ID, and Editor-ID]] ===
  
 
*[http://geck.bethsoft.com/index.php?title=Reference GECK Reference page] Wiki.  
 
*[http://geck.bethsoft.com/index.php?title=Reference GECK Reference page] Wiki.  
Line 4,593: Line 5,729:
 
*[[#Global_ref_variables_.27Player.27_and_.27PlayerREF.27|Global ref variables 'Player' and 'PlayerREF']]  
 
*[[#Global_ref_variables_.27Player.27_and_.27PlayerREF.27|Global ref variables 'Player' and 'PlayerREF']]  
  
=== Refs: [[#Custom_items|Custom items]] ===
+
=== Refs [[#Custom_items|Custom items]] ===
  
 
*[http://rd.nexusmods.com/newvegas/mods/64390 Different emission Vault Signs tutorial] by '''munnibha'''  
 
*[http://rd.nexusmods.com/newvegas/mods/64390 Different emission Vault Signs tutorial] by '''munnibha'''  
 +
*[[#Tip-BodySlots|TIP: Biped & Equipped Objects]]
 
*[[#Tip-RadiusSetting|TIP: Flickering on added item (Radius Setting)]]  
 
*[[#Tip-RadiusSetting|TIP: Flickering on added item (Radius Setting)]]  
 
*[[#Tip-FloatingObjects|TIP: Floating objects]]  
 
*[[#Tip-FloatingObjects|TIP: Floating objects]]  
 
*[[#Tip-HeadPartsRotated|TIP: Head Parts Rotated]]  
 
*[[#Tip-HeadPartsRotated|TIP: Head Parts Rotated]]  
 
*[[#Tip-Substitutions|TIP: Item Substitution]]  
 
*[[#Tip-Substitutions|TIP: Item Substitution]]  
*[[#Tip-MovableObjects|TIP: Movable/Static custom objects in cell]]  
+
*[[#MashingMeshes|TIP: Mashing Meshes]]
 +
*[[#Tip-MovableObjects|TIP: Movable/Static custom objects in cell]]
 +
*[[#Tip-InjectedRecs|TIP: Plugins can't override injected records]]
 +
*[[#Tip-Repairability|TIP: Repairability]]
  
=== Refs: [[#Custom_Creatures|Custom Creatures]] ===
+
=== Refs [[#Custom_Creatures|Custom Creatures]] ===
  
=== Refs: [[#Spawning_modded_items|Spawning modded items]] ===
+
=== Refs [[#Spawning_modded_items|Spawning modded items]] ===
  
 
*[[#Tip-PlantBug|TIP: Plant respawning bug fix.]]  
 
*[[#Tip-PlantBug|TIP: Plant respawning bug fix.]]  
  
=== Refs: [[#Worldspaces|Worldspaces]] ===
+
=== Refs [[#Worldspaces|Worldspaces]] ===
  
 
*[http://www.nexusmods.com/newvegas/mods/62703/? The Community Wasteland Project by Thumblesteen] Resource Mod.  
 
*[http://www.nexusmods.com/newvegas/mods/62703/? The Community Wasteland Project by Thumblesteen] Resource Mod.  
Line 4,616: Line 5,756:
 
*[[#Tip-StaticWater|TIP: Static Water goes into '''''Interior''''' cells only.]]  
 
*[[#Tip-StaticWater|TIP: Static Water goes into '''''Interior''''' cells only.]]  
  
=== Refs: [[#Additional_Material|Additional Material]] ===
+
=== Refs [[#Additional_Material|Additional Material]] ===
  
 
*[http://www.nexusmods.com/newvegas/mods/searchresults/?src_cat=104 Modders resources and tutorials] Nexus category.  
 
*[http://www.nexusmods.com/newvegas/mods/searchresults/?src_cat=104 Modders resources and tutorials] Nexus category.  
Line 4,627: Line 5,767:
 
*[[Video_capture_and_edit_tools|Video capture and edit tools]] Wiki.  
 
*[[Video_capture_and_edit_tools|Video capture and edit tools]] Wiki.  
  
=== Refs: [[#3D_Model_and_Texture_resources|3D Model and Texture resources]] ===
+
=== Refs [[#3D_Model_and_Texture_resources|3D Model and Texture resources]] ===
  
 
*[http://www.blendswap.com/ Blendswap Open Source 3D Models] Web site.  
 
*[http://www.blendswap.com/ Blendswap Open Source 3D Models] Web site.  
Line 4,638: Line 5,778:
 
*[http://www.nexusmods.com/newvegas/mods/searchresults/?src_cat=104 Modders resources and tutorials] Nexus category.  
 
*[http://www.nexusmods.com/newvegas/mods/searchresults/?src_cat=104 Modders resources and tutorials] Nexus category.  
  
=== Refs: [[#GeckCustom.INI|GeckCustom.INI]] ===
+
=== Refs [[#GeckCustom.INI|GeckCustom.INI]] ===
  
 
*[[#Tip-GeckCustomINIMissing|Tip on adding the GECKCustom.INI file]]  
 
*[[#Tip-GeckCustomINIMissing|Tip on adding the GECKCustom.INI file]]  
Line 4,646: Line 5,786:
 
*[[#Tip-GeckViewENB|Tip to View ENB in GECK]]  
 
*[[#Tip-GeckViewENB|Tip to View ENB in GECK]]  
  
=== Refs: [[#Factions.2C_Stealing_and_Ownership|Factions, Stealing and Ownership]] ===
+
=== Refs [[#Factions.2C_Stealing_and_Ownership|Factions, Stealing and Ownership]] ===
  
 
*[http://fallout.gamepedia.com/Fallout:_New_Vegas_factions Factions]  
 
*[http://fallout.gamepedia.com/Fallout:_New_Vegas_factions Factions]  
 
*[http://fallout.gamepedia.com/Fallout:_New_Vegas_reputations Reputation]  
 
*[http://fallout.gamepedia.com/Fallout:_New_Vegas_reputations Reputation]  
  
=== Refs: [[#Bethsoft_Basic_Tutorials|Bethsoft Basic Tutorials]] ===
+
=== Refs [[#Bethsoft_Basic_Tutorials|Bethsoft Basic Tutorials]] ===
  
*[http://geck.technodeep.net/index.php?search=tutorial&title=Special:Search&go=Go Bethsoft Basic GECK Tutorials]  
+
*[http://geckwiki.com/index.php?search=tutorial&title=Special:Search&go=Go Bethsoft Basic GECK Tutorials]  
 
*[http://en.uesp.net/w/index.php?title=Special:Search&search=tutorials&button= Basic Oblivion & Skyrim Tutorials]  
 
*[http://en.uesp.net/w/index.php?title=Special:Search&search=tutorials&button= Basic Oblivion & Skyrim Tutorials]  
  
=== Refs: [[#Animation|Animation]] ===
+
=== Refs [[#Animation|Animation]] ===
  
 
*[http://www.nexusmods.com/fallout3/mods/21983/? ACCESS: Animated Computers Consoles Electronics and Security Systems Resource by Pixelhate] Resource Mod.  
 
*[http://www.nexusmods.com/fallout3/mods/21983/? ACCESS: Animated Computers Consoles Electronics and Security Systems Resource by Pixelhate] Resource Mod.  
Line 4,670: Line 5,810:
 
*[http://forums.nexusmods.com/index.php?/topic/984792-tutorial-working-with-the-nicontrollermanager/ NifSkope: Working with the NiControllerManager] Forum Thread. Alternate images available [http://www.mediafire.com/file/p0srsyrfuaszevp/Tutorial.zip here].  
 
*[http://forums.nexusmods.com/index.php?/topic/984792-tutorial-working-with-the-nicontrollermanager/ NifSkope: Working with the NiControllerManager] Forum Thread. Alternate images available [http://www.mediafire.com/file/p0srsyrfuaszevp/Tutorial.zip here].  
 
*[http://www.youtube.com/watch?v=Zijo8ly6pyI One minute tutorial on Shape Keys by OneMinute VideoTutorials] Video.  
 
*[http://www.youtube.com/watch?v=Zijo8ly6pyI One minute tutorial on Shape Keys by OneMinute VideoTutorials] Video.  
 +
*[http://www.nexusmods.com/newvegas/mods/66968 Weapon Animation Patching Tutorial] PDF with separate "screenshots" file by '''benja'''.
 
*[http://www.nexusmods.com/newvegas/mods/48521/? Weapon Animation Tutorial] PDF by '''Toasty Fresh'''.  
 
*[http://www.nexusmods.com/newvegas/mods/48521/? Weapon Animation Tutorial] PDF by '''Toasty Fresh'''.  
 
*[[#Tip-AnimationSummary|TIP: Animation Summary.]]  
 
*[[#Tip-AnimationSummary|TIP: Animation Summary.]]  
Line 4,679: Line 5,820:
 
*[[#Tip-AnimationExport|TIP: Animation Exporting.]]  
 
*[[#Tip-AnimationExport|TIP: Animation Exporting.]]  
 
*[[#Tip-KFActorRotation|TIP: KF edit rotates Actors 90° to right.]]  
 
*[[#Tip-KFActorRotation|TIP: KF edit rotates Actors 90° to right.]]  
*[[#Tip-PlayAnimation|TIP: Play an Animation.]]  
+
*[[#Tip-PlayAnimation|TIP: Play an Animation.]]
  
=== Refs: [[#Armor_.26_Clothes|Armor & Clothes]] ===
+
=== Refs [[#Armor_.26_Clothes|Armor & Clothes]] ===
  
 
*[[3ds_Max_armor_to_Fallout_New_Vegas|3ds Max armor to Fallout New Vegas]] Wiki.  
 
*[[3ds_Max_armor_to_Fallout_New_Vegas|3ds Max armor to Fallout New Vegas]] Wiki.  
Line 4,703: Line 5,844:
 
*[[#Tip-ExportMesh|TIP: Exporting a mesh from Blender for import into GECK.]]  
 
*[[#Tip-ExportMesh|TIP: Exporting a mesh from Blender for import into GECK.]]  
  
=== Refs: [[#Blender_.28Mesh_Editor.29|Blender (Mesh Editor)]] ===
+
=== Refs [[#Blender_.28Mesh_Editor.29|Blender (Mesh Editor)]] ===
  
 
*[http://wiki.nexusmods.com/index.php/Installation_of_Blender Installation of Blender] Wiki article.  
 
*[http://wiki.nexusmods.com/index.php/Installation_of_Blender Installation of Blender] Wiki article.  
Line 4,713: Line 5,854:
 
*[[#Tip-BlenderImport|TIP: Blender Import other Model Formats.]]  
 
*[[#Tip-BlenderImport|TIP: Blender Import other Model Formats.]]  
  
=== Refs: [[#Collision|Collision]] ===
+
=== Refs [[#Collision|Collision]] ===
  
 
*[http://www.nexusmods.com/oblivion/mods/19739/? Blender Video Tutorial - Convex Collision by LHammonds] Video.  
 
*[http://www.nexusmods.com/oblivion/mods/19739/? Blender Video Tutorial - Convex Collision by LHammonds] Video.  
Line 4,721: Line 5,862:
 
*[[#Tip-CollisionSounds|TIP: Collision Impact Sounds.]]  
 
*[[#Tip-CollisionSounds|TIP: Collision Impact Sounds.]]  
  
=== Refs: [[#Conversions|Conversions]] ===
+
=== Refs [[#Conversions|Conversions]] ===
  
 
*[http://forums.nexusmods.com/index.php?/topic/250761-converting-fo3-mod-for-fnv/ Converting FO3 Mod for FNV] Thread.  
 
*[http://forums.nexusmods.com/index.php?/topic/250761-converting-fo3-mod-for-fnv/ Converting FO3 Mod for FNV] Thread.  
Line 4,739: Line 5,880:
 
*[[#Tip-PluginCopy|TIP: Copying between plugins.]]  
 
*[[#Tip-PluginCopy|TIP: Copying between plugins.]]  
  
=== Refs: [[#Creature_Creation|Creature Creation]] ===
+
=== Refs [[#Creature_Creation|Creature Creation]] ===
  
 
*[http://www.nexusmods.com/fallout3/mods/6306/? Adding a custom creature to Fallout 3 Tutorial by Ominus] PDF. Very Basic.  
 
*[http://www.nexusmods.com/fallout3/mods/6306/? Adding a custom creature to Fallout 3 Tutorial by Ominus] PDF. Very Basic.  
Line 4,748: Line 5,889:
 
*[[#Tip-EmbeddedWeapon|TIP: Locate Embedded Creature Weapon]]  
 
*[[#Tip-EmbeddedWeapon|TIP: Locate Embedded Creature Weapon]]  
  
=== Refs: [[#Custom_NPCs|Custom NPCs]] ===
+
=== Refs [[#Custom_NPCs|Custom NPCs]] ===
  
 
*[http://www.nexusmods.com/newvegas/mods/45278/? Advanced Companion creation guide with Companion Wheel by Caprius] Mod HTML.  
 
*[http://www.nexusmods.com/newvegas/mods/45278/? Advanced Companion creation guide with Companion Wheel by Caprius] Mod HTML.  
 
*[http://www.nexusmods.com/fallout3/mods/5506 CMF Companion Tutorial] RTF by '''Darkfirebird CMF'''.  
 
*[http://www.nexusmods.com/fallout3/mods/5506 CMF Companion Tutorial] RTF by '''Darkfirebird CMF'''.  
 
*[http://forums.nexusmods.com/index.php?/topic/900821-fnv-companion-tutorial/ FNV Companion Tutorial] Forum Thread by '''trilioth'''.  
 
*[http://forums.nexusmods.com/index.php?/topic/900821-fnv-companion-tutorial/ FNV Companion Tutorial] Forum Thread by '''trilioth'''.  
*[http://geck.technodeep.net/index.php/AI_Packages_Tab GECK: AI package]  
+
*[http://geckwiki.com/index.php/Adding_items_to_vendors GECK: Adding items to vendors] Wiki tutorial.
 +
*[http://geckwiki.com/index.php?title=AI_Packages_Tab GECK: AI package]  
 
*[http://www.youtube.com/playlist?list=PLo2FGzSVbkcPedlm9zZ981YvUy7DoSQew GECK: Companion Tutorial playlist by cgy95] Video series.  
 
*[http://www.youtube.com/playlist?list=PLo2FGzSVbkcPedlm9zZ981YvUy7DoSQew GECK: Companion Tutorial playlist by cgy95] Video series.  
*[http://geck.technodeep.net/index.php/Creating_a_new_vendor GECK: Creating a new vendor] Wiki tutorial.  
+
*[http://geckwiki.com/index.php?title=Creating_a_new_vendor GECK: Creating a new vendor] Wiki tutorial.  
 
*[http://www.youtube.com/watch?v=O9wnoZ7tKro GECK: Creating an NPC by KDStudios ] Video.  
 
*[http://www.youtube.com/watch?v=O9wnoZ7tKro GECK: Creating an NPC by KDStudios ] Video.  
 
*[http://www.youtube.com/watch?v=NuFepoBHptk GECK: Custom NPC and Dialog by St4rdog] Video.  
 
*[http://www.youtube.com/watch?v=NuFepoBHptk GECK: Custom NPC and Dialog by St4rdog] Video.  
*[http://geck.technodeep.net/index.php/Category:Packages GECK: Packages] Wiki.  
+
*[http://geckwiki.com/index.php?title=Category:Packages GECK: Packages] Wiki.  
*[http://geck.technodeep.net/index.php/AddScriptPackage GECK: AddScriptPackage] Wiki.  
+
*[http://geckwiki.com/index.php?title=AddScriptPackage GECK: AddScriptPackage] Wiki.  
 
*[http://forums.nexusmods.com/index.php?/topic/5184015-guide-replacing-vanilla-hair-with-modded-hair/ GUIDE: Replacing Vanilla Hair with Modded Hair] Forum Thread.  
 
*[http://forums.nexusmods.com/index.php?/topic/5184015-guide-replacing-vanilla-hair-with-modded-hair/ GUIDE: Replacing Vanilla Hair with Modded Hair] Forum Thread.  
 
*[http://www.nexusmods.com/newvegas/mods/61538/? Hairs - Eyes - Races Auto - Patcher] mod by '''Fallout 2AM'''.  
 
*[http://www.nexusmods.com/newvegas/mods/61538/? Hairs - Eyes - Races Auto - Patcher] mod by '''Fallout 2AM'''.  
 +
*[http://www.nexusmods.com/newvegas/mods/35769/ FaceGen Save Face Ripper for FNVEdit] tool by '''xatmos''' to rip face hex data from save files for use in '''FNVEdit'''.
 
*[http://www.nexusmods.com/newvegas/mods/56009/? Jokerine's Misc Resources Tutorials and Novac Bungalow: Quick 'n' Dirty Merchant by Jokerine] Mod PDF.  
 
*[http://www.nexusmods.com/newvegas/mods/56009/? Jokerine's Misc Resources Tutorials and Novac Bungalow: Quick 'n' Dirty Merchant by Jokerine] Mod PDF.  
 
*[http://www.nexusmods.com/newvegas/mods/38059/? NCCS - NosCo Companion System by NosRhyfelwr and Herculine] Mod.  
 
*[http://www.nexusmods.com/newvegas/mods/38059/? NCCS - NosCo Companion System by NosRhyfelwr and Herculine] Mod.  
Line 4,779: Line 5,922:
 
*[[#Tip-Hostility|TIP: Hostility between NPCs.]]  
 
*[[#Tip-Hostility|TIP: Hostility between NPCs.]]  
 
*[[#Tip-InterruptCombat|TIP: Interrupt combat for dialog.]]  
 
*[[#Tip-InterruptCombat|TIP: Interrupt combat for dialog.]]  
*[[#Tip-NPCMovement|TIP: Making NPCs move (aka "AI Packages").]]  
+
*[[#Tip-NPCMovement|TIP: Making NPCs move (aka "AI Packages").]]
 +
*[[#TIP-CompanionXP|TIP: Only Combat Teammates give XP to Player]]
 
*[[#Tip-CompanionPerks|TIP: Perks for Companions.]]  
 
*[[#Tip-CompanionPerks|TIP: Perks for Companions.]]  
 
*[[#Tip-FaceFeatures|TIP: Switching Custom Facial Features.]]  
 
*[[#Tip-FaceFeatures|TIP: Switching Custom Facial Features.]]  
 
*[[#Tip-MakingNPCs|TIP: Trick with making NPCs.]]  
 
*[[#Tip-MakingNPCs|TIP: Trick with making NPCs.]]  
*[[#TIP-AIPackages|TIP: Using AI Packages.]]  
+
*[[#TIP-AIPackages|TIP: Using AI Packages.]]
  
=== Refs: [[#Dialogue_.26_Lip-synch|Dialogue & Lip-synch]] ===
+
=== Refs [[#Dialogue_.26_Lip-synch|Dialogue & Lip-synch]] ===
  
 
*[http://forums.nexusmods.com/index.php?/topic/449620-a-very-basic-dialogue-tutorial/ A very basic dialogue tutorial] Forum Thread.  
 
*[http://forums.nexusmods.com/index.php?/topic/449620-a-very-basic-dialogue-tutorial/ A very basic dialogue tutorial] Forum Thread.  
Line 4,804: Line 5,948:
 
*[http://www.nexusmods.com/newvegas/mods/63317/? Lazy Voice Finder - FInd voice assets just you want] Mod.  
 
*[http://www.nexusmods.com/newvegas/mods/63317/? Lazy Voice Finder - FInd voice assets just you want] Mod.  
 
*[http://www.oddcast.com/home/demos/tts/tts_example.php?sitepal Online Text to Speech Demo] Web site.  
 
*[http://www.oddcast.com/home/demos/tts/tts_example.php?sitepal Online Text to Speech Demo] Web site.  
*[http://geck.technodeep.net/index.php/How_to_script_conversation_between_two_or_more_NPCs How to script conversation between two or more NPCs] Community GECK wiki.  
+
*[http://geckwiki.com/index.php?title=How_to_script_conversation_between_two_or_more_NPCs How to script conversation between two or more NPCs] Community GECK wiki.  
*[http://geck.technodeep.net/index.php/Quest_and_Dialogue_Tutorial Quest and Dialogue Tutorial] Community GECK wiki.  
+
*[http://geckwiki.com/index.php?title=Quest_and_Dialogue_Tutorial Quest and Dialogue Tutorial] Community GECK wiki.  
 
*[[#Tip-GenericDialog|TIP: Adding Generic Dialog.]]  
 
*[[#Tip-GenericDialog|TIP: Adding Generic Dialog.]]  
 
*[[#Tip-Translators|TIP: Conversation/Quest system.]]  
 
*[[#Tip-Translators|TIP: Conversation/Quest system.]]  
Line 4,814: Line 5,958:
 
*[[#Tip-DialogTabs|TIP: Standard Dialog.]]  
 
*[[#Tip-DialogTabs|TIP: Standard Dialog.]]  
  
=== Refs: [[#FaceGen:_Heads.2C_Faces.2C_Hairs.2C_and_Helmets|FaceGen: Heads, Faces, Hairs, and Helmets]] ===
+
=== Refs [[#FaceGen:_Heads.2C_Faces.2C_Hairs.2C_and_Helmets|FaceGen: Heads, Faces, Hairs, and Helmets]] ===
  
 
*[[Working_with_Skyrim_head_TRIs|Working with Skyrim head TRIs]] Wiki article.  
 
*[[Working_with_Skyrim_head_TRIs|Working with Skyrim head TRIs]] Wiki article.  
Line 4,827: Line 5,971:
 
*[http://forums.nexusmods.com/index.php?/topic/92378-what-is-egm-file/ What is EGM File] Forum thread  
 
*[http://forums.nexusmods.com/index.php?/topic/92378-what-is-egm-file/ What is EGM File] Forum thread  
  
=== Refs: [[#Havok_Physics|Havok Physics]] ===
+
=== Refs [[#Havok_Physics|Havok Physics]] ===
  
 
*[http://www.nexusmods.com/newvegas/mods/56009/? Jokerine's Misc Resources Tutorials and Novac Bungalow: Havok Removal by Jokerine] Mod PDF.  
 
*[http://www.nexusmods.com/newvegas/mods/56009/? Jokerine's Misc Resources Tutorials and Novac Bungalow: Havok Removal by Jokerine] Mod PDF.  
Line 4,834: Line 5,978:
 
*[[#Tip-HavokDeadNPC|TIP: Havok a dead NPC.]]  
 
*[[#Tip-HavokDeadNPC|TIP: Havok a dead NPC.]]  
  
=== Refs: [[#Heightmaps|Heightmaps]] ===
+
=== Refs [[#Heightmaps|Heightmaps]] ===
  
 
*[http://www.truancyfactory.com/tutorials/fallout3/fallout_worldspace2.html Fallout3 Creating a Heightmap] HTML with images.  
 
*[http://www.truancyfactory.com/tutorials/fallout3/fallout_worldspace2.html Fallout3 Creating a Heightmap] HTML with images.  
Line 4,840: Line 5,984:
 
*[http://forums.nexusmods.com/index.php?/topic/517230-tutorial-converting-a-dem-to-a-heightmap/ Converting a "Digital Elevation Map" (DEM) file to a Heightmap] Forum Thread.  
 
*[http://forums.nexusmods.com/index.php?/topic/517230-tutorial-converting-a-dem-to-a-heightmap/ Converting a "Digital Elevation Map" (DEM) file to a Heightmap] Forum Thread.  
  
=== Refs: [[#LOD_Generation|LOD Generation]] ===
+
=== Refs [[#LOD_Generation|LOD Generation]] ===
  
*[http://www.darkcreations.org/testg/wiki/Category:VWD-OB TESTG: LOD/VWD Overview] Wiki.  
+
*[http://web.archive.org/web/20170713081056/http://www.darkcreations.org/testg/wiki/Category:VWD-OB TESTG: LOD/VWD Overview] Wiki.  
 
*[http://www.nexusmods.com/newvegas/mods/58562/? FNVLODGen/xLODGen] Tool by '''zilav'''.  
 
*[http://www.nexusmods.com/newvegas/mods/58562/? FNVLODGen/xLODGen] Tool by '''zilav'''.  
 
*[http://www.nexusmods.com/skyrim/mods/60733/? Tree LOD billboard creator for xLODGen] Tool by '''zilav'''.  
 
*[http://www.nexusmods.com/skyrim/mods/60733/? Tree LOD billboard creator for xLODGen] Tool by '''zilav'''.  
Line 4,866: Line 6,010:
 
*[[#Tip-LODGen|TIP: LOD Generation.]]  
 
*[[#Tip-LODGen|TIP: LOD Generation.]]  
  
=== Refs: [[#Misc_Topics|Misc Topics]] ===
+
=== Refs [[#Misc_Topics|Misc Topics]] ===
  
==== Refs: [[#.3E_ESM_.26_ESP_Files|ESM & ESP Files]] ====
+
==== Refs [[#ESM and ESP Files|ESM & ESP Files]] ====
  
*[[#Tip-ESMOnly|TIP: When can you use an ESM only mod?]]  
+
*[[#Tip-ESMOnly|TIP: When can you use an ESM only mod?]]
  
==== Refs: [[#.3E_Factions_.26_Reputation|Factions & Reputation]] ====
+
==== Refs [[#Factions_and_Reputation|Factions & Reputation]] ====
  
 
*[http://www.youtube.com/watch?v=5f-x2ws6ySo GECK: Factions/Reputation by Seddon4494] Video.  
 
*[http://www.youtube.com/watch?v=5f-x2ws6ySo GECK: Factions/Reputation by Seddon4494] Video.  
  
==== Refs: [[#.3E_GIMP:_Posters_.26_Images|GIMP: Posters & Images]] ====
+
==== Refs [[#GIMP_Posters_and_Images|GIMP: Posters & Images]] ====
  
 
*[[Gimp_create_old_weathered_posters_and_other_images|Gimp: create old weathered posters and other images]] Wiki.  
 
*[[Gimp_create_old_weathered_posters_and_other_images|Gimp: create old weathered posters and other images]] Wiki.  
  
==== Refs: [[#.3E_How_to_...|How to ...]] ====
+
==== Refs [[#How_to_...|How to ...]] ====
  
 
*[[How_to_create_a_challenge|How to create a challenge]] Wiki.  
 
*[[How_to_create_a_challenge|How to create a challenge]] Wiki.  
Line 4,895: Line 6,039:
 
:*[[#Tip-PipboyIcons|TIP: Pipboy Icons.]]   
 
:*[[#Tip-PipboyIcons|TIP: Pipboy Icons.]]   
  
*[[#Tip-MoveQuestNPC|TIP: Moving a Quest NPC.]]
+
==== Refs [[#Import_Custom_Videos|Import Custom Videos]] ====
 
 
==== Refs: [[#.3E_Import_Custom_Videos|Import Custom Videos]] ====
 
  
 
*[[Importing_custom_videos_into_FNV/F3/Skyrim/Oblivion|Importing custom videos into FNV/F3/Skyrim/Oblivion]] Wiki.  
 
*[[Importing_custom_videos_into_FNV/F3/Skyrim/Oblivion|Importing custom videos into FNV/F3/Skyrim/Oblivion]] Wiki.  
  
==== Refs: [[#.3E_Item_Creation_.26_placement|Item Creation & placement]] ====
+
==== Refs [[#Item_Creation_and_placement|Item Creation & placement]] ====
  
 
*[[Item_creation_and_placement|Item creation and placement]] Wiki.  
 
*[[Item_creation_and_placement|Item creation and placement]] Wiki.  
  
==== Refs: > [[#Make_Readius_Screenglares|Make Readius Screenglares]] ====
+
==== Refs [[#Make_Readius_Screenglares|Make Readius Screenglares]] ====
  
*[[Making_Pipboy_Readius_screenglares|Making Pipboy Readius screenglares]] Wiki.  
+
*[[Making_Pipboy_Readius_screenglares|Making Pipboy Readius screenglares]] Wiki.
  
==== Refs: [[#.3E_Markers|Markers]] ====
+
==== Refs [[#Markers|Markers]] ====
  
 
*[http://geck.bethsoft.com/index.php?title=Markers GECK: Markers] Wiki.  
 
*[http://geck.bethsoft.com/index.php?title=Markers GECK: Markers] Wiki.  
Line 4,918: Line 6,060:
 
:*[[#Tip-PortableMarkers|TIP: Portable xMarkers]].   
 
:*[[#Tip-PortableMarkers|TIP: Portable xMarkers]].   
  
==== Refs: [[#.3E_PAINT.NET:_Normal_Maps|PAINT.NET: Normal Maps]] ====
+
==== Refs [[#PAINT.NET_Normal_Maps|PAINT.NET: Normal Maps]] ====
  
 
*[http://tesalliance.org/forums/index.php?/tutorials/article/119-graphic-artistry-normal-maps-in-paintnet/ Graphic Artistry: Normal Maps in Paint.Net] Tutorial.  
 
*[http://tesalliance.org/forums/index.php?/tutorials/article/119-graphic-artistry-normal-maps-in-paintnet/ Graphic Artistry: Normal Maps in Paint.Net] Tutorial.  
  
==== Refs: [[#.3E_Recipes|Recipes]] ====
+
==== Refs [[#Recipes|Recipes]] ====
  
 
*[http://youtu.be/-jDloCLWFYc GECK: Making a Recipe by Seddon4494] Video.  
 
*[http://youtu.be/-jDloCLWFYc GECK: Making a Recipe by Seddon4494] Video.  
  
==== Refs: [[#.3E_UV_Mapping|UV Mapping]] ====
+
==== Refs [[#UV_Mapping|UV Mapping]] ====
  
 
*[[UV_Mapping:_An_Explanation|UV Mapping: An Explanation]] Wiki.  
 
*[[UV_Mapping:_An_Explanation|UV Mapping: An Explanation]] Wiki.  
 
*[[Making_square_UV_maps_in_Blender|UV Mapping: Making square UV maps in Blender]] Wiki.  
 
*[[Making_square_UV_maps_in_Blender|UV Mapping: Making square UV maps in Blender]] Wiki.  
  
==== Refs: [[#.3E_XML|XML]] ====
+
==== Refs [[#XML|XML]] ====
  
 
*[http://www.w3schools.com/xml/ W3School's XML Tutorial] Wiki.  
 
*[http://www.w3schools.com/xml/ W3School's XML Tutorial] Wiki.  
 
*[http://cs.elderscrolls.com/index.php?title=Category:Oblivion_XML Category:Oblivion XML] Wiki (Oblivion).  
 
*[http://cs.elderscrolls.com/index.php?title=Category:Oblivion_XML Category:Oblivion XML] Wiki (Oblivion).  
 
*[http://www.loverslab.com/topic/53411-reading-ui-hud-xml-files/ Reading UI & HUD XML files] by '''DoctaSax''' (Adults (18+)Only site).  
 
*[http://www.loverslab.com/topic/53411-reading-ui-hud-xml-files/ Reading UI & HUD XML files] by '''DoctaSax''' (Adults (18+)Only site).  
*[http://qxmledit.org/ QXmlEdit] (freeware) XML Editor.  
+
*[http://qxmledit.org/ QXmlEdit] (freeware) XML Editor.
 +
*[http://www.nexusmods.com/newvegas/mods/67470 The HUD Editor] Mod by '''IntenseMute'''.
  
=== Refs: [[#Music_.26_Sounds|Music & Sounds]] ===
+
=== Refs [[#Music_.26_Sounds|Music & Sounds]] ===
  
 
*[[Fallout_New_Vegas_Music|Fallout New Vegas Music]] Wiki.  
 
*[[Fallout_New_Vegas_Music|Fallout New Vegas Music]] Wiki.  
Line 4,951: Line 6,094:
 
*[[#Tip-BattleMusic|TIP: Replacing Battle Music.]]  
 
*[[#Tip-BattleMusic|TIP: Replacing Battle Music.]]  
  
=== Refs: [[#Navmeshing|Navmeshing]] ===
+
=== Refs [[#Navmeshing|Navmeshing]] ===
  
 
*[http://youtu.be/5JGpfOLiLic Creation Kit Tutorial: How to Navmesh] Video by '''Darkfox127'''. Specific to Skyrim but compatible essentials.  
 
*[http://youtu.be/5JGpfOLiLic Creation Kit Tutorial: How to Navmesh] Video by '''Darkfox127'''. Specific to Skyrim but compatible essentials.  
Line 4,970: Line 6,113:
 
*[[#Tip-NavmeshPortal|TIP: Navmesh marker for Portal relocates.]]  
 
*[[#Tip-NavmeshPortal|TIP: Navmesh marker for Portal relocates.]]  
  
=== Refs: [[#NifSkope_.28Mesh_Editor.29|NifSkope (Mesh Editor)]] ===
+
=== Refs [[#NifSkope_.28Mesh_Editor.29|NifSkope (Mesh Editor)]] ===
  
 
*[http://www.youtube.com/watch?v=BvitRKEa1X0 How To Rotate A Mesh In Nifskope] 2 minute video by Zylice Liddell.  
 
*[http://www.youtube.com/watch?v=BvitRKEa1X0 How To Rotate A Mesh In Nifskope] 2 minute video by Zylice Liddell.  
Line 4,982: Line 6,125:
 
*[[#Tip-ShinyLines|TIP: Shiny lines in exported NIF normal map.]]  
 
*[[#Tip-ShinyLines|TIP: Shiny lines in exported NIF normal map.]]  
  
=== Refs: [[#Scripting|Scripting]] ===
+
=== Refs [[#Scripting|Scripting]] ===
  
 
*[http://www.cipscis.com/fallout/tutorials/beginners.aspx CIPSCIS: Scripting for Beginners] HTML.  
 
*[http://www.cipscis.com/fallout/tutorials/beginners.aspx CIPSCIS: Scripting for Beginners] HTML.  
 
*[http://code.tutsplus.com/tutorials/top-15-best-practices-for-writing-super-readable-code--net-8118 Top 15 Best Practices for Writing Super Readable Code] HTML.  
 
*[http://code.tutsplus.com/tutorials/top-15-best-practices-for-writing-super-readable-code--net-8118 Top 15 Best Practices for Writing Super Readable Code] HTML.  
 
*[http://geck.foesmm.org/index.php/Category:Conditions GECK Category: Conditions] Wiki.  
 
*[http://geck.foesmm.org/index.php/Category:Conditions GECK Category: Conditions] Wiki.  
*[http://geck.technodeep.net/index.php/Category:Tutorials GECK Category: Tutorials page] Wiki.  
+
*[http://geckwiki.com/index.php?title=Category:Tutorials GECK Category: Tutorials page] Wiki.  
 
*[http://geck.foesmm.org/index.php/Adding_an_Options_Menu GECK: Adding an Options Menu Tutorial]  
 
*[http://geck.foesmm.org/index.php/Adding_an_Options_Menu GECK: Adding an Options Menu Tutorial]  
*[http://geck.technodeep.net/index.php/Bethsoft_Tutorial_Basic_Quest GECK: Bethsoft Tutorial Basic Quest]  
+
*[http://geckwiki.com/index.php?title=Bethsoft_Tutorial_Basic_Quest GECK: Bethsoft Tutorial Basic Quest]  
 
*[http://www.nexusmods.com/newvegas/mods/45278/? GECK: Companion] Mod by '''Caprius'''.  
 
*[http://www.nexusmods.com/newvegas/mods/45278/? GECK: Companion] Mod by '''Caprius'''.  
 
*[http://geck.foesmm.org/index.php/List_of_Global_Variables GECK: Global Variable]  
 
*[http://geck.foesmm.org/index.php/List_of_Global_Variables GECK: Global Variable]  
 
*[http://youtu.be/3Bauvvmo31g GECK: Making a Counter] (for tracking scripts.) Video by '''Seddon4494'''.  
 
*[http://youtu.be/3Bauvvmo31g GECK: Making a Counter] (for tracking scripts.) Video by '''Seddon4494'''.  
 
*[http://www.youtube.com/watch?v=zDE4yHOz0cQ GECK: Script to Spawn/Enable NPCs at a Certain Time] Video.  
 
*[http://www.youtube.com/watch?v=zDE4yHOz0cQ GECK: Script to Spawn/Enable NPCs at a Certain Time] Video.  
*[http://geck.technodeep.net/index.php/Scripting_for_Beginners GECK: Scripting for Beginners] Wiki.  
+
*[http://geckwiki.com/index.php?title=Scripting_for_Beginners GECK: Scripting for Beginners] Wiki.  
 
*[http://www.youtube.com/watch?v=APnz-qdQxfQ Tutorial - Scripting Notes] Video by '''Seddon4494'''.  
 
*[http://www.youtube.com/watch?v=APnz-qdQxfQ Tutorial - Scripting Notes] Video by '''Seddon4494'''.  
 
*[http://www.youtube.com/watch?v=RLrV-R_0hnY Making something happen every day] Video by '''Seddon4494'''.  
 
*[http://www.youtube.com/watch?v=RLrV-R_0hnY Making something happen every day] Video by '''Seddon4494'''.  
Line 5,007: Line 6,150:
 
:
 
:
 
:*[http://geckwiki.com/index.php/Complete_List_of_Functions_in_NVSE NVSE] Wiki Functions List.  
 
:*[http://geckwiki.com/index.php/Complete_List_of_Functions_in_NVSE NVSE] Wiki Functions List.  
:*[http://geck.technodeep.net/index.php/Category:Functions_(JIP) JIP LN] Wiki Functions List.  
+
:*[http://geckwiki.com/index.php?title=Category:Functions_(JIP) JIP LN] Wiki Functions List.  
 
:*[http://geckwiki.com/index.php/MessageEx MessageEx] (NVSE) Wiki.  
 
:*[http://geckwiki.com/index.php/MessageEx MessageEx] (NVSE) Wiki.  
 
:*[http://geckwiki.com/index.php/MessageBoxEx MessageBoxEx] (NVSE) Wiki.  
 
:*[http://geckwiki.com/index.php/MessageBoxEx MessageBoxEx] (NVSE) Wiki.  
Line 5,016: Line 6,159:
 
:*[http://www.cipscis.com/fallout/tutorials/detecting_keypresses.aspx NVSE: Detecting Keypresses] Wiki.  
 
:*[http://www.cipscis.com/fallout/tutorials/detecting_keypresses.aspx NVSE: Detecting Keypresses] Wiki.  
 
:*[http://geck.foesmm.org/index.php/SetDebugMode NVSE: SetDebugMode] Wiki.  
 
:*[http://geck.foesmm.org/index.php/SetDebugMode NVSE: SetDebugMode] Wiki.  
:*[http://geck.technodeep.net/index.php/Event_Handling EventHandling (NVSE)] Wiki.  
+
:*[http://geckwiki.com/index.php?title=Event_Handling EventHandling (NVSE)] Wiki.  
:*[http://geck.technodeep.net/index.php/SetEventHandler SetEventHandler (NVSE)] Wiki.  
+
:*[http://geckwiki.com/index.php?title=SetEventHandler SetEventHandler (NVSE)] Wiki.  
:*[http://geck.technodeep.net/index.php/User_Defined_Function User Defined Function (UDF) (NVSE)] Wiki.  
+
:*[http://geckwiki.com/index.php?title=User_Defined_Function User Defined Function (UDF) (NVSE)] Wiki.  
:*[http://geck.technodeep.net/index.php/Notes GECK: Notes] Wiki.  
+
:*[http://geckwiki.com/index.php?title=Notes GECK: Notes] Wiki.  
:*[http://geck.technodeep.net/index.php/AddNote GECK: AddNote] Wiki.  
+
:*[http://geckwiki.com/index.php?title=AddNote GECK: AddNote] Wiki.  
:*[http://geck.technodeep.net/index.php/Inventory_Reference GECK: Inventory Reference] Wiki.   
+
:*[http://geckwiki.com/index.php?title=Inventory_Reference GECK: Inventory Reference] Wiki.   
  
*[http://afkmods.iguanadons.net/index.php?/topic/4280-update-bsas-and-you/ BSAs and You] Thread.  
+
*[https://www.afkmods.com/index.php?/topic/4280-update-bsas-and-you/ BSAs and You] Thread.  
 
*[http://fallout.gamepedia.com/Pip-Boy_3000 Pipboy Tabs] Wiki.  
 
*[http://fallout.gamepedia.com/Pip-Boy_3000 Pipboy Tabs] Wiki.  
*[http://geck.technodeep.net/index.php/Bethsoft_Tutorial_Basic_Quest Bethsoft Tutorial Basic Quest] Wiki.  
+
*[http://geckwiki.com/index.php?title=Bethsoft_Tutorial_Basic_Quest Bethsoft Tutorial Basic Quest] Wiki.  
 
*[http://cs.elderscrolls.com/index.php?title=Performance_Problems TES: Script Performance Problems] TES Construction Set Wiki. Some things on this site are obsolete information as regards the GECK.  
 
*[http://cs.elderscrolls.com/index.php?title=Performance_Problems TES: Script Performance Problems] TES Construction Set Wiki. Some things on this site are obsolete information as regards the GECK.  
 
*[http://www.nexusmods.com/newvegas/mods/63880/? Timescale Pacemaker] Mod.  
 
*[http://www.nexusmods.com/newvegas/mods/63880/? Timescale Pacemaker] Mod.  
Line 5,074: Line 6,217:
 
*[[#Tip-QuestSelfStopping|TIP: Quest - Stopping within it's own script.]]  
 
*[[#Tip-QuestSelfStopping|TIP: Quest - Stopping within it's own script.]]  
 
*[[#Tip-References|TIP: Referencing Objects.]]
 
*[[#Tip-References|TIP: Referencing Objects.]]
 +
*[[#Tip-Relocating|TIP: Relocating objects to Player by script.]]
 
*[[#Tip-OnActivate|TIP: Restricting OnActivate blocks.]]  
 
*[[#Tip-OnActivate|TIP: Restricting OnActivate blocks.]]  
 
*[[#Tip-ScriptResult|TIP: Script Result vs Result Script.]]  
 
*[[#Tip-ScriptResult|TIP: Script Result vs Result Script.]]  
Line 5,081: Line 6,225:
 
*[[#Tip-Timers|TIP: Timers.]]
 
*[[#Tip-Timers|TIP: Timers.]]
  
=== Refs: [[#Texturing|Texturing]] ===
+
=== Refs [[#Texturing|Texturing]] ===
  
 
*[http://wiki.nexusmods.com/index.php/Category:Texturing Texturing Category on Nexus] Wiki. A large collection of articles on the subject.  
 
*[http://wiki.nexusmods.com/index.php/Category:Texturing Texturing Category on Nexus] Wiki. A large collection of articles on the subject.  
*[http://www.darkcreations.org/testg/wiki/Main_Page The Elder Scrolls Texture Guide (TESTG)] Wiki. A glossary of terminology and summary of various basic aspects related to texture replacements, along with a collection of "The Elder Scrolls" game mods of that nature. Designed for players rather than mod creators, but useful for beginners.  
+
*[http://web.archive.org/web/20170713081056/http://www.darkcreations.org/testg/wiki/Main_Page The Elder Scrolls Texture Guide (TESTG)] Wiki. A glossary of terminology and summary of various basic aspects related to texture replacements, along with a collection of "The Elder Scrolls" game mods of that nature. Designed for players rather than mod creators, but useful for beginners.  
 
*[http://forums.getpaint.net/index.php?/forum/28-textures/ Paint.net Tutorials] Forum.  
 
*[http://forums.getpaint.net/index.php?/forum/28-textures/ Paint.net Tutorials] Forum.  
 
*[http://www.youtube.com/channel/UChSDb-rgM7QrW6QvZjOy-VA Paint.net tutorial] Video series by '''yakobelt'''.  
 
*[http://www.youtube.com/channel/UChSDb-rgM7QrW6QvZjOy-VA Paint.net tutorial] Video series by '''yakobelt'''.  
Line 5,096: Line 6,240:
 
*[[#Tip-NormalMaps|TIP: Improving Texture Normal Maps.]]  
 
*[[#Tip-NormalMaps|TIP: Improving Texture Normal Maps.]]  
  
=== Refs: [[#Weapons|Weapons]] ===
+
=== Refs [[#Weapons|Weapons]] ===
  
 
*[http://www.nexusmods.com/newvegas/mods/63109/? Complete custom gun modding guide by GaigeStorm] PDF.  
 
*[http://www.nexusmods.com/newvegas/mods/63109/? Complete custom gun modding guide by GaigeStorm] PDF.  
Line 5,104: Line 6,248:
 
*[[Simple_vanilla_ironsights|Simple vanilla ironsights]] Wiki.  
 
*[[Simple_vanilla_ironsights|Simple vanilla ironsights]] Wiki.  
 
*[[Texturing_weapons_-_video_tutorial|Texturing weapons - video tutorial by Millenia]] Video link in the wiki article.  
 
*[[Texturing_weapons_-_video_tutorial|Texturing weapons - video tutorial by Millenia]] Video link in the wiki article.  
 +
*[http://www.nexusmods.com/newvegas/mods/66968 Weapon Animation Patching Tutorial] PDF with separate "screenshots" file by '''benja'''.
 
*[[#Tip-GECKWpnCTD|TIP: GECK CTD when editing weapons.]]  
 
*[[#Tip-GECKWpnCTD|TIP: GECK CTD when editing weapons.]]  
*[[#Tip-WeaponAnimations|TIP: Weapon Effect Animations.]]  
+
*[[#Tip-WeaponAnimations|TIP: Weapon Effect Animations.]]
  
=== Refs: [[#Worldspace_Creation|Worldspace Creation]] ===
+
=== Refs [[#Worldspace_Creation|Worldspace Creation]] ===
  
 
*[http://www.creationkit.com/index.php?title=Bethesda_Tutorial_Navmesh Bethesda Tutorial: Navmesh] Wiki.  
 
*[http://www.creationkit.com/index.php?title=Bethesda_Tutorial_Navmesh Bethesda Tutorial: Navmesh] Wiki.  
 
*[http://www.truancyfactory.com/tutorials/fallout3/fallout_worldspace.html Fallout3 World Space] by '''truancyfactory'''. HTML with images.  
 
*[http://www.truancyfactory.com/tutorials/fallout3/fallout_worldspace.html Fallout3 World Space] by '''truancyfactory'''. HTML with images.  
 
*[http://www.youtube.com/watch?v=babuNn5pzsw Filter for (find) Deleted Navmeshes with TES5edit by '''soupddragon'''] Video.  
 
*[http://www.youtube.com/watch?v=babuNn5pzsw Filter for (find) Deleted Navmeshes with TES5edit by '''soupddragon'''] Video.  
*[http://afkmods.iguanadons.net/index.php?/topic/3337-skyrim-fixing-navmesh-deletion-using-tes5edit/ Fixing Navmesh deletion using TES5Edit by '''Arthmoor'''.] Thread.  
+
*[https://www.afkmods.com/index.php?/topic/3337-skyrim-fixing-navmesh-deletion-using-tes5edit/ Fixing Navmesh deletion using TES5Edit by '''Arthmoor'''.] Thread.  
 
*[http://www.youtube.com/watch?v=Q-ZQtgveKaM Fixing Deleted Navmesh with TES5edit by '''soupdragon'''] Video.  
 
*[http://www.youtube.com/watch?v=Q-ZQtgveKaM Fixing Deleted Navmesh with TES5edit by '''soupdragon'''] Video.  
 
*[http://geck.bethsoft.com/index.php?title=Category:World_Spaces GECK: World Spaces] Wiki.  
 
*[http://geck.bethsoft.com/index.php?title=Category:World_Spaces GECK: World Spaces] Wiki.  
Line 5,121: Line 6,266:
 
*[[#Tip-WorldMap|TIP: Creating a new "world map".]]  
 
*[[#Tip-WorldMap|TIP: Creating a new "world map".]]  
  
=== Refs: [[#Packaging_Mods_for_Installation|Packaging Mods for Installation]] ===
+
=== Refs [[#Packaging_Mods_for_Installation|Packaging Mods for Installation]] ===
  
 
*[http://wiki.nexusmods.com/index.php/Category:Using_the_Nexus_sites Category: Using the Nexus sites] Wiki page has articles on:  
 
*[http://wiki.nexusmods.com/index.php/Category:Using_the_Nexus_sites Category: Using the Nexus sites] Wiki page has articles on:  

Revision as of 14:00, 2 August 2020


Contents

Overview

The following information is primarily taken from the Help starting out thread on the "Fallout New Vegas GECK and Modders" forum. The information is preserved here as an alternative to searching through back posts in that forum for commonly asked questions. Much of the information applies to "Fallout 3 (FO3)" as well, but the focus is on FNV.

This article provides a learning roadmap, a starting point and guide to progression; not a tutorial. Consider it a collection of suggestions and links to more detailed tutorials, articles, videos, and tools. Just from the "Table of Contents" you should get a reasonable idea of the learning curve ahead of you. Don't get discouraged. Tackle things one at a time. Just don't expect to learn everything quickly.

There is a lot of unique vocabulary related to creating mods in the following material, such as the distinction between "meshes", the 3D framework of objects (saved as Nif files); and "textures", the surface "skin" over the "mesh framework" (saved as DDS files). The Elder Scrolls Texture Guide (TESTG) site has a glossary and several pages devoted to explaining these to new mod creators and users. Rather than explaining them here, please reference that site when you need clarification. (This article does a lot of that: referral to other existing resources. Why reinvent the wheel?)

Programs and Tools

GECK Tools

  • Garden of Eden Construction Kit (GECK) (freeware.) The official "game editor" for Fallout 3 and New Vegas. NOTE that when loading files, the one plugin you designate with the "Start as Active" button becomes the one that gets edited and saved when you exit the editor. ALL of the files loaded into the GECK at the same time will automatically become "master files" to the "active file" when it is saved. In particular to this regard, see the NAM files entry.
  • GECK Extender NVSE Plugin. Project to extend GECK functionality and bug fixes. Compatible with all NVSE script extender plugins. (Do not use together with GECK Powerup (nor the Forked version), which it replaces.) Note the optional "Patcher" to make GECK 4GB aware and auto load NVSE is a separate file.
  • GECK 1.4 Powerup NVSE Plugin. (Replaced by GECK Extender. Do not use both together.) Comes in a "standalone" version for the "vanilla" GECK functions, and one for GECK with NVSE functions. It fixes and improves some issues while providing the missing messages when the GECK compiler finds an error or warning, and lets you save a script without compiling it. Considered "essential" by experienced mod creators.
  • There are now two wikis devoted to the GECK: the official one by Bethesda, which is not very well supported and a major pain to update (Five CAPCHAs per post!), and a Modding Community GECKWiki site with everything from the official one but actively updated by the modding community. While most links to the GECK wiki are to the official wiki, be sure to check out the Community one to see the latest info on your topic. Anything related to "Script Extenders" like NVSE or JIP LN NVSE functions will be more current on the Community GECKWiki site.


Image Tools

  • Category:Tools on Nexus Mods wiki has articles on various aspects of the primary tools you will be using. Check it out as well.
  • 3DS Max (1 month free trial, $185/month or $1470/year subscriptions, 3 yr student/educator license.) Commercial product by AutoDesk but the version that works with Nif files isn't free. Versions after 2013 don't seem to work with at least Fallout 4 (according to this thread) using the included official NIF exporter, though there is an unofficial "Figment" exporter plugin fork on GitHub which does seem to work.
  • Blender v2.49b (freeware.) This download includes ALL related files and compatible versions. This is the "complete" package for creating meshes for Bethesda games; including:
Python 2.6.5
Blender NIF Scripts 2.5.5
NifSkope 1.0.22
PyFFI 1.1.5
"Noob to Pro" PDF tutorial.
Check out the "Optional" files section for some additional functionality. Recommended for FO3/FNV.
  • Blender v2.49b Portable by Room207 is also a "complete" package that is preferred by some for it's convenience and because it is patched so that vertex normals won't be regenerated when going into edit mode, which is one of the reasons why a neck seam is produced. Includes:
Python 2.6.6
Pyffi 2.1.11
NIFscripts 2.5.9
True Normals by Anthony D'Agostino
Geom Plugin 0.5
Mesh Ascii Plugin
UDK Scripts
Blender Tools 1.01 by Kormgar
Blender TRI file scripts and Tutorial by Kapaer and Deedes
  • DXTBmp Texture Tool (freeware). Images can be passed to any Paint program for editing in 24 bit and then re-imported and saved in any of the 16/24/32 bit formats. Transparency (Alpha) channel of textures can be viewed and edited separately from the main image.
  • GIMP: GNU Image Manipulation Program (freeware.) A cross-platform image (texture) editor available for GNU/Linux, OS X, Windows and more operating systems. Provides extensions through integration with many programming languages including Scheme, Python, Perl, and more. The result is a high level of customization as demonstrated by the large number of scripts and plug-ins created by the community.
  • Hairs - Eyes - Races Auto - Patcher (Mod.) Extracts all the hair / eyes / races records from every plugin loaded in your load order - then, it rewrites the list of eyes and hairs for every race found. So, if you untick / unflag a hair mod from your load order, these records won't be loaded by the game itself and consequently won't be found by this mod because they don't exist.
  • Inkscape Vector Graphics Editor (freeware). Open source flexible drawing tools, with broad file format compatibility, powerful text tool, and bezier and spiro curves.
  • LOD/VWD Overview TESTG site wiki.
  • Maya (1 month free trial, $185/month or $1470/year subscriptions, 3 yr student/educator license.) Animation, modeling, simulation, and rendering software by AutoDesk.
  • MindTex2 ($20) by Frozen Flame. MindTex is a normal map generation utility for game developers and 3d professionals. Built to rival the competition in quality without the steep price, whether you want to generate a normal, height, specular, gloss, self-illumination, occlusion, or reflection map, you can easily do it in seconds flat from a single source texture with MindTex.
  • Mod Kit - Resource for Modders by pixelhate. Some nif & textures used as references in various Modding situations, including the "invisible activator".
  • NIF tangents and binormals updater (freeware) by zilav. A command line tool to batch update tangents/binormals in Oblivion, Fallout 3, New Vegas, Skyrim, Skyrim Special Edition and Fallout 4 format NIF meshes. The one in NifSkope doesn't handle degenerate normals, such as if your NIF has a lot of texture tiling. It also gives all around better results especially for people who use Blender and cannot reset the normals and smooth them because it lacks the features to do so.
  • NifSkope (freeware.) A graphical program that allows you to open NIF files, view their contents, edit them, and write them back out again. You can use it to quickly make changes to specific properties of a NIF file such as changing the texture, adding translucency, and more. A 3D view of the contents of the NIF file allows you to preview your changes instantly. You can even create texture templates, and import & export OBJ files. (Note: This link is the latest release and may not be the best choice for FO3/FNV. A fully compatible version of this tool (v1.0.22) is already included in the Blender v2.49b package linked here.)
  • NifSkope v1.3.3 (revision36efdd) (freeware.) A later version than that bundled in the Blender v2.49b package (with EXE and features referred to in many tutorials that are missing in even newer (v2.0+) releases, such as "import/export .OBJ files"). Fully compatible with that Blender package, and more "shader flags" are identified. While both versions of NifSkope can be installed, only one can be used at a time. Recommended for FO3 and FNV (along with the NifTools XML Format version 0.7.0.0, which has the essential "differentiated color for Collision"). Recommended for FO3/FNV.
  • NifTools Wiki (freeware.) 3D package plugins for 3ds Max, Blender, and Maya modelling tools. Note: this link will have the latest release versions. The versions bundled in the Blender v2.49b package are all mutually compatible.
  • The NifTools XML Format (documentation.) Used to extend NifSkope to open files from new games, or better understand files from games which it can already open. Version 0.7.0.0 recommended for FO3/FNV.
  • Paint.NET (freeware.) Image and photo (texture) editing software for Windows, originally based upon the Paint program included as part of Windows, but with many enhanced features such as "layers", special effects, and unlimited history ("undo"). Require Microsoft's .NET Framework 4.6+.
  • Available operations (initial release):
  • Update tangents and binormals - recalculate tangents, binormals and optionally normal vectors in shapes using modified Unity's code.
  • Search and replace assets - perform search and replace on assets paths (textures and other referenced files) in meshes
  • Convert strips to shapes - the same as Triangulation spell in NifSkope
  • Attach parent NiNode - the same as Attach Parent in NifSkope applied to NiNode or it's descendants with defined name
  • Jamilla's anim thing - no idea, made by request
  • Weijiesen's blow up thing - no idea, made by request
  • Copy anim controlled blocks - copy missing controlled blocks between *.kf animation files
  • Update parallax settings - change parallax values in shaders
  • Update MOPP code - update MOPP collision code with the proper working one

Packaging Tools

  • BAIN Archive Tools - BAT by Surazal
  • BSArch (freeware) by zilav. A command line tool for packing and unpacking Bethesda archives. The most complete support setting the correct flags across the various games.
  • BSAOpt (freeware) Tool for extracting the contents of BSA files. Note this tool unpacks the entire BSA file. It does not easily allow for unpacking a single file.

(See the Skyrim thread BSAs and You for details about the pros and cons of "Bethesda Software Archives" (BSAs), but bear in mind such files in previous games, like Oblivion, FallOut3 and Fallout New Vegas, don't have "strict order" like in Skyrim. Games prior to Skyrim don't support overriding of assets in archives using other archives; only loose files can. If the same resource is contained in several BSA archives, those games won't use it from the last BSA on 100% of occasions. They may grab the resource from a random one of the BSAs containing the same file.)

WARNING! Do not unpack BSAs directly into your game "Data" folder; potentially overwriting any mod files. The tools don't ask you to confirm the overwriting, either. All the hair textures unpacked to "loose files" will go through the head models in that case; because that's what happens when hair is not packed in a BSA. "Best practice" is to unpack to a unique folder (they are large: 1-2GB) and manually drag the desired files to the appropriate "Data" folder as needed.

  • BSAExtractor (BSAE) (freeware) Tool for extracting just one or the entire contents of BSA files. See warning above about unpacking an entire BSA.
  • FNV BSA Decompressor Mod by zilav. Decompresses the Fallout New Vegas BSAs and repacks them into BSAs without zlib compression for performance. Also transcodes the ".OGG" sounds effects to ".WAV" format so they work. It also extracts any MP3 files to loose files because they will not play when in a BSA.
  • FOMM - Forked (freeware) Mod Manager with built-in BSA file extraction and repacking.
  • Note that FOMM has several tools bundled with it. The TESsnip tool in particular is obsolete and has been shown to cause "silent corruption" of save game files as a result. The use of xEdit/FNVEdit is recommended in it's place.
  • FOMM and FOMODS for Dummies article.
  • FOMOD Validator by Ganda

Scripting Tools

  • CIPSCIS Script Validator (freeware.) Allows you to quickly indent your script while simultaneously checking it for several basic errors, many of which are not picked up by the GECK's compiler. It works with Skyrim, Fallout 3, and Fallout New Vegas, but is not "script extender" aware. Includes it's own tutorials.
  • New Vegas Script Extender (NVSE) Site.

Sound and Voice Tools

Misc Other Tools

  • DarNified Forum Community site. Articles and questions on XML for the User Interface (UI) and Menus, primarily about the Oblivion version of DarNUI but there is a section for FO3.
  • Gamesettings profiler Mod. Adds intuitive, app-like, modding tool for debugging, testing, profiling, and dumping\printing to file any numeric GMST (gamesettings) records.
  • Tree LOD billboard creator for xLODGen by zilav
  • xEdit/FNVEdit (freeware.) A generic tool called xEdit which is renamed for working with specific games. The latest "stable" release is on the Nexus, generally under the game name version or as "TES5Edit".

Details

Basic advice is to start with the game Construction Set/Editor (this is usually a separate, free download, not included with the game installation). There is going to be a wiki page for it with tutorials to help get you started, but note that there are unspoken assumptions that you are familiar with concepts introduced on the "Construction Kit"/"game editor" wikis for earlier Bethesda games such as:

(TES5: Skyrim came after all of those (2011) and uses a different variation of the game and script engine.) So, don't neglect those older wikis as resources. Where there appears to be a conflict, assume the later wiki or the one specific to your game is correct.

In addition to the Construction Set/Editor, you'll probably want to get community created editor enhancement tools, like the GECK "Extender" or "PowerUp", "Oblivion Construction Set Extender", etc. These allow you to perform actions not included in the default editor, like edit ESM files without converting them to ESP first, and may also give you better debugging for scripts. These capabilities vary by the tool. On the negative side, such extensions may also annoy the heck out of you with error messages, many of which you don't need/understand and don't care about. But they are always worth looking into.

There are also conversion tools which are required to export the 3D models from your modeling tool into the "NIF" format that Bethesda games use. It is very important to note that the import and export tools only work with certain versions of modeling programs. For Blender, you need version 2.49, which is older than the current version of Blender. The Nexus Oblivion mod Blender linked here is a package that has Blender v2.49 plus all of the NIF tools and includes NifSkope, all of which are the correct versions to use together. You will save yourself a lot of trouble if you install everything from this one package. If you don't, you can run into version problems and things will never work right. Instructions on the correct way to install this combination of tools can be found the wiki article here. (Note where there seems to be a discrepancy in version numbers, stick with the version included in the package.)

"Script Extenders" (SEs) are plugins to the game editors that provide additional functionality features, and were created by the gaming community to overcome perceived shortcomings. Mods the use even one of those SE functions need to specify that the particular SE is now a requirement.

Item (armor, weapons, buildings, etc.) construction and customization requires learning 3D modelling, which is NOT a quick process. You are going to invest a lot of time and patience in learning your tool of choice. The three most common tools used are Blender, "3ds Max" (aka "Max"), and Maya. There is very little discussion about Maya in the forums related to Bethesda games because while it is considered the better choice for animation, "Max" is simpler to grasp and less daunting. Both "Max" and Maya are considered "industry standard" tools, and both will do the job. See these articles for more in depth comparisons if you are going to invest in learning either product:

The Nexus has the Software Programs - 3D Modelling - Blender forum, Software Programs - 3D Modelling - 3ds Max forum, Software Programs - 3D Modelling - Maya forum, and Software Programs - 3D Modelling - Miscellaneous / Other forum areas for discussion about those tools.

The "workflow" on Blender for Nif files is considered more complex than with the others because it often takes you into the Nifskope tool, but read about the Nif Exporter plugin for Max issues in that entry. It is necessary to use the correct version and tools that work with that version of any of these products.

Because it is "free" and the others are quite expensive for most people, Blender is usually at least their first choice. "Blender Noob to Pro" is a good resource for 3D modeling using Blender, and the compatible (not the latest) version is included in that package linked above under Programs and Tools. Consequently, there is a long history of tutorials on all aspects of modelling with Blender. It is well worth the time to refer often to the Blender - Read this first thread as you progress through the learning curve. It has an extensive list of tutorials from Oblivion thru Fallout 3 and more generalized topics which still apply to the basics of modelling in Blender.

For texturing your 3D models, you'll need something that can handle ".dds" files. GIMP and Paint.Net (which is not the Paint that comes with Windows) can both handle ".dds" files. Paint.Net comes with ".dds" support built-in these days. GIMP still needs a plugin. Which program you use is more a matter of personal preference than anything else. Some find GIMP a bit more difficult to use but it also can do some things that Paint.Net can't do. Paint.Net on the other hand is, in the opinion of many, more intuitive and easier to use. Although, now that Paint.Net has a proper normal map generator that actually works available as an add-on, GIMP use tends to be even less frequent now. A lot of it is personal preference, though. Some folks just like GIMP better. Both programs work fine. You can also use Photoshop, but that's not free.

Once you have the 3D model textured (UV mapped) and maybe have generated a normal map for it as well, then you need to export everything. First, read the Working with DDS/DXT Files article by Gary "Buckaroo" Neely to understand the choices in DXT codec to choose among. Blender and the NIF tools don't export a lot of things properly, so then you have to go into NifSkope (which comes with the NIF tools) and fix it. (The proper weight of "bones" in skeletons, along with "shader flags", is almost always wrong, for instance.) Be sure to check that the path given in the mesh to the texture file is in "relative" format. (See How to fix hard-coded texture paths in NIF files.) The default format of the mesh editor's paths may not be "relative".

Once that is done, then go into the game specific Construction Set/Editor and add your custom items to whatever mod you are working on.

Getting back to the GECK, there are a few things that are broken in it. It ships with a spell checker but doesn't include the dictionary, so that's just annoying. (But you can use the language resource files from Fallout 3 as the dictionary.) If you use the GECK "Extender" or "Powerup" you can uncheck the spell checker and disable all of that annoyance at least while you are editing your mod. Unfortunately it won't remember that setting and you'll have to uncheck it the next time you edit your mod as well.

Another thing that is broken is the "lip generator" for dialog. If you have Skyrim or Oblivion you can copy their lip generator from the "sound\processing" folder to GECK's. If you have all of your voice files in place and they work already, in the GECK all you need to do is bring up that dialog in the quest editor. Your WAV file should show up down near the bottom, where it says voice type: MP3, WAV, LIP, LTF, and "path". Click on that to select it, then click on the "from WAV" at the bottom. The "generate lip file" option should now become active and you can click on it. Note that the GECK will not update the information on the screen, so it will still have an N under LIP file even after you have generated it. Close that dialog option and re-open it and then you should see a Y under both the WAV and the LIP. If you record the voice files directly into the GECK (using the record button at the bottom of the dialog window) then when you press save it will automatically generate both the WAV and the LIP files.

Common Problems with GECK

Issue - Where to obtain the GECK

  • Cause: The Construction Kit is a separate download and not automatically installed by Steam. (It is with the GOG DRM-free version.)
  • Solution-1a: You can download the "GECK. - New Vegas Edition" through Steam. It's under the "Library | Tools" tab in the Steam launcher.
  • Solution-1b: Download from the following links:
  • Official GECK Wiki by Bethesda Softworks.
  • GECKWiki Community maintained (more up to date) version of GECK Wiki.
  • FNV 4GB Patcher by Roy Batty - LuthienAnarion. Sets LAA flag specifically to work with Steam versions of FNV and GECK.
  • Recommended: The community developed optional NVSE plugins supplement the GECK, and are considered essential due to the error fixes and additional diagnostic messages (especially for scripts that won't compile) it displays. They require you to launch GECK with NVSE in order to function.
  • Script compiler warnings will now be displayed. Scripts will no longer silently fail to compile.
  • Many other warnings were restored: in cell loader, in NavMesh checker, and so on, more than in 1000 places. [back for testing in 0.1.7.1 beta 1]
  • Adds a special Marker hack which makes RoomMarkers and PortalMarkers visible and transparent in the render window [since 0.1.3].
Unfortunately, cannot make them completely invisible as they should be, but it's better than having to move them all away just to see the cell.
  • You can now save scripts without compiling them (useful if you want to save your script and finish it later).
  • The spell checker can now be enabled and disabled at runtime.
  • Fixed the bug which caused the GECK to crash when user double-clicks on empty space in Form List Editor.
  • The "Edit" menu item in Form List editor will now work.
  • All MessageBox'es will now be in English, regardless of your system's language. This also means that "Cancel" will be replaced by "Yes to all" where intended by GECK developers. [since 0.1.2]
  • ESM are now active and editable directly.
  • ESP used as masters will remain in the masters list.
  • ONAM records in ESM will be preserved. No guarantee new required ONAM will be added. When in doubts, use FNVEdit to update the ONAM records.
  • Enables level 2 LOD generation for large worldspaces
  • Fixes bUseMultibounds = 0 crashes in cells with multibounds
  • Extends GDI handle limit: This cleans up opened windows better when closing them so you can edit for long periods without fear that you won't be able to save your plugin because the GECK can't open any new dialog windows.
  • Help links point to new community maintained wiki: GECKWiki.

Issue - GeckCustom INI file

TIP - Disable Audio in GECK

TIP - Enable loading multiple master files at once

TIP - Enable more than one copy of the GECK
(or both the FO3 and FNV versions).

TIP - Enable MultiBounds
Thanks to pixelhate of the Nexus Fallout "Mod Talk" forum for the basis of the following:

TIP - Load ENB Series with GECK

TIP - Master files
Thanks to madmongo of the Nexus Fallout "New Vegas Mod Troubleshooting" forum for the basis of the following:

Issue - GECKPrefs INI file

In the "Users" game folder, along with the three INI files generated for your game is the GECKPrefs.INI file. This file gets created when you first start using the GECK, and saves any customizations you make to it's interface (e.g. such as if you change any values for the "map editor" color masking).

The problem that can arise is when your changes don't work out as you intended and you wish to revert to the default values. There is no built-in mechanism to restore the defaults in that file, nor is there a file for the GECK to refer to similar to the "Fallout_default.INI" file. (There may be a "reset" button in the GECK window, but it only affects the current edit session: resetting to the values in effect when the window opened.)

Therefor: it is your responsibility to make a backup of either the initial or your stable customized version of GECKPrefs.INI so you have the default values to refer to. Otherwise, all you can do is delete (or rename) the file and let GECK rebuild it the next time it starts.

Issue - How to get GECK to load with NVSE

  • Cause: "New Vegas Script Extender" is an addon library of functions developed after GECK was "finished", so it doesn't know about the extensions. Without including NVSE, use of commands from that or the older FOSE (which is incorporated) extension will produce script errors of "unrecognized command" preventing compiling and saving them.
The GECK Extender NVSE Plugin with the Optional "Patcher" to make GECK 4GB aware and auto load NVSE is recommended. (Do not use together with GECK Powerup (nor the Forked version), which it replaces.)
While the GECK 1.4 PowerUp for Fallout New Vegas addon comes in both "standalone" and NVSE plugin versions, that does not mean that NVSE is automatically loaded as part of the GECK itself, so it doesn't otherwise recognize those extensions. The suggested method is to use the NVSE Plugin version of PowerUp when also loading NVSE. Then it will automatically be included when your shortcut points to the "nvse_loader.exe". (Replaced by GECK Extender. Do not use both together.)
Note you must launch GECK as an "Administrator" account: no matter if you are also loading "Extender", "NVSE", or the "GECK Power-Up StandAlone"; or only GECK.
  • Solution (for Powerup only):
  • Create a Windows shortcut to the GECK. Name it something to reflect this is for the GECK + (PU or/with NVSE) (e.g. "GECKPU+NVSE").
  • < Right-click > on the shortcut and select "Properties | Shortcut".
  • To load "NVSE" (with or without plugins such as PowerUp or GECK Extender), in the link shortcut "Target:" field put the complete path to the nvse_loader, and include the "target command line":
in double-quotes (because of the embedded spaces in the path.) The "-editor" must be placed outside of the double-quotes of the path so it will be recognized as a "parameter" of the executable.
  • If you use the "Power-Up Standalone" version 0.1.6 or later, in the "Target:" field put the complete path up to and including the target command line:
(This is a change from previous instructions for "Power-Up", as documented in the PU "ReadMe" file.)
  • Select the "Advanced" button on the same "Shortcut" tab, and enable (check) the box "Run as administrator" on the window displayed.
  • Click the "OK" button until the shortcut window closes.
Note that if you add this shortcut to "Steam", it will initially strip off the "-editor" parameter. Be sure to double-check the "Target" within "Steam" for the presence of this parameter.
  • Select the "Advanced" button on the same "Shortcut" tab, and enable (check) the box "Run as administrator" on the window displayed.
  • Click the "OK" button until the shortcut window closes.

Issue - GECK Power-Up or NVSE cannot find GECK

  • Cause: You must launch anything to do with GECK from an "Administrator" account.
  • Create a shortcut, and on the "Properties | Advanced" tab enable (check) the "Run as administrator" box. This will cause you to automatically be prompted to enter a valid Administrator account and password each time you try to run the command so you won't forget.
NOTE: The GECK Extender, which should be used instead of the "GECK Power-Up", includes an optional patch as a separate file to make GECK "4GB aware" and auto load NVSE.

Issue - GECK automatically loads unwanted DLC Masters

Issue - Where to start in creating mods

  • Cause: The GECK is only part of what you need to create mods, and it doesn't have a training manual.

Issue - Where are the Warnings and EditorWarnings text files

They are supposed to be in the game root folder (where the FalloutNV.exe is found).

  • Cause: It appears that Bethesda dropped these output files after FO3.
  • Solution: Instead, the "GECK Power Up" and "GECK Extender" plugins have now provided that functionality. Try setting NVSE to report them.
  • In Data\NVSE\nvse_config.ini, set:
  • In Data\NVSE\nvse_plugin_geckpu_ew.ini there is a "[WARNINGS SELECTION]" followed by a list of hex offsets. Each offset is set to a reporting level, as described at the top of that file. The default (=1) is to both display the warning in a "MessageBox" in the GECK and write it to file. When the nvse_config.ini LogLevel is set between "2" and "5", the warnings are written to the nvse_plugin_geckpu_ew.log file in the game root folder (where the FalloutNV.exe is found).

Issue - GECK crashes upon editing a weapon

"Every time I attempt to use the GECK to edit a weapon it crashes, even when only the main NV master file is selected." This also occurs when "Fallout Character Overhaul" (FCO) is installed.

  • Cause-1: GECK needs to have the LAA flag enabled in order to take advantage of more than 2GB of memory.
  • Solution 1-b: The GECK should also be patched to use up to 4GB of memory (i.e. FNV 4GB Patcher, the NTCore 4GB Patch or their more general CCF Explorer, or the like).
  • Cause-2: This has been traced to the presence of a specific file that is overwritten by "Fallout Character Overhaul" (FCO): eyebrowm.nif in: Data\meshes\characters\hair.
  • Solution-2: Remove the troublesome file when using GECK, and restore it when playing. If you put it into a batch (.cmd) file such as the following to launch GECK you won't forget.
@echo off
cls
::REM As GECK has to be run from an 'Administrator' account, you should launch it from a
::REM   shortcut (.lnk file) that has that "run as" setting in the 'Properties'.  This will
::REM   be run in a separate sub-process window.  Otherwise the 'start' command won't WAIT
::REM   until GECK is done before continuing with this script.
::REM Change the 'set runpgm=' line to point to your GECK shortcut.
set runpgm=C:\Users\Public\Rec\FalloutNV\GeckPU.lnk
::REM Change the 'set gamedir=' line to point to your game install folder.
set gamedir=E:\Games\SteamLibrary\steamapps\common\Fallout New Vegas
::REM Nothing else below this point should need to be changed.
set tgtdir=%gamedir%\Data\meshes\characters\hair
 
pushd "%gamedir%"
if exist "%tgtdir%\eyebrowm.nif"  ren "%tgtdir%\eyebrowm.nif" eyebrowm.nif.hld && @echo SCRIPT: Removed file [eyebrowm.nif]
 
@echo SCRIPT: Manually close the separate window GECK is launched in.  When you do, DO NOT
@echo SCRIPT:   select to 'Terminate batch job' (answer "N") or you won't restore files properly.
start "GECK" /D "%gamedir%" /WAIT cmd /k "%runpgm%"
if exist "%tgtdir%\eyebrowm.nif.hld"  ren "%tgtdir%\eyebrowm.nif.hld" eyebrowm.nif && @echo SCRIPT: Restored file [eyebrowm.nif]
 
:DONE
pause
popd
  • Cause-3: If the GECK seems to "hang" while loading your plugin, this may be due to failing to select other plugins your target plugin requires as "masters", but which are not ESM files and/or not automatically included by GECK.
  • Solution-3: You can use the xEdit/FNVedit "File Header" to identify all the files that are masters to your plugin, and then be sure to select all of them when loading it into the GECK. Please see the wiki Missing Masters article for details.

Issue - GECK crashes upon loading an exterior cell

Sometimes, after initially creating an "interior" cell, upon trying to work on an "exterior" cell, the GECK crashes when the cell tries to load.

  • Cause: Unknown
  • Mitigation-1a: Make sure you have patched the GECK to be able to use 4GB of memory. The GECK Extender mod includes a separate file download that does this. Some have found it necessary to use the third-party tool 4GB Patch - NTCore instead.
  • Mitigation-1b: Anything in the meshes/textures folder will also load in the GECK. A modded mesh could be causing your CTD. You might find it advantagious to keep different "profiles" or copies of the game "Data" folder (depending upon your "mod manager") so your GECK work "Data" folder only contains the essential files for your mod.
  • Mitigation-1c: Try to avoid loading an exterior cell directly. Instead: load up an "interior" cell, then use a "door teleport" to cause the GECK to load the "exterior" cell (indirectly) for you. This seems to avoid the CTD.

Issue - GECK crashes upon starting

  • Cause-1: You don't have the correct permissions for running GECK.
  • Solution-1: GECK must be "run as administrator".
  1. Navigate to the program folder of the program you want to run (i.e. FalloutNV game root folder).
  2. Right-click the program icon (i.e. the "Geck.exe" file).
  3. Choose Properties.
  4. On the Compatibility tab, select the "Run This Program As An Administrator" option.
  5. Click OK.
  6. If you see a "User Account Control" prompt, accept it.
Now each time you run GECK you will be prompted to enter an "Administrator" account password. If you enter it wrong, GECK won't start.
  • Cause-2: There is not enough available memory in the default 2GB allocated for 32-bit programs. GECK needs to have the LAA flag enabled in order to take advantage of more than 2GB of memory.
  • Cause-3: GECK seems to be overly sensitive to the correct "system compatibility" mode when run on versions of Windows after Vista SP2.
  • Solution-3: Set the "Properties | Compatibility tab" to "Run this program in compatibility mode for: Windows Vista (Service Pack 2)" for both the GECK.EXE and the (PowerUp) GECKPU-NV-14.EXE files.
  • Cause-4: You installed an ENB or the pre-ENB "enhanced shader" mod containing a custom D3D9.DLL file placed in the game folder. The GECK tries to load all of the DLL files it finds when it starts, and it doesn't know what to do with that one: so it crashes.
  • Solution-4: Put the D3D9.DLL file somewhere outside of the Fallout game root folder whenever you want to run the GECK. Make sure to put it back before you start your game; otherwise it will not load. (A "batch file" to handle this that is run when you click on the link to start the GECK is the best way to avoid forgetting this. See Issue: GECK crashes upon editing a weapon for a similar example.)

Issue - GECK crashes upon switching to a different tool

Upon switching from a current operation (e.g. selected an interior cell in the Render Window) to another operation (e.g. "World | Object Palette Editing" or editing an "AI Package") the GECK crashes. The problem is not consistent: erratically occurring.
  • Cause: Unknown. Reported by Vista users as far back as 2008 with FO3 version of GECK.
  • Workaround: Disable the Windows "Tablet PC Optional Components" found under 'control Panel | Programs | "Programs and Features" | "Turn Windows features on or off'. Click the "OK" button and restart Windows. The exact location of that setting may differ in other versions of Windows. This may also be related to enabled "infrared" device settings when there are no such devices in use.

Issue - GECK does not automatically select FalloutNV or some DLC ESM file

Normally, when starting GECK and opening the "File" menu it has automatically "checked" (enabled) the DLC ESM files for loading, but not the "FalloutNV.ESM".

  • Cause: This is controlled by the presence of the "*.nam" files, which by default are present for all the DLC (but not for "FalloutNV.ESM"). If any are not found, that DLC is not automatically selected (enabled) either. These files cause the game to load those DLC even if they are not "active" in the "load order". (It is recommended you rename rather than delete them if you don't want a particular DLC to be loaded.)
  • Solution: The "nam" file contains nothing more than the common name (i.e. "Dead Money") of the respective DLC. When a plaintext "FalloutNV.nam" file (which does not exist by default) with "Fallout New Vegas" as content is created, "FalloutNV.ESM" will be automatically checked (enabled) in GECK's "File" menu just like the DLC.

Issue - GECK does not show Landscape

  • Cause: There is a barely mentioned "shortcut key" combination that toggles the display of Landscape in the "Render Window" when you have an "exterior worldspace" loaded. It does not appear in any menus so it is usually an accidental toggling.
  • Solution: <Shift+L> will toggle the display of the Landscape. (Thanks to VenonXNL for reporting the solution to this "mystery".)

Issue - GECK hates me in general or how to get started working with it

  • Cause: The GECK is frustratingly buggy. It is not intuitive to use. The GECK website makes assumptions that you understand concepts introduced in earlier game Construction Kits (CKs).

TIP - Fallout New Vegas Game Engine Bug List

Issue - GECK will not tell me what is wrong with my script

  • Cause: The GECK does not report problems with scripts, and won't allow a script with errors to be saved.
  • Solution-1: the GECK Extender Plugin re-enables 1220+ Warning, Error, and General messages, in addition to providing more verbose messages and fixing many bugs. (Do not use together with GECK Power-Up (nor the Forked version), which it replaces.)
  • Solution-2: the GECK 1.4 Powerup Plugin comes in a "standalone" version for the "vanilla" GECK functions, and one for GECK with NVSE functions. It fixes and improves some issues while providing the missing messages when the GECK compiler finds an error or warning, and lets you save a script without compiling it. Considered "essential" by mod creators. (Replaced by GECK Extender. Do not use both together.)
  • Solution-3: The CIPSCIS Script Validator allows you to quickly indent your script while simultaneously checking it for several errors, many of which are not picked up by the GECK's compiler. It works with Skyrim, Fallout 3, and Fallout New Vegas. Includes it's own tutorials.

Issue - GECK is missing text in some fields

GECK seems to be missing the text associated with certain columns of AI Package, Dialogue, Effects, and Perks (possibly others) information (Editor ID, Topics, etc.). Typically this is a "list box" type field on the form.

  • Cause: This occurs in the GECK for both "Fallout 3" and "New Vegas". The problem originally appeared following the installation of Microsoft Knowledge Base article 3000850 (a Win8.1 "rollup update"), was fixed by rolling back that update, but then the problem got "baked in" to Win10. The issue causes the column's right border to be shifted to the far left of the field so the column text is not visible. (See the GECK: Collapsed Text Field.
    GECK: Collapsed Text Field Figure
    Click the link/thumbnail to see the enlarged image. Use your browser "<back page>" control to return to this page.)
  • GECK Extender Solution: Intended for Windows 10 users (no reports on how effective it might be for older versions) the geckextender.ini file has the "[General]" option bListEditFix disabled by default. Set to "=1" to enable.
  • Solution (Partial): This "fix" seems to stick only so long as you do not open an AI Package. Switching between Perks, Effects, and Dialogue condition columns work perfectly if you don't open an AI Package's conditions; but then ALL condition columns become squished for any form you open. The next time you start a GECK session, all will be fine again; but once you open AI Package's conditions the bug remains for the session until you implement the "temporary" or "workaround" solutions in each form.
Set "compatibility mode" for the GECK to "Vista SP2" or "Windows 7 SP 1". (Either seems to work as well.) For example: Right-click on your GECK-NVSE shortcut or the GECK executable directly, chose the Properties | Compatibility tab, Change settings for all users, and select Windows 7, and hit OK. Load up the editor and things should look normal for the first time since upgrading to Windows 10. (See the GECK: Expanded Text Field.
GECK: Expanded Text Field Figure
Click the link/thumbnail to see the enlarged image. Use your browser "<back page>" control to return to this page.)
GECK: Expanding Collapsed Text Field Figure
  • Temporary Solution: Place the mouse cursor in the top left corner of the "blank" field that is missing text until it changes the cursor shape into a "split cross" (column resize) cursor. (See GECK: Expanding Collapsed Text Field. Click the link/thumbnail to see the enlarged image. Use your browser "<back page>" control to return to this page.) Left-click and hold while dragging to the right, and the missing text should be displayed. Continue dragging to the right until everything is shown or the mouse cursor is no longer the "split cross" shape. When you release the mouse button the display field should be corrected. However, this "fix" may not be persistent from one GECK session to another.
  • Workaround: there is a Windows "hotkey" for expanding all columns in the currently active window of Windows Explorer and some programs (including GECK).
  • First you have to select a field with the problem (i.e. the "Conditions" field in the GECK: Collapsed Text Field) in the displayed GECK window,
  • Then press "Ctrl" and the "+" key on the cursor/number-keypad. (The "+" key on the regular keyboard won't have this effect. See GECK: Expanding Collapsed Text Field. Click the link/thumbnail to see the enlarged image. Use your browser "<back page>" control to return to this page.)
Now all columns should be expanded fully by themselves. (See the GECK: Expanded Text Field. Click the link/thumbnail to see the enlarged image. Use your browser "<back page>" control to return to this page.)

Issue - GECK Render Window shows a large gray square in new world space

Created a new world space and set WastelandNV as parent, using land and map data from the parent. Everything seems to be working fine except for a huge gray square covering most of the render window when trying to view the new world space.

  • Cause: The gray square is the water table.
  • Solution: Go to your 0,-0 point, zoom past the gray till you can see your land, and then add a static. Close, save, and then open your world space in GECK again and your land surface should now be visible.

Issue - How do I configure the GECK to do something


GECK and the Active File

Ever since Windows version 3 on a 386, programs have standardized on "File | New" or "File | Open". But not the GECK. This is your first introduction in how un-intuitive the GECK is. It truly is a miserable toolset.

The "active file" is just the file that you are currently editing. Unfortunately, this gets confusing in the GECK.

The way you create a new plugin (ESP) file is you:

  • Open up the GECK,
  • Click "Data",
  • Select any "master files" you want for your new ESP file.

At this point you don't have an active file for editing. But if you are creating a new file, that's what you want to do (yes, it makes no sense). At a minimum you need to have Fallout.ESM selected as a master. The GECK will load the master files (which are usually but not always with an ESM extension), and then you can make your changes, and when you select SAVE, then the GECK will finally prompt you for the name of your new file (which will usually have an ESP extension). Now that you've created a new file, this is your "active file" for this session. Any more changes that you make will all be saved to the same file.

TIP GECK can isolate records in a particular plugin

Thanks to madmongo of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP Limit to Mod Size

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Save often

Still the GECK seems to crash if you breathe heavily on it. It really sucks to open your plugin one day and find an entire town you spent a month on, gone: not a brick left and no aliens with probes in sight.

Once you have a file saved, if you want to edit that file later, you just select the files you want to load and make that your "active file" and start the GECK. When you save, all changes will go into the "active file" that you selected. Let's say you want to add resources from another master file to your plugin, like say, from Honest Hearts. If you are creating a new file, you'd check Fallout.ESM and HonestHearts.ESM, but you wouldn't select any active file. Later, when you save, you will be prompted for a new plugin filename that will become your new active file.

Let's say you already created a plugin, but you didn't include Honest Hearts initially, and now you do want to include it. Open the GECK, select "Data", make your plugin the "active file", and also check the HonestHearts.ESM. Once the GECK is up and running, as soon as you save any changes, your plugin will now include HonestHearts.ESM as a "master file", which it will require to be loaded thereafter.

Once you've added a "master file" to your plugin, you can't easily delete it. Well, you can, all you need to do is right click and press "Delete" when you start up your plugin in the GECK, but if you aren't very careful about exactly how you do that, you will completely destroy your plugin and render it unusable. There are ways to remove "master file" requirements in your plugin, but since you are just beginning with the GECK, assume for now that any "master files" you add are needed there forever.

The GECK will let you load multiple ESP files, but where any ESM "master files" that become requirements for your plugin are loaded automatically, the same isn't true for ESP files your plugin becomes dependent upon. Don't add resources from a different esp to your plugin, because that doesn't work. You can only add things to your plugin that come from master files, or things that your plugin adds on its own. There are ways around this, but again, that gets pretty advanced.

GECK Form-ID Base-ID Ref-ID and Editor-ID

An Editor-ID (sometimes called a GECK ID) is a text identifier used to reference persistent objects. It functions similarly to a Form ID, although it is not limited to 8 characters and a hexadecimal character set. It exists for the human user of GECK. The game engine itself is only concerned with Form-IDs. There is a direct "one-to-one" correspondence between an EditorID and a Ref-ID, but for the human only. (Editor-IDs are primarily used to identify objects in the Object window [the left pane of the GECK].) The game engine needs and only recognizes the Form-ID in commands, but they can also be used in scripts along with Editor-IDs. See the GECK Reference page.

Whether you create your own new object or copy and rename an existing one, you want to give it an "Editor-ID" (the human consumption one) that will enable you to quickly locate yours in the Object window.Refrain from beginning the Editor-ID with numbers. While this will tend to sort the name high in the list of objects, GECK will confuse such names with Form-IDs, which it won't find. Most experienced mod creators use a short common prefix, such as their initials or those of the mod, as the way to group their objects. Whatever naming convention you use, it must be unique and not too closely matching that of other mods to avoid confusion.

A Form-ID is anything specific to an object: whether it be Base or Ref. It is a more general term for both.

"A BaseID (or Base ID) is a FormID assigned automatically to an object by the GECK when a new object is created in the Object window. The Form IDs listed in the Object window are Base IDs. A Base ID is only associated with an object template in the editor, never with an instanced object in-game" - GECK glossary.

"Base ID is the number assigned to a template for an object that is used to create many instances of that object. For example all bottle caps in the game have exactly the same Base ID. This ID is used in scripts or the console with commands that create new instances of an object, like additem or placeatme." - Form-ID on The Vault wiki. You could think of it as the "parent" of each "child reference". Any change made to a Base-ID affects every reference back to that Base-ID. Which is why you need to make a "copy" of a Base-ID and change it's Editor-ID (which forces a change to the Form-ID) when you need to make a variation of an object. Otherwise you are changing ALL instances of that object in the game. (Don't try to change a Form-ID directly yourself. Let the GECK handle it.)

Base forms (another way of referring collectively to "Base-IDs") are fine to use in scripts, by the way. They're just used in different situations by various functions. For example: The StopQuest function will always operate on the base form of the quest. The same with anything involving Form Lists. But you wouldn't want to use a base form when you only want to affect a specific instance ("reference") of an object. AGAIN: Actions on a base form affect ALL instances of that form.

"A Reference ID is a FormID assigned automatically to a Reference [instance] by the GECK when an object is placed in the Render Window [in the right pane of the GECK]. Reference IDs are required to uniquely identify each instance of an object in-game. The Form ID column of the Cell View window lists Reference IDs" - GECK Glossary.

"The Reference ID is the unique ID of an individual object (unlike the Base ID, which is an ID for an object template). For example, all the bottle caps created from same Base ID will have different Reference IDs. This ID is used to manipulate existing objects with commands like kill, move to, or prid, for example.

"Any item that is not created by pre-defined game scripts (either original or from mods) will have [a] Reference ID starting with FF to indicate that this item belongs to this particular save game. It is for dynamically generated items, like loot from containers, random encounters or trader's wares." - Form-ID on The Vault wiki

RefID's that mod creators input, are only of assistance in letting the humans know to what the reference applies. You can actually use the FormID hex code value shown to the side in parentheses of the ref-ID field.

Note it is the persistent flag on the Reference that is mandatory in order for a RefID to become included in the search list for scripts/targets/whatever. (See GECK: Creating New Persistent Reference.) Otherwise the list of refs to search through would be way too huge and cause engine lag.

The Map is not the Terrain and the ID is not the Record Number

It is common to refer to the text form of the "IDs" for records ("Editor-ID", "Rec-ID", "Form-ID", and "Base-ID") as if they were the record identifiers used by the engine. These are "labels" given (or not) by each mod author when they create the record solely for the benefit of us "numerically challenged humans". For this reason, it is assumed they must be unique between plugins. While this is a good practice, and something to be encouraged for the benefit of those searching out records by those references in tools such as GECK or xEdit, it is important to understand that, like a "map", the text labels for those records are not the actual "terrain"; nor the "record number" actually used by the game engine. It can't afford to leave something that critical up to fallible humans. The GECK automatically assigns "record numbers" sequentially when you create a new record, and the "mod index" hexadecimal pair at the beginning of that record, consisting of the "current load order index" of the plugin makes it unique between plugins. (See Help:Form IDs for an explanation of how to interpret the "mod index" from a Form-ID or record number.)

Think about that for a minute. The GECK only knows about plugin files you chose to load for that editting session. Typically that will consist of the "FalloutNV" EXE and ESM, possibly some DLC if your plugin requires assets from it, and the plugin you are working on. How is it going to know what other plugin "ID" text labels there are to determine yours are unique? From one session to another you might load a different series of plugins. It can't predict that "load order" for certain, and the GECK itself doesn't care. Which is why the "mod index" couplet at the beginning of the record number is so clever and crucial to ensure uniqueness between plugins.

This is proven out by examining any record in xEdit: the "ID" label is a text data field within the record, just like any other "value". (For example: the "Script" record variable "SLSD - Local Variable Data" identifies each "variable name" based upon it's "index value" within an array of variables specific to that script with the "text name" stored as "SCVR - Name" data. You have to identify the "record number" before you can determine the "text name"; and not the other way around.) A test was conducted to confirm that the text "Ref-ID" label did not have to actually be "unique" between plugins. The same "Ref-ID" label was given to the same object in two different plugins, and the game had no problems differentiating between the two. Not even when one plugin removed the "persistent object" by the "Ref-ID" they had in common, the same object from the other plugin was unaffected. It did not matter if one plugin was made dependent upon the other. Because they were records from different plugins, the engine could tell them apart.

Consequently, always bear in mind that when someone is speaking in terms of one of the forms of "ID", they are often meaning "as a way of identifying the specific record number".


TIP Reference Variables explained

Thanks to vforvic of the Nexus "Fallout 3 Mod Talk" forum for the basis of the following:

TIP Global ref variables Player and PlayerREF

Thanks to DoctaSax of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

Custom items

On the other hand, loading in multiple ESP files can be a quick and easy way to copy resources from another plugin into your plugin. Just go into the GECK with the other plugin loaded (as well as yours as the "active file"), make a change to whatever resource you want (you can literally change something and then change it back to what it was, just so you make sure that entry gets flagged as changed), and save your plugin. The changed resource will now be saved to your plugin. You have to be careful with this, as it won't work if the entry you are trying to copy depends on other things in the plugin that you didn't copy. Generally, as someone new to the GECK, you should probably try to avoid doing this, but if you are trying to copy items from another plugin, this is the fastest and easiest way to do it.

The GECK only includes a file as a resource if it's a "master file". If you load an ESP, the GECK won't treat it as a "master file". The GECK will automatically add any "master files" that the other ESP loaded since those will all be loaded into your new editing session when you load both ESP files.

One word of warning. If you want to copy a piece of armor or some other resource from another plugin, load that ESP without making it active, then make a change to the item you want, then save it, and DON'T DO ANYTHING ELSE. Exit out of the GECK, load it with the resource only in your plugin and WITHOUT the other (original) esp loaded, and then use the modified resource in your plugin. If you try to use the resource while the original plugin is still loaded, that can get the GECK confused and it may end up scrambling your plugin as a result.

This copy from one ESP to another will end up including "master files" from the original ESP in your new plugin; so if you don't want them, DON'T just delete them from the GECK data screen when you select your plugin. If you accidentally left something in your plugin from one of those masters in your copied cell, deleting the master will screw up your plugin, so first ensure you have a saved copy and then clean up the "master files" list early. Instead of using GECK for this, load your plugin into xEdit and use the "Clean Masters" function by right-clicking on your plugin and selecting that option from the resulting "context menu". If all your references to those other masters have been removed, it will safely remove those masters. If not, you can use the xEdit script "List records referencing specific plugin.pas" on that plugin to list them in the log window so you can fix them.

Make sure that the item you want is in a loose file (both mesh and texture) and isn't packed into a BSA file. If it is, you'll need to unpack it to properly reference it in your plugin.

(See the Skyrim thread BSAs and You for details about the pros and cons of "Bethesda Software Archives" (BSAs), but bear in mind such files in previous games, like Oblivion, FallOut3 and Fallout New Vegas, don't have "strict order" like in Skyrim. Games prior to Skyrim don't support overriding of assets in archives using other archives; only loose files can. If the same resource is contained in several BSA archives, those games won't use it from the last BSA on 100% of occasions. They may grab the resource from a random one of the BSAs containing the same file.)

WARNING! Do not unpack BSAs directly into your game "Data" folder; potentially overwriting any mod files. The tools don't ask you to confirm the overwriting, either. All the hair textures unpacked to "loose files" will go through the head models in that case; because that's what happens when hair is not packed in a BSA. "Best practice" is to unpack to a unique folder (they are large: 1-2GB) and manually drag the desired files to the appropriate "Data" folder as needed.

Sometimes these extracted textures appear to be almost transparent. This is because their color (aka "diffuse") maps are transparent instead of opaque. You may need to adjust the opaqueness to make things visible.

Plan to start by making simple mods: like maybe adding a house somewhere. Then make simple re-textures of existing objects. If you get that far, then you are ready to start making your own "mesh" models.

If you are making armor or a weapon, the most commonly suggested advice is to start with an existing version that is similar to what you want. That way you'll have an existing model to base your 3D model on that is close to the right size so you can scale your new model appropriately. Depending on what is desired, for armor it is suggested to often start with just a body model instead. Once you've created your model, you will have to "parent it" to the appropriate armature (aka "skeleton") in order for it to work. If words like "parent" and "armature" in this context don't mean much to you, then you need to do more reading about 3D modeling (again, "Noob to Pro" is a good resource for Blender).

Things like buildings and clutter items are also created with Blender (or 3dsMax), but they don't have armatures. They do have collision though. You'll have to make a collision mesh in Blender when you create your model.

When creating custom meshes for things with different materials, just create individual collision meshes ("bhkcollisionobjects") for each material and let Blender and the NifTools figure it out. When creating something like a log cabin with a stone base, for example, create one collision mesh for the stone base and another collision mesh for the wooden parts. The stone part would have a string property of HAV_MAT_STONE and the wood part would have a collision of HAV_MAT_WOOD under the "hkPackedNitriStripsData".

Primitive collisions (box, sphere, capsule) can be created in NifSkope as well as convex shapes. The nature of your object will sometimes require you to create them in Blender, though.

It is interesting to know that a collider will relate to an object part when it encompasses it, not by the child/parent relation inside a Nif.

  • Getting NIF and DDS textures out of BSAs. (See BSA Extraction Warning above.)
  • Importing, editing and exporting into/from Blender (2.49 and latest)
  • Creating new texture files as DDS in Photoshop.
  • Adjusting new object in NifTools for correct projection.
  • Making various emission colors for signs, like green, red, yellow and non-glowing.
  • Importing new model mesh into GECK for use in game.

 

TIP Biped and Equipped Objects

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Flickering on added item Radius Setting

Sometimes when adding an item to another (such as a hat on a Mr Gutsy) it seems to flicker out of sight depending on the player's camera angle or distance. This is a classic symptom of a problem with the model's "Radius setting". The following is courtesy of Prensa in a specific reply to a question about this issue with general application.

 

TIP Floating objects

Thanks to Stonedturtle26 and baduk of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

 

TIP Head Parts Rotated

It's not known why head parts changed between FO3 and FNV, considering that so much else in the game engine is identical, but they did. If you port a head part (hat, glasses, facemask, etc) from FO3 to FNV or from FNV to FO3, or make a new open helmet/hat/head accessory that uses a existing mesh, whether it's a simply a clone or a retexture, it tends to equip sideways (rotated by 90 degrees).

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following fix using NifSkope:
Thanks to masternetra of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following fix using FNVEdit (xEdit):

 

TIP Item Substitution

Thanks to madmongo and Jokerine of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

 

TIP Mashing Meshes

Thanks to madmongo, M48A5, and RoyBatterian of the Nexus Fallout "New Vegas Mod Troubleshooters" forum for the basis of the following:

 

TIP Mashing Meshes - Fix multiple SceneRoots

Thanks to madmongo, M48A5, and AusAllerWelt of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Movable or Static custom objects in cell

Thanks to madmongo, davidlallen, and Tefnacht of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP Plugins can not override injected records

Thanks to luthienanarion of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP Repairability

Thanks to slippyguy for his informative description in the mod Alternative Repairing listing a number of potential problems he identified/resolved.

Custom Creatures

Thanks to madmongo of the Nexus Fallout "New Vegas Mod Troubleshooting" forum for the basis of the following.

Let's assume you want to add an "albino radscorpion" to the game.

An "albino" version of the radscorpion would just be a re-texture. What you are going to want to do is export all of the meshes related to the radscorpion (everything in \meshes\creatures\radscorpion) into your own custom directory, and do similar for the textures. Let's assume you are using \meshes\creatures\albinoscorpion (you can of course change the names to match your real directory names). Edit your custom texture using GIMP or Paint.Net or Photoshop or any other texture editor that can handle DDS files and save it with a new name. Then go into NifSkope and edit radscorpion.nif so that it will use your new texture, and save the modified mesh Nif as something unique like albinoscorpion.nif.

Since this is just a re-texture, the easiest thing to do is copy the existing radscorpion creature in the GECK and modify it. So open up one of the radsorpions under the "creatures" section of the GECK like CrRadscorpion2Large and select the "ModelList" tab. Change the skeleton to the skeleton in your new directory. Now your custom Nif should show up along with the standard radscorpion Nifs. Uncheck radscorpion.nif (if it's still checked) and check your new albinoradscorpion.nif, and change the ID for the creature from CrRadscorpion2Large to something like AlbinoRadscorpion or whatever you want to call it, and hit "OK" to save it. You can edit the stats or traits or anything else in there that you like if you want too, of course.

Remember: in the GECK, save early and often.

If you want to make a custom model in Blender that uses the same skeleton as an existing creature, the procedure is basically the same, except that you have to know how to create meshes in Blender and parent them to skeletons. You'll end up with a custom Nif that will already have a custom texture that you applied to it in Blender when you created the model, and the idea is basically the same. Export the meshes and textures of the creature whose skeleton you are using, then edit that creature to use your new Nif (and your Nif will tell it to use the new textures), and save it with a new ID.

To create a completely new creature (one not based upon any existing creature already in the game), you will have to build the mesh and texture files from scratch, and also provide it with animations. If it is based upon an existing skeleton, then you can use that as the "armature". Otherwise you will need to create a specialized one from scratch along with weighting the bones appropriately or by adapting an existing one with a new editor-ID. As you might guess, this is a much more involved process than merely re-texturing an existing creature. Save it for after you have mastered the basics.

Spawning modded items

The following overview is taken from a thread reply in the "Fallout New Vegas" Nexus forum by Hexrowe:

In GECK, there's a category titled Leveled Item (under Items). It contains a whole bunch of lists that tell the game what items should be spawned in randomly filled loot containers, vendor inventories and enemies. These are usually called "leveled lists" because much of their contents are affected by player level (which is why you tend to find more powerful items in better condition the higher your level is). Adding your items to these lists causes them to appear randomly in the game like any other non-unique items, and is what is meant when mod descriptions mention "leveled list integration" or some such.

The sheer number of these lists can look daunting at first, but if you use filters with some fairly obvious keywords and look around a bit you should get the hang of it. Lists starting with "Cond" are used for randomly determining the condition of spawned items, and are usually referenced by other lists; lists starting with "Vendor" are used to randomly fill vendor inventories; lists starting with "Loot" are used to spawn random loot on enemies and in containers; and so on.

In order to add an item to a list, you can double-click on the list to open it in its own window and EITHER go back to the Object Window, find the item you want to add and physically drag-and-drop it into the list, OR right-click on an empty spot on the list (to create a new default list entry) or on an existing entry (to create a copy of that entry) and select "New" from the context menu. Then you have to edit the new entry into what you actually wanted to add. (Drag-and-drop is required for adding items into Form Lists, but Leveled Item Lists can also use the right-click menu. GECK is kind of a mess like that.)

ALTERNATELY, if you want to place an item in a specific location in the game as is often done with unique weapons, creatures, and such, there's a list of world spaces in the Cell View window; find the one you want to place the object in (note that there are several lists; Interiors seems to be displayed by default, but if you want to place the object in an open air location go to WastelandNV instead), double-click it to open it in the Render Window, then find the object in the Object Window and drag-and-drop it into the Render Window. The item will now appear in the list of objects on the right side of the Cell View Window, and double-clicking it there allows you to edit it's exact location and rotation, ownership, whether it can be picked up by wandering AI, and so on. You can also use a "X Marker" and define a radius from the marker at which a script will place an item or creature when certain conditions are met. See Tip: Random NPC Comments for an example of this technique.

Common practice is to put the items in an owner-less container, just to be safe. For this you'll have to create the container in the Object Window (they're found in the Container category, under World Objects) and add it into the world space by drag-and-dropping it into the Render Window just like any other item. The easiest way to create a new container is to double-click on an existing one that uses whichever world model you want (fridge, gun cabinet, briefcase, etc.), change its Editor-ID and name, and click OK; at this point GECK will ask whether you want to create a new form instead of renaming the old, so click "Yes" and you'll have your new container. Now just edit its contents and attributes (remember to remove any owners, unless you specifically want the player to have to steal the goods) and add it to the world space of your liking. Done!

TIP Respawning Plant bug fix

Thanks to masternetra of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

Worldspaces

If you want to create your own worldspace, then you must be a real glutton for punishment, because this gets you into the buggiest parts of the GECK. For example. you create a worldspace, then go and edit its heightmap, and when you save your heightmap and exit out of it, the GECK will crash. The only way to avoid this is to create your worldspace, save your mod, exit the GECK, reload your mod, and then edit the heightmap. This isn't explained anywhere in the GECK, but if you create a heightmap that is too low, the GECK will crash. One modder used to create heightmaps with a general offset of about 6000, but then found there's another bug that when you do that: trees don't generate LOD properly. So your heightmap really needs to be above something like 20-25,000 or so. If your landscape doesn't have trees (or objects that are defined as having tree LOD in the GECK) then you don't need to worry about it and 6000 offset works fine, BUT: the default LOD water height is 10500.

At some point you will try to navmesh your entire new worldspace. It's a really big worldspace with lots of cells, so it's a royal pain to navmesh each cell. Here you find out that the default settings for generating navmeshes will typically navmesh right across a fence, but will block on a piece of road. (Hey GECK, isn't it supposed to be the other way around? Arrgghh.) (As an aside, using heightmap generation mode works a LOT better). Oh, but wait, there's an automatic navmesh generator under the Regions section. Except that it is THE MOST BUGGY THING IN THE ENTIRE GECK. People have had it navmesh the entire area OUTSIDE of the area you want it to navmesh, completely leaving the area you wanted to navmesh untouched. Oh, and by the way, it completely rips out whatever navmeshing you had before in your mod, so hope you saved a backup somewhere because otherwise it's gone. Oh again, but don't worry. The auto navmesher doesn't always navmesh outside where you want it to. No, more often it just completely locks up with an infinite "Get Jean" popup error box that you can't get rid of because it just pops up again. Seriously, the error box just says "Get Jean". After some googling it was learned that "Jean" was the pathing coder and this was a debug message that was never removed from the GECK. The auto-navmesher also completely hangs up when it encounters an SCOL (static collection). The auto navmesher managed to navmesh a large (and very simple) landscape for a modder once. And only once. These days it's recommended you don't even bother to try and use it. Just navmesh cell by cell. It's quicker and less frustrating.

The list of bugs that you run into with worldspace generation goes on and on like this. Worldspace generation is MISERABLE. There's a reason you don't see many worldspace mods and many of the ones you do see use a flat worldspace with landscape objects like cliffs and rocks instead of a true heightmap to generate the landscape.

Many consider duplicating an existing worldspace and removing unwanted elements. This is fraught with it's own problems as well. Please see the Nexus forum thread Duplicating a world-space tutorial first, for an idea of the difficulties involved. Be aware that deleting objects from the world means you are removing references used by the game and possibly other mods. When you delete static objects like vehicles, the navmesh for that cell is typically done so that NPCs will avoid walking into the vehicle. If you don't fix the navmesh, you can walk right through where the vehicle used to be, but your companion NPC won't. It's a bit odd when you are walking down the road and your companion suddenly does a left turn and goes out of their way to avoid nothing, just because the navmesh says they can't walk there. Similarly, if you are being chased by a creature, it will also avoid the holes in the navmesh where the vehicles and other statics used to be.

New worldspace creation is pretty much the same from FO3 to FNV, so tutorials for FO3 are okay for you to use. There don't seem to be any good tutorials. Most have pieced together bits and pieces from various tutorials and just plugged through it until they figured it out by trial and error.

Some tutorials make it sound a lot easier than it is. If you are making a very small worldspace, it can be done fairly quickly. But if you are making a larger worldspace, it becomes a very slow and tedious thing.

Also, the worldspace parts of the GECK are among the buggiest and most difficult to use parts of the toolset. Save often, and make backup files often just in case the GECK totally trashes your mod and you need to revert to an earlier version.

Here are some tips on getting past the first initial problems, which will give you an idea of how frustrating this can be. However, if all you need is the basic game worldspace but empty of content, you might consider The Community Wasteland Project which is an ESM file that has safely removed all NPCs, Creatures and scripted triggers from the game and its DLCs instead as an alternative to "rolling your own".

Assuming you want to make your own landscape from scratch, the first step is just creating the world space. Click on "World | World Spaces" in the GECK, and when that form comes up, just click "New" on the left hand side to give your new region a name, and fill in the blanks. Exit out of that, and save your mod, because the next step will usually crash the GECK.

Highlights of the Worldspace

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Center_On_Cell COC Markers

Thanks to pixelhate of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

There's an auto navmesher, but that is buggy as all heck. Some have found that it works reasonably well on wilderness landscapes containing simple objects like trees and cactuses. It often completely fails when the cell contains SCOLs ("static collections") and doesn't work well at all if there are a lot of complex objects inside the cell. That means that you end up having to hand navmesh a lot of cells. If your new worldspace only has a few usable cells, this isn't a big deal, and you can navmesh all of them in a few hours easily. A worldspace has basically 64x64 cells, which is 4096 total cells. You can auto navmesh three or four cells per minute, and once you get experienced at navmeshing, you can probably finish a fairly complex cell in a few minutes. If you figure an average of one cell per minute (being a mix of hand navmeshed and auto navmeshed), that's 4096 minutes to navmesh the entire worldspace. That works out to a bit over 68 hours. If you navmesh for three hours per day (because you have a job or go to school or do something that takes up the rest of your day) then it will take you roughly 23 days to navmesh the entire worldspace.

The auto navmesher will often not navmesh across roads. If you set the auto navmesher to "Height Map Only" mode, it works a lot faster and a lot better, and will usually navmesh across roads just fine. However, it will usually navmesh through fences. So be prepared to hand navmesh any cell that contains a road or a fence.

Use the "b" key in your "render window" to show "cell boundaries". You'll want to arrange buildings and structures and other things so that you can easily do the navmeshing. You wouldn't want a building's door to be straddling a cell boundary, for example.

There's also an "auto generate navmesh" button under "regions". Don't use it. It is very very very very broken. Some have made it work under some circumstances but it is incredibly buggy.

LOD generation is similar. It's not too bad if you only have a few cells, but for a large worldspace it takes darn near forever.

This is why you need to decide ahead of time if you want to create a tiny worldspace that you can finish in a short amount of time, or if you want to create a major sized worldspace that will take you a huge chunk of time to complete.

There's a reason that you don't see too many mods with worldspaces on the nexus. It's difficult to figure out, and buggy as all heck. It also takes a huge amount of time, which is why the few worldspaces that you do see tend to be small and simple. It is not uncommon for a single mod creator to spend so long working on a mod with a new worldspace that the vast majority of that game community has moved on to another game.

One other thing. If you do try to make a huge worldspace, you can use the regions to add a lot of landscape items like cactuses and trees. This is a huge time saver, but be forwarned. If you have ever clicked on an object in debug mode, you'll notice that the object has an 8 character ID, something like 4100D236 (a completely made-up number). This is a hexidecimal number. The first two digits will be the number of your mod (41 in this case), aka its mod index. Fallout gets 00, and the different mods are assigned numbers as you add them into your mod list. On a system with the official DLC, "Dead Money" is 01, "Honest Hearts" is 02, "Old World Blues" is 03, etc. You can see the mod index in most mod managers. So if you add another mod and it ends up loading before this one, that 41 could get bumped up to 42, for example. Now here's the important part. That xx00D236 part means that you have a six digit hex "form" number for the ID. This corresponds to the file offset in your mod. The largest 6 digit hex number you can have is FFFFFF, which is 16,777,215. (The FF mod index is reserved for "save game" file changes to the environment, such as inventory and moved objects.) A worldspace will take 10 to 12 megs just for the heightmap and landscape, not including navmesh and texturing. If you go over the 16 meg limit and add an object, you brick your mod. The GECK will give you no errors at all when it saves your mod, but when you try to load it again, it will lock up the GECK. That means you can't use the GECK to fix it. Hope you have a backup of your mod from earlier somewhere, because that's the only way out of it.

This is important enough to put it another way: What this means to you is that you need to watch your file size. Once you get over 16 megs, you can't add any more objects or you will break your mod. If this happens, the game can't load your mod and the GECK can't load it either, so if you didn't save an earlier copy of your mod somewhere, it's forever broken. Fallout.esm is significantly larger than 16 megs, so Bethesda obviously has some way of packing the data in so that they don't get this problem. But the GECK that you and I get to use can't add objects to a mod that is more than 16 megs in size. You can paint landscapes and add navmeshes and such which can take your mod well beyond the 16 meg limit, but as soon as you add an object to a mod that is larger than 16 megs and save your mod, you just broke it. The GECK won't tell you that it is broken, either. You won't find out until you try to reload your mod in the GECK or if you try to use it in the game. Authors have had to split mods into multiple files to get around this.

(Repeat the mantra: save early, save often, keep backups.)

If you are making a small worldspace, then you probably don't have to worry about this at all. If you are making a large worldspace and are adding tons of landscape objects (cactuses, trees, etc) then you can run into this limit and it will break your mod. So if you are going to do a worldspace, do the landscape first, then add all of your objects, NPCs, creatures, etc. to it, and THEN do the navmeshing and texturing last as those don't care about the 16 meg boundary issue.

TIP Finding cell North in GECK

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

The next step is to create a "heightmap". A lot of people skip this and make small, completely flat world spaces, and use things like cliff objects to do the majority of their landscaping. That's okay for things like a small base surrounded by mountains or something like that, but if you are trying to create a town or something it looks amateurish.

Warning - If you basically default the heightmap settings, it will crash the GECK. Seriously, sometimes it seems like the GECK is a Vault-tec experiment designed to test modder frustrations. The reason for this is that the GECK doesn't like it if the landscape is too low. So the first thing some do is create a random landscape that doesn't have much randomness to it, so that what it ends up doing is creating a basically flat landscape. The settings successfully used under the random generator are a frequency of 100, an amplitude of 50, and a base offset of 6000 if there will be no "tree LODs" or 25,000 if there will be. (Though bear in mind the default LOD "water level" is 10500 if you are planning on any underground structures. It seems the "Default Water Height" and the "Default LOD Water Height" need to be the same. The "Default Land Height" is -2048.0 and that appears to be sensitive to changes, and is best left alone.) The base offset is extremely important since if you don't set it high enough, the GECK crashes.

TIP Generating Worldspace LOD

TIP Static Water goes into Interior cells only

Thanks to madmongo and SnakeSlippers of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

Some folks use things like "geological survey data" to generate their heightmaps. See the last couple of threads in the list of tutorials below (under the Heightmaps section) or poke around on the net.

If all is well so far, save your heightmap and save your mod. If you didn't restart the GECK earlier, chances are that right here is where the GECK will crash. The second time through this it usually works.

Now re-open your heightmap, and use the editing tools to create your mountains, rivers, lakes, etc. You can play around with the default water settings in your worldspace to get the water to line up with where you want it on your landscape. If you used a base offset of 6000 when creating the heightmap, a water height of about 3500 tends to work fairly well. When you are editing the heightmap, make very small changes. If you make changes that are too drastic, you basically tear the landscape and the GECK can't figure out how to fix it and it ends up with a broken landscape that either crashes the GECK or crashes the game or both.

What you probably have at this point is a landscape that has mountains and plains and rivers and lakes and whatever. Save your heightmap and save your mod. If you were to go and look at it though, it will probably be very flat and unrealistic looking. You can add in some randomness to your heightmap to fix that. The settings that some tend to use are a frequency of 2000, an amplitude of 200, a base offset of zero, and this is very important, make sure you click "additive" and "subtractive". If you don't check the "additive" and "subtractive" boxes, it will create a new random heightmap instead of just adding a bit of randomness to your existing heightmap. Now you should have something that looks a lot more realistic. Again, save your mod. The GECK likes to crash for no good reason a lot when doing worldspace stuff.

Now you can go to your "cell view" form, and change "interiors" (where it says "world space") and select your new world space. It will put you right in the center of your new world space. And you'll run into yet another GECK bug. If there is nothing on the landscape, and the GECK hasn't ever focused on any kind of object, the GECK will usually display water instead of your landscape, so you end up looking at a big solid grayish-green blob on your render window instead of looking at your landscape. If this happens to you, select "interiors" in the "cell view", double click on some static object, let the render window display that cell, then go back to your new world space. Sometimes just moving around using the arrow keys will get the water blob to go away once you move far enough to change cells. Once you have objects in your new worldspace you won't have this problem any more, as long as you first go to an area that has objects when you select your new worldspace when you start up the GECK.

Now you can tweak and paint the landscape to your heart's desire, and add objects and do all of that fun stuff. Unfortunately, you have only two basic tools for editing landscape. You can use the "landscape editing" function in the "render window", which limits you to a maximum brush size of 15, or you can use the "heightmap editor". If you are trying to make something the size of a small pond, the "landscape editing" makes you feel like you are carving out Mount Rushmoor using a hand chisel, and using the "heightmap editor" makes you feel like you are trying to do brain surgery with a chainsaw. There's nothing in between. The "heightmap editor" is also a bit quirky. It tends to leave big black square splotches just outside of the view on your render window, and those don't go away when you close out the heightmap editing box. Even if you move away from that area using the arrow keys, the splotches stay there. You can only make them go away by selecting another area from the cell view and then going back to the area where you were.

Buggy buggy buggy. That's the GECK.

TIP Terrain Editor missing texture

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

Copying interior or exterior cells between plugins

Reusing cells from one plugin to another is a great time saver, but you have to bear some things in mind.

  • The Trick is to make your new ESP first, only dependent on the main master file. Save and close it.
Best way to make a new ESP file is to drop something in the "Render" window, then save and name the file. So loading a cell first is needed. Suggest "Wasteland cell / Good Springs" if you don't have any in particular in mind. You can of course delete that cell later from your ESP if it's not needed for your purposes.
  • Then open your preferred tool adding the other files from which you want to use assets, (with your new .ESP as the "active file" in GECK).

At the moment we don't know of any way to duplicate exterior world spaces in GECK. You can copy cell records between plugins in FNVEdit. In order to change the FormID of the duplicated Worldspace, you need to work from the bottom up: changing the FormIDs of the children cells before the parent.

You can use either FNVEdit or GECK to duplicate interior cells, but this is how to use the GECK. In the GECK, load up the ESP with the cell you want but don't make it "active", while loading the ESP that you want the cell to end up in (i.e. your new ESP) as the "active file". Then just right click on the desired cell in the "source" plugin and select "Duplicate Cell". It will give the duplicate a name of whatever the cell name is plus COPY (or something like that). If there are any objects in the source cell that are unique to the mod you are copying it from or come from one of its masters that you don't want to include, delete those out of the copied cell. Then save your "active file" ESP. Do not add items to the cell or do anything else other than duplicate it or the GECK can sometimes get confused and it will mess everything up. Just duplicate the cell, remove anything you don't want in your "active file" ESP, and save. That's it. Exit and reload, and maybe rename the cell so that it doesn't have the word COPY in it, and then edit it to your heart's desire.

The GECK only includes a file as a resource if it's a "master file". If you load an ESP, the GECK won't treat it as a master (unless you have configured the GECK PowerUp plugin to allow ESPs to be "masters". The GECK Extender allows this as well without configuring). The GECK will automatically add any master files that the other ESP loaded since those will all be loaded into your new editing session when you load both ESP files.

This will end up including "master files" from the "original ESP" in your "new ESP", so if you don't want them: just delete them from the GECK data screen when you select your mod for loading. However, if you accidentally left in something dependent upon one of those masters in your copied cell, deleting the master will screw up your mod.

Here loading your new ESP with the copied cell(s) in FNVEdit first will enable you to safely see if there are any unexpected "master files" in the "File Header" record list of masters. It's "Clean Masters" command won't remove a "master file" as long as some record depends upon it, which is not true for the GECK.

  • Check for errors in FNVEdit by Right-clicking on your plugin, and selecting "check for errors" from the context menu that then appears.
If there are any remaining dependent records (evidenced by a master you expected to be dropped still being present in the plugin's "File Header" record) you can use the FNVEdit script "List records referencing specific plugin.pas" on that plugin to list them in the log window so you can remove them.
  • Once that is done, Right-click on your plugin and select "Clean Masters" from the context menu.
  • "Sort Masters", which will order them in the plugin according to your current "load order".
  • Check the plugin's "File Header" record for any remaining unexpected "master files".
If there are any, repeat the process. Otherwise, exit and save.

There are a lot of things that FNVEdit and the GECK can both do, they just do it differently. Which one you choose to use is a matter of personal preference, but sometimes one has capabilities the other lacks.

Additional Material

The following is not intended to be a complete list, but rather a starting point on articles and videos specific to FNV to assist new mod creators in getting started. Bear in mind that articles in older games may also be of assistance with basic concepts as long as you adjust to the peculiarities of the syntax in the GECK.

Rather than "reinventing the wheel", your life will be a lot simpler if you take advantage of resources made available for your use by the modding community. They also provide useful examples of correctly created elements which can supplement tutorials. These are generally listed on the Nexus in the Modders resources and tutorials category. Check back often. Please respect the various authors usage permissions, and give credit where due.

These articles are not necessarily intended as "tutorials", but do convey useful information to the mod creation process.

Game Time

Time in the game is tracked in "Global Variables" (type: GLOB). The use of "Global Variables" (e.g. GameHour) and GameTime functions such as GetGamesDaysPassed can get tricky. (Using this GetGamesDaysPassed function is preferable to using the GameDaysPassed global variable, which is highly unreliable.) It is necessary to carefully examine the descriptions and examples to understand how each works. They are not as "obvious" as one might think.

The game engine originally stored "time" values as type "float" (i.e. "single precision") values. But when returned in various functions they were often converted into type "short" (i.e. "integer") values. This caused problems, which made it necessary for "New Vegas Script Extender" (NVSE) to intercept and implement as "double precision" values and it's own functions to correct;y deal with returning the proper values. So you need to be aware of these differences when choosing how you deal with time.

(It's "Game Engine fixes" such as these that make NVSE essentially a requirement. As many of the plugins essential to a stable game (such as "New Vegas Anti-Crash", aka NVAC) require NVSE already, don't shy away from using it's functions instead of the vanilla ones. Virtually every mod user should already have it installed.)

- See the GECK entries on List of Global Variables and Special Variables.

NAM files

By default there are "< DLC >.nam" files for all the DLC ".ESM" files. These files cause the game to load those DLC even if they are not "active" in the "load order". If any ".nam" files for specific DLCs are not found, that DLC is not automatically activated (enabled). (It is recommended you rename rather than delete them if you don't want a particular DLC to automatically be loaded.)

Normally, when starting GECK and opening the "File" menu it has automatically "checked" (enabled) the DLC ESM files with "< DLC >.nam" files for loading, but not the "FalloutNV.ESM". There isn't a ".nam" file by default for "FalloutNV.ESM".

The "nam" file contains nothing more than the common name (e.g. "Dead Money") of the respective DLC. When a plaintext "FalloutNV.nam" file with "Fallout New Vegas" as content is created, "FalloutNV.ESM" will be automatically checked (enabled) in GECK's "File" menu just like the DLC.

3D Model and Texture resources

Note that often the models on these sites tend to have very high polygon counts, which the NIFTools either completely choke on or if they do handle it, end up just killing your game performance. Use with caution.


Plugin File Header and Record information by game

Thanks to Sharlikran on the "Afkmods" site Wrye Bash - All Games thread for the following:

"While these pages still provide the best public documentation of the Oblivion file formats, all mod makers should also be using Tes4View, which currently provides the most complete and correct understanding of the mod file format in a readily accessible manner." - UESP Wiki (on the Oblivion page for the TES4 Mod File Format). [These days, instead of the Oblivion tool TES4View, use the game-specific version of xEdit instead (e.g. TES4Edit, FNVEdit, etc.).]

"One of the things about those Wiki pages is the format of the 24 bytes doesn't change much. In my opinion you really only need to compare Oblivion, with one of the other games. About the only thing that changes is the Flags because they are record specific. The TES4 header is defined in the following Data which is a group of subrecords. A GRUP or Top Group also has 24 bytes and indicates the beginning of what will follow. Bethesda's internal tool sometimes introduces duplicate Top Groups which are combined in xEdit. Each record starts with 24 bytes, and then the subrecords follow. After the 24 bytes is the size of the data that will follow from what I understand. From what I know Oblivion is 20 bytes, and that's about the only difference. Zilav [of the xEdit team] only mentioned the other day when I asked that Oblivion doesn't have a Form Version because it was the first use of the new format."

Fallout Record Types

Sources:

  1. Tes5Mod talk:Mod File Format contains comparative counts of use by type between FO3 and FNV, omitted below.
  2. TES5Edit/fopdoc as of 2 Jun 2014 documents the FO3, FNV, and FO4 plugin file formats known to the xEdit team. Only those pertaining to FO3 and FNV are listed here.
FOPDOC has each record on a separate GitHub Flavored Markdown page with sub-record type information. This should be referenced for further details like flag values. (Markdown format is quite readable by the average user with an ordinary plaintext editor.)
  • ACHR = Placed Character/NPC Reference
  • ACRE = Placed Creature Reference
  • ACTI = Activator (usually something like a light switch, plant, etc.)
  • ADDN = Addon Node (Particle Effect)
  • ALCH = Ingestible Potion/Medicine (Alchemy)
  • ALOC = Media Location Controller (FNV only)
  • AMEF = Ammo Effects (FNV only)
  • AMMO = Ammunition
  • ANIO = Animated Object
  • ARMA = Armor Components (Addon)
  • ARMO = Armor
  • ASPC = Acoustic Space (sound effects)
  • AVIF = Actor Value information
  • BOOK = Books (usually one that's actually usable.)
  • BPTD = Body Part Data
  • CAMS = Cameras
  • CCRD = Cards (Caravan) (FNV only)
  • CDCK = Deck of Cards (Caravan) (FNV only)
  • CELL = Cell (Areas that make up the game world. Each interior is in its own cell.)
  • CHAL = Challenges (FNV only)
  • CHIP = Gambling Chips (FNV only)
  • CLAS = Class
  • CLMT = Climate
  • CMNY = Caravan Money (FNV only)
  • CONT = Container
  • CPTH = Camera Path
  • CREA = Creature
  • CSNO = Casino (FNV only)
  • CSTY = Combat Style
  • DEBR = Debris
  • DEHY = Dehydration level (FNV Hardcore mode only)
  • DIAL = Dialog topic
  • DOBJ = Default Object Manager
  • DOOR = Door (Teleports or removes barrier, often used to teleport the player into cells.)
  • ECZN = Encounter Zone
  • EFSH = Effect Shader
  • ENCH = Enchantment (such as Stimpak's healing ability.)
  • EXPL = Explosion
  • EYES = Eyes
  • FACT = Faction (All NPCs and creatures are assigned to one.)
  • FLST = Form ID List
  • FURN = Furniture
  • GLOB = Global
  • GMST = Game Setting
  • GRAS = Grass
  • GRUP = Group
  • HAIR = Hair
  • HDPT = Headpart (Eyes, hair, beards, etc.)
  • HUNG = Hunger level (FNV Hardcore mode only)
  • IDLE = Idle Animations
  • IDLM = Idle Marker
  • IMAD = Image Space Adapter
  • IMGS = Image Space
  • IMOD = Item Mods
  • INFO = Dialog Response
  • INGR = Ingredient
  • IPCT = Impacts
  • IPDS = Impact Data Set
  • KEYM = Key
  • LAND = Land
  • LGTM = Lighting Template
  • LIGH = Light
  • LSCR = Load Screen
  • LSCT = Load Screen Type (FNV only)
  • LTEX = Land Texture
  • LVLC = Leveled Creature
  • LVLI = Leveled Item
  • LVLN = Leveled NPC
  • MAPM = Mapmarker (These are what tell you where a town, etc. is on the map.)
  • MESG = Message
  • MGEF = Base Magic Effect
  • MICN = Menu Icon
  • MISC = Miscellaneous item (such as random junk.)
  • MSET = Media Set (FNV only)
  • MSTT = Moveable Static
  • MUSC = Music
  • NAVI = Navigation Mesh Info Map
  • NAVM = Navigation Mesh (NavMesh)
  • NOTE = Note (which can be activated to show a text string, or the FormID of a Dialog record.)
  • NPC_ = NPC (Non Playable Characters)
  • PACK = Package (See the FOPDOC for the types of sub-records controlling when it gets triggered.)
  • PERK = Skill Perks
  • PGRE = Placed Grenade
  • PMIS = Placed Missile (FNV only)
  • PROJ = Projectile
  • PWAT = Placeable Water
  • QUST = Quest
  • RACE = Race
  • RADS = Radiation Stage
  • RCCT = Recipe Category (Collection)
  • RCPE = Recipe
  • REFR = Placed Object Reference
  • REGN = Region
  • REPU = Reputation
  • RGDL = Ragdoll
  • SCOL = Static Collection
  • SCPT = Script
  • SLPD = Sleep Deprivation Stage (FNV Hardcore mode only)
  • SOUN = Sound
  • SPEL = Actor Effect (Spell)
  • STAT = Static
  • TACT = Talking Activator
  • TERM = Terminal
  • TES4 = TES4 record format header. (Remnant of TES4:Oblivion.)
  • TREE = Tree
  • TXST = Texture Set
  • VTYP = Voice Type
  • WATR = Water
  • WEAP = Weapon
  • WRLD = Worldspace
  • WTHR = Weather


Factions Stealing and Ownership

Factions

This is a topic which gets complex in a hurry in application. Consider the following a broad overview.

Factions are "groups of members" with a relationship to other factions which affect the default behavior between members of those factions, and between members of the same faction. The actor's membership in a faction is processed by the game AI in determining another actor's reaction to them. The key thing is the relationship between factions, rather than between individuals. Actors will never attack "Friends" or "Allies". (See also Custom NPCs.)

You should not generally attempt to change anything about a faction's relationship with another faction. Instead create a new faction, decide which actors or other factions you want to be members of your new faction, and then establish their relationships with other factions. If you haven't fully mapped out those inter-faction relationships, things get "surprising".

If a faction follower is not behaving towards others as expected, consider having it ally with itself. For example, the game vanilla "follower faction" has got the "player faction" and itself as allies. This appears to override all previous relationships of that follower and replace them with those of the player.

Reputation is about how members of various factions (including your own "Player" faction) feel about your character. While related, they are separate issues. Note you can have both positive and negative reputation (fame/infamy) with a given faction at the same time. The "fame label" attached to your character is the result of a matrix of that positive/negative range, given in the referenced wiki article. "Reputation" changes only apply to the Player; not to other Actors.

Once you have "committed a crime" against one member of a faction, the entire faction is hostile to you (and your PlayerFaction). All NPCs react based upon the Actor's membership in a faction and that faction's relationships with their faction, including your "companions" who become part of the PlayerFaction when they are "hired".

The dialogue topics are a hierarchy of responses. The first response which tests ALL conditions as "true" is the response given. (If you are never seeming to get to your desired response, this is the first thing to check.) A Faction's "Hostile" reaction is right up there at the top, so they never get past it to say anything else. If you want them to say something before attacking, then you need to alter the response so that it causes them to bark (say something or make a noise to the player or another NPC) before attacking. If you want them to bark only in the first instance, then you need to add a "DoOnce" conditional test to that response, and have a standard "attack response" after it in the hierarchy. Speaking always takes a bit of time, and "sounds" process independently of other script actions (meaning once started they run until done while the rest of the script is processed), so you just put the bark line before the attack in the script.

It is worth noting that the game designers created separate "factions" for dialogue (e.g. "vSecuritronDialogueFaction", "vOuterVegasDialogueFaction", etc.) that could be tested for in dialogue conditionals in addition to the typical factions (e.g. "vStreetSecuritronFaction") for relationships with other factions.

Various types of armor have faction associations. Wearing any faction disguise armor will turn reputation with that faction to "Neutral". For example, if "Liked" by the NCR but wearing NCR "face wrap armor" (a "disguise armor"), that armor will return reputation with the NCR to "Neutral". It will go back to "Liked" once the armor is removed. Only certain types and sets (in combination with the correct helmet) of armor function as "disguises" in this manner. (See the table in this apparel page of "The Vault" wiki which identifies which vanilla armor counts as a disguise.) "Disguises" provide a temporary membership in their respective faction. Such "indirect" methods of changing faction membership and/or reputation are preferred to directly altering it for the Player.

TIP Companions and Followers
Thanks to miguick of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Faction Disguise system

Stealing and Ownership

"Containers" and their contents have "ownership". This affects who can use items without it being regarded as "stealing". Cells have ownership as well.

  • First the ownership of the item is considered; if none is selected ...
  • Then the ownership of the container is considered; if none is selected ...
  • Then ownership of the Cell is considered.

If the ownership set on the cell is the only way any containers/items are being claimed, then you can just change that to none. But this will also effect any trespassing if it was something in use.

Opening "owned containers" and taking their contents or "owned" items found "lying around", and trespassing (to include opening specific doors with "owners"), have negative effects on the Courier's reputation with the owning NPC and the faction(s) in which they have membership.

You can set NPC container ownership to "Player" as long as it is not a container that another NPC will need to use. But you could use the faction ownership to let the player share the ability to use it, by making a new faction and adding the player to that faction. Anything with the faction ownership set will also count as stealing, unless the player is in the faction or has ally status with that faction.

Containers and "pickable plants" in exteriors can also have faction ownership set. The faction ownership is used so that all people in the faction will consider it a crime and react accordingly. Otherwise only the NPC set as owner would react.

Another way that will set ownership for a whole area is an encounter zone. It looks like the NV main file doesn't set any ownership with encounter zones anyway. But some of the DLC's and others mods may do that. Just mentioning as a place to check on ownership in the future.

Tutorials

Some tutorials are specific on making various kinds of Fallout NV mods with GECK. Others cover aspects of creating mods that are more applicable to mod creation in general. Always bear in mind that the game engine for Skyrim and Fallout 4 is different than that used for older Bethesda games like Morrowwind and Oblivion, and each game version of the engine is different in some way. However, each succeeding game built upon concepts implemented in earlier games, so they are still worth investigating. Your starting point should be the "Basic Tutorials" provided by Bethsoft as part of their "Construction Kits".

Bethsoft Basic Tutorials

Animation

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

TIP Animation Sounds

Thanks to Ashtonlp101 of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Animation Summary

Thanks to pluramon and RoyBatterian on the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following summary:

TIP Animation Exporting

Thanks to uhmattbravo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP KF edit rotates Actors 90 degrees to right

The following is taken from the "First Aid for frequent problems" section of the Avoiding Blender animation pitfalls Nexus Wiki article.

TIP Play an Animation

Thanks to DoctaSax of the Nexus Fallout "New Vegas" forum for the basis of the following:

Armor and Clothes

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

Note the KGTools web site containing the downloads is no longer accessible. Use the links on this site (adults 18+ only) instead.

TIP Armor Skin Tones

Thanks to AusAllerWelt of the Nexus "New Vegas Mod Troubleshooting" forum for the basis of the following:

TIP Bone Weighting

Thanks to madmongo of the Nexus Fallout "Discussions" forum for the basis of the following:

TIP Exporting a mesh from Blender for import into GECK

Blender Mesh Editor

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

TIP Blender Clear the display

Thanks to M48A5 of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP Blender Export Settings

Thanks to AusAllerWelt and madmongo of the Nexus Fallout New Vegas "GECK and Modders" Forum for the basis of the following:

TIP Blender Import Animations

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Blender Import Mesh

Thanks to madmongo and AusAllerWelt of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Blender Import Texture

Thanks to AusAllerWelt of the "Fallout New Vegas Mod Talk" forum for the basis of the following.

TIP Imported NIF texture appears Black

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP New to Blender

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following.

TIP Blender version NIF export

Thanks to EPDGaffney and madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Blender Import other Model Formats

Thanks to madmongo and user826 of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

Collision

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

TIP Collision Impact Sounds

Thanks to pixelhate and miguick of the Nexus Fallout "Mod Talk" forum for the basis of the following:

TIP Custom Object Collision

Thanks to madmongo and pixelhate of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

Conversions

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

Tools behind a "gated" "Adult (18+) Only site" in their "modder resources" section.

TIP Converting meshes

Thanks to madmongo and MA48A5 of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP Copying between plugins

Creature Creation

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

The process of creating a "creature" is essentially the same as creating a "NPC Companion", but without the "companion wheel".

TIP Locate Embedded Creature Weapon

Thanks to uhmattbravo of the Nexus FalloutNV 'New Vegas GECK and Modders' sub-forum for the following:

Custom NPCs

Other sections have relevant information to this subject. The following "Tips" in particular are applicable.

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

"All Companions are NPCs, but not all NPCs are Companions." Both are discussed in this section, but please note and bear in mind the distinction when used.

TIP Actor height in GECK

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP AI Package Basics

TIP AI Packages and Distance

Thanks to EPDGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Avoid CTD previewing NPCs

TIP Changing only one race

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP CharGen Face Presets

Thanks to madmongo of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following.

TIP Companion Wheel

Thanks to madmongo of the Nexus FalloutNV 'New Vegas GECK and Modders' sub-forum for the following basic summary:

span id="Tip-CustomRaceFaces"></span>

TIP Custom Race and Faces

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Custom Race and Skin Textures

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Hostility between NPCs

TIP Interrupt combat for dialog

Thanks to clanky4 of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Making NPCs move aka AI Packages

Thanks to madmongo, EPDGaffney, FiftyTifty, and UnvalidUserName of the Nexus FalloutNV 'New Vegas GECK and Modders' and kingbeast88 of the 'New Vegas Mod Troubleshooting' sub-forums for the following basic summary of how to get NPCs to move:

TIP Merchant Inventory

Thanks to EPDGaffney and madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Only Combat Teammates give XP to Player

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Perks for Companions

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for providing the following quotation:

TIP Switching Custom Facial Features

Thanks to rikkurikku and Budong of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Trick with making NPCs

TIP Turn a Temporary Companion into a Permanent one

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Using AI Packages

Dialogue and Lipsynch

Other sections have relevant information to this subject. The following "Tips" in particular are applicable.

  • See the Custom NPCs section regarding scripting "AI Packages".

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

TIP Adding Animation/Video to Dialog

Thanks to Radioactivelad of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Adding Generic Dialog

Thanks to madmongo of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP Batch Lip file generation

Thanks to EPDGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Conversation or Quest system

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the following:

Tip Cutting Lip files to match dialog

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Get the current speaker reference

Thanks to FiftyTifty of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP How to generate lip files

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Locating voiced dialog

Thanks to clanky4 of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Multiple Greetings

Thanks to madmongo of the Nexus "Fallout New Vegas Mod Talk" forum for the basis of the following:

TIP No sound driver available error message

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Obsidian Conversation Editor aka OCE

Thanks to EDPGaffney (the "I" in the following) of the Nexus "New Vegas GECK and Modders" forum for the details of this tip:

Tip Random NPC Comments

Thanks to Mktavish of the Nexus Fallout New Vegas GECK and Modders forum for the basis of the following:
Budong added the following alternative method:

TIP Record new voice files

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Say Once use

Thanks to Mktavish of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Standard Dialog

TIP Text display timing

FaceGen Heads Faces Hairs and Helmets

This information is compiled from a number of threads, guides, and articles by authors such as DrakeTheDragon, throttlekitty, Ghogiel, scanti, and Skree000. It is an overview at best.

Hair NIFs usually have two models inside of them, one called Hat and one called NoHat. Adjust your alternate hairstyle's Hat model so that it doesn't clip through any hat you want the Actor to wear.

The heads of characters and NPCs in Bethesda games are created using the builtin FaceGen tool, which is a licensed Singular Immersion FaceGen Modeler. According to the FaceGen site "Customizer" tool user manual the resulting information is stored in the following files.

Each model part consists of one or more of the following file types, with the same root name:

  1. TRI. This is the base mesh, which includes UVs and information about morph targets but not the FaceGen shape changes.
  2. BMP. This is the base texture.
  3. EGM. This is the statistical shape information, which is used to modify the base face shape. Without this file, the mesh will never change shape.
  4. EGT. This is the statistical texture information, which is used to modify the base texture image. Without this file, the texture image is fixed.
  5. FIM. This is the UV remapping transform, which is used to transform the detail texture in the FG file (taken from a photograph) into the UV layout of this mesh. Without this file, a mesh cannot have a detail texture applied.

EGM, EGT, and TRI extension files are in turn are used to construct "OBJ" (whole head mesh) files. This is because "faces", "hair", and "helmets" have to be able to "morph" or "conform" to the underlying "head" mesh. Different heads can be used with the same body to provide the customized faces of PlayerCharacters.

Note that everything related to the head must be placed in a BSA for it to be processed properly by the game engine. Otherwise the "loose files" do not get "conformed" to the head mesh properly. (Use the "BSArch" tool linked in the Packaging Tools section to create/update your BSA file.)

Fallout 3 EGM manipulation

The following is based upon a FO3 thread entry by Skree000.
Note that if your head "accessory" (hat, helmet, piercings, etc.) is not conforming to the head, you may need to "unequip" and "re-equip" the accessory whenever you edit your face so it will reconform.

Havok Physics

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

TIP Havok a dead NPC

Thanks to madmongo and jokerine of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

Heightmaps

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

Interior Creation

Often neglected topic because the GECK tutorials walk you through the process. Thanks to EPDGaffney and random411 of the Nexus Fallout "New Vegas GECK and Modders" forum for pointing out the need for this section.

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

Angle and Grid Snapping

"Angle snapping" & "grid snapping" buttons are covered under "Categories: Preferences" and in the "Bethsoft Tutorial Layout on the GECK Wiki site. You want to enable this and configure the spacing before you start doing anything else.

Basic Interior location design guide

Thanks to djmystro of the "Fallout New Vegas" Mod Talk" forum for the basis of this section. He is the "I" reference in the following. The original source is the thread "Interior Location Creation Tutorial" in that forum.

Static Collections

Others have suggested you might want to add static collections. You can group entire rooms into a static collection, which you can change in game. This makes much easier if you want multiple versions of the same room.

However, it is not always a good idea. Making SCOLs that are very large, composed of many different objects, is just bad practice. SCOLs only help if you're making them out of 2-3 of the same objects, or if all the objects share the same type.

For building purposes, yes: It's convenient. But too many SCOLs, especially if they are large, can produce even worse performance than if the statics were by themselves.

The beauty of SCOLs is that once they are in place, you can ungroup them. It allows you to make more complicated objects and place them with the intent of splitting them later. One thing that this is useful for is if you were to make an indoor garden. You could put the planter and the plants in the same static collection and make a few template planters.

If all the objects share the same textures, then it may be even better to keep them in a static collection (if you use the static collection more then once).

LOD Generation

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

NOTE: The GECK LOD generation process uses "decimation" to create it's "low polygon meshes" for LOD/VWD. Please read the TESTG site sub-topic The problem with LOD/VWD files about why this is believed to be less effective than that used in later games such as Skyrim.

TIP xLODGen

Misc Topics

Subjects with only a short list of entries, not yet warranting their own section.

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

ESM and ESP Files

Master Files (those with a ".ESM" extension - e.g. Fallout3.esm) and Plugin files ("TES files" or "mods" for short - files with a ".ESP" - e.g., Fallout3mod.esp) are the core data files of Bethesda games. A master file acts as a database of all of the data for the world, including object data, dialogue, game settings, object placements, AI settings, landscape, script commands, cells, etc. The GECK is the primary tool we use to create, view, and edit master files and plugins for the "Fallout 3" and "Fallout: New Vegas" series.

(However, not all game data files are Master and Plugin files. Textures, meshes, sounds, videos, etc. are all part of the full game. More about these files elsewhere.)

Master files and Plugins are largely identical in format, but have some important distinctions in practice. The main practical difference is that GECK will not (natively) create Master files. Nor will it allow Plugin files to modify other Plugin files. (The Extender and PowerUp addons overcome this limitation.) However, be aware that when you change an ESP to an ESM, you can only do this properly by setting the file header "master" flag in xEdit/FNVEdit (though now with the GECK Extender you don't need to change the extension so long as the "master" flag is set) so that the ONAM record is generated; otherwise overrides to cells will not work. Additionally references by packages to markers and other scripted objects need to be persistent or they will not work in an ESM. See the GECK: Data Files entry for more.

It sometimes helps to think of using ".ESM" files to add new things, and ".ESP" files to change existing things or modify existing areas. Depending on how you create your "ESM", it might not modify existing things in-game. In other words, if there is an existing navmesh, an "ESP" will overwrite that navmesh, but an "ESM" might not. Similarly, if your "ESM" deletes an object (like a rock) it might work as an "ESP" but the rock might still be there as an "ESM".

It is possible for more than one Plugin file to depend upon the same Master file. They don't even have to be by the same author. Such Plugins are called dependencies. xEdit (aka FNVEdit) is the primary tool used to identify and manipulate such "master/dependent" relationships. (See the wiki article Missing Masters. LOOT can also detect such dependencies, but not alter them.) It can also be used to edit the values of specific records, and to create "compatibility" and "merge" patch files. (See the wiki Merged Plugin Guidelines for Personal Use article.)

If you have a problem with navmeshes after converting an ESP to an ESM, the problem likely is the original navmesh was deleted and your edit needs to be changed to an override (using xEdit/FNVEdit), then refinalized in GECK. A navmesh in the ESP will also eventually stop working. It is a known bug in the Gamebryo Engine and was not fixed until later in Skyrim's life (Creator Engine).

TIP When can you use an ESM only mod
Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

Factions and Reputation

GIMP Posters and Images

How to do something

How to add Loading Screens
Thanks to jessesDRpepper of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

How to change Game Settings aka GMSTs
Thanks to punchbattle of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

How to create a challenge

How to create a message

How to create a perk

How to create a Primative - activators, trigger volumes, multibounds, and occlusion planes

Tip Interior Occlusion problem
Thanks to FiftyTify, Radioactivelad, and placeholderthesteam of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following.

Tip Transparent Activators
Thanks to EPDGaffney and pixelhate of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

How to make a working pipboy icon''

Tip Pipboy Icons
Thanks to Leakingroof of the Nexus Fallout3 forum for the wiki article, and scrivener07 of the New Vegas Mod Talk forum for the basis of the following:

How to Move a Quest NPC
Thanks to madmongo and kingbeast88 of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

Import Custom Videos

Item Creation and placement

Make Readius Screenglares

Markers

TIP Portable xMarkers

NVSE Plugins

Unfortunately there is neither documentation nor tutorials on creating an NVSE Plugin. The only advice is to use the older, freeware IDA 5.0 Disassembler by Hex-Rays for 32-bit executables, which is hosted on the ScummVM site, and your knowledge of "C-like" programming languages. From that page:

A recent discussion [Mar 2018] about the most recent IDA Disassembler freeware 7.0 revealed that it no longer supports disassembling older DOS and Windows executables. This is obviously a problem for potential contributors, as well as potential GSoC students wanting to reverse engineer an old adventure game or RPG for their project. The obvious solution is to provide an earlier freeware version that still supports them. Consulting with Hex-Rays, they're kindly consented for us to host one of the earlier IDA freeware versions, for those in the future who wish to use it.

PAINTdotNET Normal Maps

Recipes

UV Mapping

XML

XML is a "data definition" structure, based upon a "data schema" which was defined by Bethesda. They didn't publish their "schema", but some things have been learned about it. However, without a published scheme, you must either use only elements found in other XML files, or be willing to experiment.

Music and Sounds

Fallout New Vegas features a brand new music engine versus that of the one used within Fallout 3 and Oblivion, which has effectively rendered the music tab within the creation of cells useless. See the Wiki tutorial Fallout New Vegas Music for the description of how this now works.

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

File folders by type:
  • collision sounds made by objects hitting other objects or the ground are aspects of the "Havok Material Properties" (edited with NifSkope), and are addressed under the topic of "Collision" in TIP: Collision Impact Sounds. These sounds are hard-coded into the game engine, but the main game typically uses only 32 of the identified 96 possibilities.
  • music (Data\Music): location/event soundtrack. MP3 stereo files.
  • songs (Data\Sound\songs\radionv): radio playlists. Individual song title files begin with the "mus_" prefix, and a "_mono" suffix. Mono: WAV (Pipboy) or OGG (radios/speakers) files; or Stereo: MP3 (Pipboy) files. Besides the obvious problem of a gigantic difference in file size (WAV files are roughly 5 times those of MP3s), this engine will actually play a stereo WAV file on a radio station twice (first the left channel will play, and then the right channel). This problem does not occur with stereo MP3 song files. See the TIP: Format to call a song for more detail on file formats for "radio stations".
  • sounds (Data\Sound\fx): noise/ambience/special effects(fx). WAV mono files. There are a number of sub-folders in the BSA under this category. These are just a sampling of common interest under this category:
  • amb (background noises): OGG files.
  • fx (sound effects): WAV mono files.
  • mus (location music): OGG files. Sub-folders for types:
  • bttl\allcityintro
  • bttl\allcityoutro
  • bttl\allruralintro
  • bttl\allruraloutro
  • endgame
  • inc\night
  • inc\peaceful
  • inc\day
  • inc\creepy
  • mysteriousstranger
  • tenpenny
  • npc (by type of actor): WAV mono files.
  • voc (sound effect "voices"): WAV mono files. These can be "broadcast" from radios or speakers with the playsound function in the menumode for terminals. The sound file length controls the timing.
  • voices (Data\Sound\voice): dialog. OGG and LIP mono files. These are "spoken" by Actors as "talking head" dialog. The LIP file controls the timing.

Tip Adding a new sound noises or fx file

Thanks to EDPGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for contributing clarifications to the following:

TIP Format to call a song

Thanks to EDPGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Multi-Level Areas

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Music and Dialog

Thanks to Glenrhee of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Replacing Battle Music

Thanks to KadoDragon and DaemonGrin of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP TCD and Gunfire Detection Events

Thanks to punchbattle of the "New Vegas Mod Talk" forum for the basis of the following.

TIP Weapon firing sounds

Thanks to Scott Clemmons of the GameAs "Fallout: New Vegas" forum for the basis of the following:

Navmeshing

(The process is essentially the same between the GECK and the Creation Kit. See also the Worldspace Creation section.)

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

TIP Bug extending NavMesh

Thanks to EPDGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Draw Navmesh Quickly

Thanks to kingbeast88 of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Navmesh Boundaries

Thanks to madmongo and EPDGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Navmeshing Exterior cells

Thanks to madmongo, EPDGaffney, and kingbeast88 of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Navmesh marker for Portal relocates

Thanks to chucksteel and madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

NifSkope Mesh Editor

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

TIP Attaching a light source to a mesh

Thanks to MonsterMonkey of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP Body part is floating

Thanks to AusAllerWelt of the Nexus "New Vegas GECK and Modders" forum for the basis of the folowing:

TIP Convert NIF header

Thanks to pixelhate of the Nexus Fallout "New Vegas Mod Troubleshooting" forum for the basis of the following:

TIP Lighting Property Flags

TIP Merging parts from different source files

Thanks to madmongo and M48A5 of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP Model Lighting

Thanks to EPDGaffney and pixelhate of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Rotate Mesh

Summary from How To Rotate A Mesh In Nifskope

TIP Shiny lines in exported NIF normal map

Thanks to TzeHuen, pixelhate, and KiCHo666 of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

Scripting

Other sections have relevant information to this subject. The following "Tips" in particular are applicable.

  • See the Custom NPCs section regarding scripting "AI Packages".

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

Refer back to the section GECK Form-ID, Base-ID, Ref-ID, and Editor-ID as necessary until the different types of "IDs" become second nature. The distinctions are crucial to getting various script functions to work correctly. They will primarily work with either Editor-ID or Reference-ID values. They seldom work with both, but if so the syntax must be read carefully to determine which type of value is used for each parameter.

Even if you have another favorite text editor, strongly suggest using Notepad++ along with the GECK specific syntax highlighters listed in the Programs and Tools section. These will catch most syntax errors, saving you a lot of grief.

There are 3 kinds of scripts:

  • The default when creating one is an Object script. Which means this is a script that can be attached to anything in the object tree of GECK that has a "script" drop down field ... except for Quests and Base Effects.
  • Quests require you to select the script as a "Quest" type. They are called (triggered) by various "Quest" conditions.
  • Base Effects require you to select the script as an "Effect" type, available when you are on the window with the "Script" drop down list. Only those type of scripts will show up in the list.

Effect scripts attach on "Assoc Item" just below "Effect Archetype". But Object and Quest scripts are straight forward on where to attach the script: to "Objects" or "Quests" respectively.

Reference variables must be "defined" and assigned a value before they can be used in a command. This often occurs in one of the script types that are executed before the one you are looking at in the moment. But don't assume they are: verify if your script won't save.

So in short: creating a script & saving it (which "compiles" it; turning it into actual code instead of "human readable" instructions) is required for it to then exist. If a script fails to compile, then it won't be saved. Use CIPCIS to determine if it is a simple syntax error preventing your script from compiling. But bear in mind CIPCIS is not aware of "script extender" syntax, so such will produce as error as an unrecognized command. Otherwise the problem is most likely either using an inappropriate command choice or the wrong type of value for the function in question.

But merely existing in a saved/compiled form means nothing towards having that script tell the game engine what to do. You must attach it to something (based upon which one of the 3 types it is) to then have the script code interact with the other dynamic game code.

Scripting Assistance

  • GECK Extender NVSE Plugin. Project to extend GECK functionality and bug fixes. Compatible with all NVSE script extender plugins. (Do not use together with GECK Powerup (nor the Forked version), which it replaces.)
  • GECK 1.4 Powerup Mod. Comes in a "standalone" version for the "vanilla" GECK functions, and one for GECK with NVSE functions. It fixes and improves some issues while providing the missing messages when the GECK compiler finds an error or warning, and lets you save a script without compiling it. Considered "essential" by experienced mod creators. (Replaced by GECK Extender. Do not use both together.)
  • CIPSCIS: Scripting for Beginners HTML Tutorial. Does not support "script extender" syntax.
  • Top 15 Best Practices for Writing Super Readable Code HTML.
  • RuntimeScriptProfiler by lStewieAl - shadeMe. An NVSE plugin to profile script execution. Ported from shadeMe's Oblivion plugin. Use this to check how efficient your script is when running.

TIP Best Practice Do not begin EditorIDs with numbers

Thanks to madmongo and EPDGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Best Practice Encapsulation Parens Brackets and Braces

Thanks to DoctaSax of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP Best Practice Function parameter separation with commas

Thanks to DoctaSax of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Best Practice Sharing Variables between Scripts

Thanks to the contributors to the Fallout New Vegas GECK & Scripting Help 101 forum on the (Age 18+ gated) "LoversLab.com" site for the basis of the following:

TIP Best Practice Type prefixes for Variables

Thanks to EPDGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

Tip Best Practice Avoiding Save Game Bloat

TIP Assigning and Testing variables

Thanks to Mktavish of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Adding Items to Actors aka Leveled Lists

Thanks to Ladez of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP Basic conditional test syntax

TIP Block Types Multiple vs Single Frame processing

TIP Companion Inventory Weight

Thanks to user826 of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP Compiling Scripts

TIP Corpses are not Actors or Objects

Thanks to EPDGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Debugging Compound Conditionals

TIP Debugging data to file

Thanks to DoctaSax of the Nexus Fallout "New Vegas GECK and Modders" forum for help with the following.

TIP Dismembering a corpse

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the following.

TIP Dispel Effect

Thanks to DoctaSax of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Do not overlook EventHandlers

Tip EventHandler for HotKey

Thanks to FiftyTifty of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP GameDaysPassed Bug

Thanks to Asterra and DoctaSax of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP GECK parses the entire line before evaluating

Thanks to DoctaSax of the Nexus Fallout "New Vegas GECK and Modders" forum for the following.

TIP Get Actor Health functions

 

TIP Level Lists and GetBaseObject versus GetBaseForm

Thanks to EPDGaffney, DoctaSax, and Mktavish of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Level Lists Nesting

Thanks to FiftyThifty of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Limit Radio Range to multiple Interior Cells

Thanks to EPDGaffney and user826 of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Mannequins aka static Actors

Thanks to b0bulat0r of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Master Dependency Checking

Thanks to miguick of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Mod Additions list

Thanks to DoctaSax of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP Multiple Script Effects

Thanks to FiftyThifty of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP NPC Weapon Choice

Thanks to EPDGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Object Transformation

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Pass a variable number into a script message

TIP Passing a Note to the player

Thanks to EPDGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Passing a Recipe to the player

Thanks to EPDGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Perk effect on target

Thanks to Mktavish of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Preload Scripts

Thanks to EPDGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Quest Advancement

Thanks to EPDGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum and RangerBoo of the Nexus Fallout "Mod Troubleshooting" forum for the basis of the following:

TIP Quest Delay timer

TIP Quest Stopping within its own script

Thanks to EPDGaffney of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Referencing Objects

Thanks to uhmattbravo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Relocating objects to Player by script

Thanks to madmongo and Nexusmodsaccountno2 of the Nexus Fallout "New Vegas Mod Talk" forum for the basis of the following:

TIP Restricting OnActivate blocks

Thanks to uhmattbravo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Script Result vs Result Script

Thanks to Mktavish of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Special Characters in String Variables

Thanks to Radioactivelad of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Testing new to you functions

Thanks to Mktavish of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Timers

Thanks to xqdcss of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Script Size limit

Thanks to jazzisparis of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

Texturing

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

TIP Custom Posters

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Customizing an existing texture

Thanks to pixelhate on the Nexus Fallout "New Vegas Mod Troubleshooting" forum for the basis of the following summary:

TIP Improving Texture Normal Maps

Thanks to pixelhate, EPDGaffney, and madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

TIP Saving Texture (DDS) with Transparency

Thanks to madmongo of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

Weapons

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

TIP GECK CTD when editing weapons

TIP Weapon Effect Animations

Thanks to pixelhate of the Nexus Fallout "New Vegas GECK and Modders" forum for the following:

TIP Weapon has unexpected zero percent VATS Chance

Thanks to yummy2 of the Nexus Fallout "New Vegas GECK and Modders" forum for the basis of the following:

Worldspace Creation

(Worldspace creation is basically the same between FO3 and FNV. See also the Navmeshing section.)

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

TIP Creating a new world map

Packaging Mods for Installation

Once you have created (and tested) your mod, you still aren't done. You have to "package" the ESM & ESP files, and all related "assets" into a structure suitable for installation. And given that there are more than one "mod manager" in use by people, this requires some forethought. Once you have created your "mod package", you then have to "publish" it on the Internet, presumably to the "Nexus Mods" site which is the assumption here.

Note: If you package your mod into an "executable installer" (so it has a ".exe" extension), it cannot be installed with a "mod manager". They can only deal with packages in 7Zip, ZIP, or RAR archive formats. You would have to "run" the installer executable first so it unpacked the package into a folder, and then manually move the contents of that folder to the correct locations under "Data".

[When linking to a Video, be sure to check the page sidebar for additional, related subject videos.]

Re Original images: You can use screenshots from the game, as long as you are the one who took them, or you use those posted by others with their explicit permission. When in doubt, see the "Terms of Service" and the image "file" page to check the permissions there.

Re Music: If you intend to include externally sourced "music", "voices", or "sounds", see the wiki article Illegal Music Pack Uploads and You. Unless it is your own original work, it's copyrighted by someone else. You have to check for permissions.

Re REQUIRED: That setting is for linking other mods/plugins that are essential for your mod to work correctly.

A video does not fall into that category, as it can only be describing how to install or use your mod. Your best bet if you feel it is essential people use it for your documentation is to provide that explanation and link it prominently in your description (as well as under the "Video" tab). (See the wiki Formatting and BBCode in Descriptions article.) However, bear in mind that:

  • Not everyone likes or can even watch some videos: e.g. medical conditions; a different native language (not easily translated from a video; while it is from a text file);
  • A video is no substitute for written instructions which should be included in a "ReadMe" file. That link not only explains that position but links to a "ReadMe Generator" program to help you create a "proper" file.
  • Most players do not want to read/view anything to get a mod installed. People (well, most of them) never seem to RTFM. They assume all they need to do is install, and at most then add it in their mod manager to their current game settings. They will then turn around and complain your mod is "broken" and demand you fix it NOW. This is a "fact of life" for mod creators. Plan for it, and reduce your installation complexity upfront as much as possible.

To that end, learn how to properly package your mod.

TIP BSA Files

Thanks to Zilav (of xEdit, BSArch, and TTW fame) in the Nexus Fallout "New Vegas Technical Support" forum for the basis of the following:
  • File Names.

While your current mod related filenames undoubtedly make sense to you, it is highly likely they were not named with the player or packaging in mind unless you are quite experienced with supporting mods. The number of mods with the "documentation" in a file simply named "ReadMe.txt" (as if there were no other files with that name, ever) is only slightly less than the total number of mods in existence. This might work for packaging a mod, but when it is unpacked by a mod manager (which typically place all installed "documentation" into a common "docs" folder) the latest installed will overwrite any already existing with that same name. Similarly, a number of mod plugin files with disconnected names (e.g. "name1.esm", "name2.esp", "patch-x.esp") when installed into a "load order" get separated and lost in the list of filenames and become extremely difficult to associate with each other unless some care is taken to prefix them with a common string such as the mod name or abbreviation. And without something to tie the mod abbreviation or prefix to the full package name (such as using both in the "ReadMe" filename), it can become impossible to trace backwards from the individual filename to the mod package name. Listing all the related plugin filenames and their purpose in a "documentation" file is also a reasonable practice for the benefit of both the author and the user.

Consequently, you need to give all the individual files in your package a common prefix. Long path and filename combinatons (up to 255 characters) are not a problem for modern operating systems, so don't be afraid to use them if necessary but try to use some restraint. This also means you need to ensure that anything which depends upon knowing those specific filenames (such as BSA files) is also updated.

  • Packages.

Packages can be divided into two categories: "standard" and "private":

  • A "standard" structured package follows the directory structure used by the game: that is vanilla game sub-folders under "Data" (such as "Meshes", "Textures", "Menus", etc.), with possibly additional "mod specific" sub-folders under those (e.g. "Meshes\armor\<ModName>"). Such can be handled by any of the available managers. Note the current generation of mod managers do not require you to include the "Data" folder itself. See the wiki article Modding Etiquette.
  • A "private" structured package introduces layers of non-vanilla sub-folders (e.g. "<Mod Name>\Data\<Mod version folder>\Meshes", etc.). Such have to be manually restructured to remove the offending "non-standard" folders before they can be properly installed using a "mod manager" (or even recognized if installed manually).

Obviously you want to create "standard" structured packages to avoid having to deal with the questions your users inevitably will have in getting your mod installed.

The most common mistake is that people misunderstand the part about creating an archive package that goes:

go back into the root of the folder so that the address bar once again shows '''C:\<MyMod>''' and then select all the files (.esp & .txt) and folders (meshes & textures) and right-click on them

You are NOT supposed to select the folder C:\<MyMod> in the example. You are supposed to select all the files (and any sub-folders) under that folder. If you select the folder itself, then the package gets created with that folder name as the top level in the archive, and every "mod manager" will treat it as a new folder under the "Data" folder. The files will not get placed in the correct locations; they will be buried one level down and never seen by the game engine.

Even when you build a "standard" package, the structure can be categorized into one of two forms: "simple" and "complex".

Simple structure

All modern "mod managers" can easily install packages with a "simple structure" that starts under (not including) the game "Data" folder (e.g. "Meshes\<category>\<mod name>\<other sub-folders as needed>"). They either add their files directly to the existing vanilla folders, or under their own sub-folder in order to keep them separate. It all depends upon the paths used when building the mesh and texture files. They might create their own, new folders starting at the "Data" level (e.g. "Data\NVSE"), but the package structure simply has the new folder in the package at the same level as the top level vanilla folders, like "Meshes", "Textures", and "NVSE". The "Data" folder is assumed by the manager. This is the reason some package structures, which require they be installed starting in the game root folder (e.g. "Fallout New Vegas\LOOT"), usually cannot be installed correctly with a "mod manager".

Complex structure

The simple structure does not have "conditional install components": meaning some files that are only installed under certain conditions such as the presence of a plugin from a different mod. Complex structure may also require certain "scripted" modifications to existing (usually vanilla) files. The different "mod managers" vary in their ability to handle such scripting (often called "install wizards" or simply "wizards"). If the scripting capabilities of a particular manager are required, it is the author's responsibility to make this adequately clear to the potential mod users. Often such structures use various sub-folders to group the files related to the specific condition together.

Understanding how the various "mod managers" can assist with installation will enable you to use a structure that takes advantage of the most available features of all of them.

Uploading to the Nexus

Mod Publishing Tutorial is written for Skyrim with plenty of illustrative images, but should be pretty universal with obvious changes for any specific game. It's on Nexus, but as the author suggests using the HTML version, that's what's linked first.

An older alternate, shorter version is the wiki How to upload mods article.

The wiki Formating and BBCode in Descriptions article can help you create a more distinctive description page. Remember: this page is where you "sell" your mod to potential players. Like any advertising campaign, "eye appeal" is important.

The next step

So, you wonder if you are ready to step out of the novice stage. You know you are at this stage after you realize the grand scheme you had in your head for your idea isn't going to happen, and scale back your initial ambition.

You should start looking to the forum boards and reading what others are coming up with for idea's on what to mod. Then just take that idea and since now you are more familiar with the GECK and information resources (like the GECK wiki), see if you can solve the problem with their idea. Just in a "lurking" fashion if you don't want to actually go public.

Many mod creators have found this to be a huge source of learning material, since they cannot come up with all the various idea's on what to mod on their own. Helping others is actually helping yourself, and there is nothing like trying to solve a particular problem to consolidate all the various bits of information into an understanding. You will almost always learn something new when investigating how to accomplish another's idea. (Anyone who has engaged in teaching others will tell you they learn more preparing to teach than they started already knowing.)

And just for learning purposes there are all the past posts, some of which have been solved. Many haven't, so there is no shortage of first time solutions to be worked out.


References

(Generally in order of appearance in the article.)

Refs Programs and Tools

Refs GECK Tools

Refs Image Tools

  • Maya (1 month free trial, $185/month or $1470/year subscriptions, 3 yr student/educator license.)
  • NIF tangents and binormals updater (freeware) by zilav.
  • NifSkope (freeware.) Note this is the latest release and may not be the best choice for FO3/FNV.

Refs Packaging Tools

Refs Scripting Tools

Refs Sound and Voice Tools

Refs Misc Other Tools

Refs Details

Refs Common Problems with GECK

  • New Vegas Templates (Hidden Category). This article section consists entirely of file "Template:GECK: Common Problems" content, which needs to be edited directly to update.

Refs GECK and the Active File

Refs GECK Form-ID, Base-ID, Ref-ID, and Editor-ID

Refs Custom items

Refs Custom Creatures

Refs Spawning modded items

Refs Worldspaces

Refs Additional Material

Refs 3D Model and Texture resources

Refs GeckCustom.INI

Refs Factions, Stealing and Ownership

Refs Bethsoft Basic Tutorials

Refs Animation

Refs Armor & Clothes

Note the KGTools web site containing the downloads is no longer accessible. Use the links on this site (adults 18+ only) instead.

Refs Blender (Mesh Editor)

Refs Collision

Refs Conversions

Tools behind a "gated" "Adult (18+) Only site" in their "modder resources" section.

Refs Creature Creation

Refs Custom NPCs

Refs Dialogue & Lip-synch

Refs FaceGen: Heads, Faces, Hairs, and Helmets

Refs Havok Physics

Refs Heightmaps

Refs LOD Generation

Refs Misc Topics

Refs ESM & ESP Files

Refs Factions & Reputation

Refs GIMP: Posters & Images

Refs How to ...

Refs Import Custom Videos

Refs Item Creation & placement

Refs Make Readius Screenglares

Refs Markers

Refs PAINT.NET: Normal Maps

Refs Recipes

Refs UV Mapping

Refs XML

Refs Music & Sounds

Refs Navmeshing

Refs NifSkope (Mesh Editor)

Refs Scripting

Refs Texturing

Refs Weapons

Refs Worldspace Creation

Refs Packaging Mods for Installation



Nexus wiki articles referred to by this article:


Nexus wiki articles that refer to this article: