File information
Last updated
Original upload
Created by
xNVSE TeamUploaded by
korri123Virus scan
Safe to use
Tags for this mod
Current section
About this mod
The New Vegas Script Extender, or NVSE for short, is a modder's resource that expands the scripting capabilities of Fallout: NV. It does so without modifying the executable files on disk, so there are no permanent side effects.
- Requirements
-
Off-site requirements
Mod name Notes x86 Visual C++ Redistributable Latest version required Mods requiring this file
- Permissions and credits
-
Author's instructions
You are free to use and upload mods that depend on NVSE (including ones that opt-in to donation points).
You are not allowed to repackage NVSE with your mod.File credits
Original NVSE maintainers and contributors: ianpatt, behippo, scruggsywuggsy the ferret and HLP
xNVSE maintainers and contributors: Kormákur (korri123), Demorome, jazzisparisDonation Points system
Please log in to find out whether this mod is receiving Donation Points
- Mirrors
- Changelogs
-
-
Version 6.3.10b
- Fix SRM command resolution / add experimental FireChallenge command
-
Version 6.3.9b
- Fix crash when exiting MCM introduced in recent versions
-
Version 6.3.8b
- Fix some macros not parsing correctly when spaces were ommitted. Ex: int i=10
-
Version 6.3.7
- Fixed crashes related to OnUnlock events. They are temporarily disabled pending some cleanup.
-
Version 6.3.6b
- confused: Add commands GetDoorSound, Ar_GetNth
- confused: Add events OnApplyIMOD, OnRemoveIMOD, OnLockBroken, OnLockpickSuccess, OnLockpickBroken, OnUnlock, OnTerminalHacked, OnTerminalHackFailed, OnRepair, OnEnable, OnDisable
- WallSoGB: Plugin preloading + increased max heap sizes, Default heap sized increased to 500MB from 400, File heap increased to 72MB from 64
- Demorome: Added kMessage_ScriptPrecompile for plugin developers to hijack the script compilation process
- confused: Added unary bitwise not operator (~)
- Bug fixes
- Kormakur: Fixed a use after free issue in vanilla ResetQuest command
- Demorome: Delay OnSell hook to avoid NVAC conflict
- Demorome: Clear inventory reference cache on preload + improved thread safety
- Confused: Added VERY EXPERIMENTAL new script compiler, which will be temporarily unsupported
- Confused: Cleaned up various hooks / improved consistency between runtime compilation and GECK compilation
- Confused: Fix / cleaned up decompiler output for scripts that utilize lambdas
- Demorome: Fixed eval assignment operators not flooring integers
- Demorome: Fixed some runtime compilation error messages
- Confused: Fixed parsing inconsistency with NVSE expression parser commands
-
Version 6.3.5b
- Fixed crash when attempting to fast travel, introduced in 6.3.5
-
Version 6.3.5
- == Enhance commands
- Demorome: Added flags to prevent sleeping, waiting, or fast-travelling to DisablePlayerControlsAltEx.
- == Bug Fixes
- Demorome: Fixed ar_FindWhere not working if the return value is an array.
- Demorome: Fixed UDF text files in "user_defined_functions" folder never getting cached with CompileScript if installed via MO2
- lStewieAl: Fixed missing actor and baseProcess checks in HasAmmoEquipped
- Kormakur: Fix rare UB in ExpressionEvaluator::Evaluate when script line fails
-
Version 6.3.4
- == Enhance commands
- Demorome: GetRefs-style functions have a new optional filter arg to filter by baseForm.
- Demorome: All scripts in "nvse/user_defined_functions" folder are now precompiled at startup; this means CompileScript will just return an already compiled script, reducing lag if it would've otherwise been compiling in a busy segment.
- == Bug Fixes
- Kormakur: fixed memory leak when calling lambdas with variables inside of console/scriptrunner.
- Potentially fixed refIDs for 0xFF lambdas and CompileScript scripts from rarely getting changed to point to some other form when loading (credits to lStewieAl).
- Demorome: fixed CompileScript caring about lower/upper case and "" vs "/" in filepaths for caching.
- Jazzisparis: ScriptAnalyzer::Decompile - Fixed local vars definitions missing in result/partial scripts; Fixed invalid opcode not being shown.
-
Version 6.3.3
- == Add commands
- CopyIRAlt, CompileScript
- == Enhance commands
- DecompileScript - can now decompile result scripts for any applicable form type (Jazzisparis)
- Add aliases for DisableControlsAlt(Ex)
- == Bug fixes
- Fixed disabling attacking with DisableControlsAltEx also disabling NPC attacks
- Fixed sv_Split's new arg, JoinDelimiters, which previously garbage strings sometimes
- Fixed CallAfterFrames callbacks not being cleared on load
- Fixed EGS check repeatedly telling to install the Epic Games Patcher even if the patcher was already installed.
- == General enhancements
- RegisterCommand - will print both the command name and its alias (if any) (Jazziparis)
-
Version 6.3.2
- == Add commands
- DisablePlayerControlsAlt / DisablePlayerControlsAltEx
- EnablePlayerControlsAlt / EnablePlayerControlsAltEx
- GetPlayerControlsDisabledAlt / GetPlayerControlsDisabledAltEx
- == Bug fixes
- Reverted fix "Fixed assigning a number to a ref var in eval contexts never working". Caused more trouble than it was worth.
- Fix PickOneOf's return type
-
Version 6.3.1
- == Enhance commands
- Add "useSingleDelimiterString" arg to sv_Split
- == Add commands
- GetHeadingAngleX, GetWeaponCanUseAmmo, SetAmmoConsumedPercent
- == Bug fixes
- Fixed compilation bugs w/ parentheses in strings
- Fixed ForEach loops breaking early when looping over 1-element formlists (resulting in nothing happening)
- Fixed runtime script issues with functions returning ambiguously-typed values
- Use new StrHash function from Jazzisparis to fix rare cases of string hash collision.
- Fixed flags that got broken for CallFor, CallAfter, and CallAfterFrames
- Add locale support for string functions (credits to yvile)
- Fixed assigning a number to a ref var in eval contexts never working.
- Fixed SetStringIniSetting, deprecated the broken SetStringGameSettingEx
- == General enhancements
- Added a more detailed warning for trying to use unpatched EGS version (ty Wall).
-
Version 6.3.0
- == Enhance commands
- Added a DontRunWhilePaused flag/option for all condition "Call" functions.
- == Add commands
- IsInventoryRef, HasAmmoEquipped, GetEquippedWeaponCanUseAmmo, IsEquippedAmmoInList, GetEquippedWeaponUsesAmmoList, DebugPrintVar
- == Bug fixes
- Fix let macro not supporting array assignment
- Fix UDFs not allowing short/long param types.
- Fix let macro not supporting short/long var declarations. REQUIRES RECOMPILE; scripts that were using this had the macro evaluate wrongly, which is baked into the script.
- Fix preprocessor not being used in runtime CompileScript, plus fix crash there when trying to use the multiple-variable-declarations-on-one-line macro.
- Fixed quest script variables declared using One-Line Multiple Variable Declarations not being accessible for other scripts.
- Fixed type lookup for quest script variables not ignoring commented-out variables.
- Fixed runtime compilation error for certain scripts with lambdas in them, caused by preprocessor being turned on at runtime now.
- Fixed GECK sometimes not recognizing variable types for variables declared inside UDF parameters.
- == PluginAPI
- Fixed the plugin logging interface, which required an API change. Don't think any plugin was using this yet though.
- == nvse_config.ini
- Document sPluginLogPath string option in the LOGGING section.
-
Version 6.2.9
- Enhance commands
- SetEventHandler(Alt) & RemoveEventHandler: added a way to define handlers with a specific priority, so they can run before/after other handlers: added a "priority"::SomeInt arg. More information here.
- NumToHex: Added alias IntToHex, added AddPrefix optional arg.
- ToNumber now has a third arg, bReportError. If toggled, it will report an error if converting the string to a number was unsuccessful. The error can be caught using TestExpr.
- RunScript now returns a boolean value instead of always printing if the script returned true or false.
- Add commands
- IntToBin, ValidateRegex, IsEventHandlerFirst, IsEventHandlerLast, GetHigherPriorityEventHandlers, GetLowerPriorityEventHandlers
- Bug fixes
- SetEventHandlerAlt can no longer be used with LN events, to prevent confusion. LN events are purely owned by LN, so arrays can't really be used, and the flush-on-load wouldn't happen.
- Fix flushing script callbacks (Call__ functions) right after the "NewGame" event finishes running.
- Fix not pushing event name for new event calling system, fixing GetCurrentEventName for newer events.
- PluginAPI
- Add ReportErrorIfNoResultGiven event flag; if off (default) and a handler does not return a result, will pass an array element with the Invalid type.
- Allow HasScriptCommand to detect script blocks (thanks, yvile!).
- Add SetNativeHandlerFunctionValue
- Add Ptr-type event params
- Add Set/RemoveNativeEventHandlerWithPriority
- Document bAlwaysPrintScriptCompilationError in nvse_config.ini
-
Version 6.2.8
- Add commands
- DispatchEventAlt, SetEventHandlerAlt, GetSelfAlt, DumpEventHandlers, GetEventHandlers, CallWhilePerSeconds, CallAfterFrames, GetSoldItemInvRef.
- Enhance commands
- Add MaxAngle filter arg to GetRefs__ functions.
- Added DontRunInMenuMode / DontRunInGameMode flags for CallWhile / CallWhen
- Remove the limit on the event name length for Set/RemoveEventHandler functions.
- Bug fixes
- Fix SetActorBaseFlagsLow - was using the baseForm's flags instead of the actor's flags.
- Fix GetNthQuestObjective and GetCurrentObjective (credits to c6)
- Fixed TestExpr not returning 0 (false) if an NVSE error occured in one of its nested child expressions.
- Fixed ProcessEventHandler not restoring the removed ":" character from the eventName string if the event isn't an LN event.
- Fixed an issue with SetEventHandler + LN events (introduced in last version) - the event filters were being type-validated before determining if the event was an LN event (LN events don't have types to check).
- Fixed OnSell event - it should now actually run.
- PluginAPI
- Fixed, clarified and added functions for event handler NVSE plugin exports.
- Expose ReportError for PluginExpressionEvaluator.
- For NVSE plugin devs
- Allow multiple unit test files
- Fix max script size compilation limit at runtime. Credits to Korma. However, nothing except developer tools use this at the moment, and JIP's Script Runner was already limited by a fixed-size character buffer.
- nvse_config.ini
- nvse_config.ini now ships with all relevant settings, along with descriptions.
- Add bAlwaysPrintScriptCompilationError in [Release]. Off by default. Only affects in-game script compilation error messages, i.e using JIP's Script Runner or other. (By default, it only printed the errors if console was already open)
-
Version 6.2.7
- Bug fixes
- Fix issue with ar_Erase
- Fix issues with event handling system
- Fix possible crashes in JIP script runner scripts and lambdas
-
Version 6.2.6
- Bug fixes
- Fix invalid memory happening in Ar_InsertRange
- Fix dodgy code causing crashes with InventoryRefs
- Fix refs not working correctly in && NVSE expressions
- Fix PreLoadGameHook to run reliably and load cosave vars correctly
- Fix issue with string function results in expression evaluator
- Fix string and array vars leaking when copied to a lambda
- Update project to Visual Studio 2022
- Add new script event framework for plugins
- Add commands
- SetEditorID
- sv_Trim
- Enhance commands
- TempCloneForm
- Add option to set mod index of cloned form to caller script
- CallAfterSeconds, CallForSeconds, CallWhile, CallWhen
- Add option to pass parameters by value
- Add bRunInMenuMode argument
- PluginAPI
- Add NVSEEventInterface
- Allow plugins to create custom events and dispatch them in an easy way
- Allow plugins to register event handlers
- Robust filtering mechanism for param types and calling reference
- Export ScriptTokenCanConvertTo
- Add ExtractArgsV to plugin expression evaluator for easier variadic arg extraction of args
- Add NVSEScriptInterface::CompileScript
- Add NVSEScriptInterface::CompileExpression
- Query all plugins first before loading them
-
Version 6.2.5
- Fix lambda bug which resulted in console errors and possibly memory leaks and crash
- Fix inline expression and variable definition bugs
- Fix GetPlayerCurrentAmmo, GetAmmoCasing, GetDebugSelection, GetWeaponItemMod, GetWeaponCritEffect, GetHotkeyItem not having return types for NVSE expression compilation
- Make ForEach loops work with Form lists
- Fix GetPackageCount printing 0, better GetNthPackage prints
- Fix memory leak in Algohol functions
- Added command ModUIFloat
- Add missing FOSE functions GetNthQuestObjective, GetQuestObjectiveCount, GetCurrentObjective, PrintActiveTile, SetCurrentQuest
- Fix short circuit bug
- Fix GetRefs 201 not retrieving NV-unique items
- Disable error logging on RemoveMe when it returns from scripts
- Fix CallAfterSeconds when SGTM is not 1.0
- Add "check for dupes" option to "listAdd.." funcs
- GECK: Fix line numbers when compiling lambda scripts and multiline comments
- GECK: Fix assignment shorthand quirks and crashes regarding string maps
-
Version 6.2.4
- New script command: CallWhen
- Fix Sv_Destruct causing crashes for captured lambda variable lists
- Fix ar_Unique not working
- Allow lambdas to continue gracefully even if parent variable list can't be resolved
- Address possible performance issue in handle event, where Structured Event Handling was being used more than necessary
- Fix inline expressions not being implicitly assigned a "this" reference
- Fix animation group param type not accepting strings in inline expressions in-game
- Fix nested call to CallWhen (CallWhen scripts calling CallWhen) causing a game crash
- GECK: Fix issue in variable assign macro where using a tab instead of a space would make it fail to detect the macro
- GECK: Fix compilation of lambdas inside Result Scripts (before they would not get properly cleaned up inside GECK and you would end up with new Script forms inside the master each compilation)
- GECK: Fix return value of UDFs being automatically assigned as number, instead of being ambiguous which would cause incorrect compile time errors
- GECK: Fix "expected end of line" error in some cases where inline expressions were used within NVSE expressions
- GECK: Fix nested one line lambdas not compiling correctly (i.e. {} => call ({} => print "I'm nested"))
-
Version 6.2.3
- Fix lambda scripts in console scripts / jip_script_runner esp-less script bugs
- Fix CallAfterSeconds not being cleared on game load
- Add commands Ar_Unique, CallFunctionCond (thanks Demorome!)
- Fix PluginAPI CallFunctionScripts not returning array function values
- Add PluginAPI::ArrayAPI::ArrayHasKey to Plugin API
-
Version 6.2.2
- Fix another subtle lambda issue - thanks Eddoursul for bug report
- Fix possible crash while loading save
- Fix crash if GetWeaponType is called on non-weapon
-
Version 6.2.1
- General bug fixes
- Fix lambda issues
- Add support for loops, lambdas and macros in console
- Add ar_Any, ar_All, ar_DeepEquals, GetWeaponRegenRate, SetWeaponRegenRate script functions
- Add support for int a, b, c variable declaration syntax
- Fix if blocks being validated inside multiline comments
- Allow == to compare arrays without just comparing IDs
- PluginAPI: add GetContainerType
- Ar_Generate improvements
-
Version 6.2.0
- Fix public ref maps not getting loaded from cosave.
-
Version 6.1.9
- Fix co-save issues with 6.1.8
- Show vanilla script errors only for mods you have edited scripts for in the past.
-
Version 6.1.8
- Remove hardcoded 4 MB co-save limit
- - Introduce warning if mods are deemed to be leaking, display which mods and instructions on how to clean the co-save.
- bWarnScriptErrors
- - Fix decompiled line being wrong
- - Only enable by default if GECK was opened in the past 2 days
- GECK Editor
- - Fix variable assign macro being case sensitive to variable types
- Ar_Filter, Ar_MapTo, Ar_Generate, Ar_FindWhere
- - Allow no SetFunctionValue if return value is 0
-
Version 6.1.7
- Bug fixes
- Fix lambda crash
- Fix some decompiler issues
- Fix Vanilla UI+ / Stewie's Tweaks bug with bContainerDefaultToRightSide
- Fix hot reload lambda issue
- Add commands ar_Generate, ar_Init (thanks Demorome)
- Optimize string var assignments from let expressions to be much faster in scripts
- Capture lambda variables inside SetEventHandler in temporary scripts (UDFs and effect scripts)
- Add inline expression support in console, allow string_var and array_var in console (ported from Improved Console plugin)
- Only issue script error warnings in top corner if GECK is installed (for mod authors) or [Release] bWarnScriptErrors INI option is set to 1
- Print decompiled lines for vanilla game script errors if bWarnScriptErrors is 1
- Prevent Dispel from spamming script error log when it returns false to stop script
-
Version 6.1.6
- New scripting functions/commands
- Ar_Filter
- Ar_FindWhere
- Ar_MapTo
- DecompileScript
- HasScriptCommand
- GetCommandOpcode
- Introduce script decompiler for mod scripts which sources are lost
- Decompiler can be used to verify that scripts compiled correctly as GECK can sometimes mess up the compilation
- It can also be used to find out which script lines caused errors in mods.
- Add to PluginAPI
- HasScriptCommand
- DecompileScript
- Fix lambda issue with error messages
- Fix assignment shorthand syntax for math inside array brackets
-
Version 6.1.5
- Add support for lambda scripts to capture variables from parent script if the lifetime of the parent script is shorter than the lambda (UDFs and effect scripts) in select functions (CallFor, CallAfter and CallWhile).
- EDITOR: Fix variable assignment macro syntax being bugged when prefixed with a variable type (int iVar = 10 would not work for example before)
- Additions to PluginAPI: IsScriptLambda, LambdaSaveVariableList and LambdaUnsaveVariableList (latter two are used to capture variables)
- 6.1.6 Changelog
-
Version 6.1.4
- Fix save bloat issue (NVSE string and array types not getting cleaned up for UDF parameters) introduced in last version
-
Version 6.1.3
- Add Expression Evaluator to Plugin API
- Fix shorthand assignment bugs
- Fix minor lambda issues
- Revert script crashing functionality change as it broke old broken (yet still used for some reason) mods
- Scripting: allow = to be used in place of := in more contexts for consistency with shorthand assignment macro
-
Version 6.1.2
- Fix vanilla commands failing if the ParamInfo* was nullptr
- Increase maximum args for plugins calling UDF scripts from 5 to 10
-
Version 6.1.1
- Fix string concatenation bug (broke sprint animations)
- Fix comments making line numbers in compiler errors inaccurate in GECK
-
Version 6.1.0
- See https://www.nexusmods.com/newvegas/articles/55693
-
Version 6.0.9
- Fix GoTo and Label, which got broken in 6.0.7 and subsequently broke some mods.
-
Version 6.0.8
- Add new commands (old UI functions are bugged)
- GetUIFloatAlt
- SetUIFloatAlt
- SetUIStringAlt
- Fix bug related to UDF parameters and Hot Reload NVSE
-
Version 6.0.7
- Fix ToString ($) not working on too long strings after JIP removed own hook
- ExtractArgs replaced with ExtractArgsEx for all functions
- Fix GetAltPerkRank function
- Fix V3Normalize function
-
Version 6.0.6
- Fixes some bugs that got introduced in 6.0.5
-
Version 6.0.5
- Bug fixes related to strings and set ... to
- Fixes for NVSE that used to be in JIP LN now transferred to NVSE
- Add ParamType_ScriptVariable for plugins
-
Version 6.0.4
- Fix minor array bug
- Fix crash / NVAC alert that could happen in events
- Improve error reporting
-
Version 6.0.3
- Fix string bloat issue that haunted some mods
- Fix cosave not saving mod index for strings
- Fix GetInGrid for some mods
- Fix some string formatting issues
-
Version 6.0.2
- Fix crash that could happen
- Fix array bug
-
Version 6.0.1
- Fixed some bugs and refined some console messages in regards to scripting
- Fixed a crash that could happen when loading interiors (handled by NVAC)
- Updated loaded version for Vortex
-
Version 6.0.0
- NVSE expression evaluator heavily optimized for performance (let, eval, foreach, call etc. no longer considered slow)
- NVSE arrays heavily optimized for performance
- NVSE cosave saving and loading heavily optimized for performance
- Optimizations in UI functions and string formatting functions
- Automatic cleanup of string variables and array variables (no more string and array var save bloating)
- Mod authors should however continue using Sv_Destruct and Ar_Null to prevent save bloating for people using older versions of NVSE
- Short circuit evaluation of conditional expressions in eval
- Examples:
- Func0 && Func1 - Func1 won't be called or evaluated if Func0 returns false
- Func0 || Func1 - Func1 won't be called or evaluated if Func0 returns true
- Improved error logging and reporting on NVSE script errors (script line printing)
- Ease restrictions on console (NVSE commands call and print can now be used in console for example)
- Improved error reporting when NVSE plugins fail to load
- NVSE Plugin API expanded (added messages DeferredInit for callbacks when all objects are initialized, MainGameLoop for main loop callback)
- Minor bug fixes in various parts of NVSE, including tiny memory leaks and crashing code sections
- Codebase refactoring and cleanup
-
Version 5.1b4
- versions where not coherent.
-
Version 5.1b3
- CTD when starting a new game with the NoGore edition of NVSE.
-
Version 5.1b2
- Update3D works again.
-
Version 5.1b1
- Possibly Important: ExtractArgs used in Compiler Override mode was always returning true even if the argument types were wrong.
- pretty much all commands are affected by that change so it is possible for your mods to suddenly display errors they weren't before.
- Change definition for SetWeaponAmmo and SetWeaponProjectile to allow for AnyForm.
- Change a few functions to take either an actor (ref) or an actorBase (npc). It was implemented in the code but not in the function definition.
- GetBaseSpellListSpells, GetBaseSpellListLevSpells, GetBasePackages, GetBaseFactions, GetBaseRanks and GetHeadParts.
- Fix ToggleUIMessages(True), thanks to RoyBatterian
- SetPermanent applies to reference as intended rather than to base forms (as that would simply duplicate IsQuestItem).
- Possible bugfix:
- Added multi threading handling to the calling of functions due to hard to track reports of function call failling.
- I have no idea if it will help, but..
- Also, those calls error reports have been stligthly changed to help distinguish possible causes.
- GetSourceModIndex will accept any form as the optional parameter.
- Remove restriction on Set3D for the playerCharacter (highly experimental) and known to have a visual glitch. When compiled in debug mode it is not working at all.
- GetPermanent should persist accross saves now.
- SpecialIdles for NPC and Creature:
- [actor or npc or creature].GetNthAnimation index [npc or creature or actor]
- returns the nth animation selected on an NPC or a creature as a string_var
- [actor or npc or creature].AddAnimation animationName [npc or creature or actor]
- Select an alternate animation for an NPC or a creature
- [actor or npc or creature].DelAnimation animationName [npc or creature or actor]
- Deselect an alternate animation for an NPC or a creature
- [actor or npc or creature].DelAnimations [npc or creature or actor]
- Deselect all alternate animation for an NPC or a creature
- [actor or npc].GetClass [npc or actor]
- Returns the class of an NPC
- [actor or npc].GetNameOfClass [npc or actor]
- Returns the class name of an NPC
- ShowLevelUpMenu
- Optional Alternate Update3D for the player (set AlternateUpdate3D to 1 in nvse.ini section [RELEASE] and/or [DEBUG]). It has an effect but with a huge visual defect that should be temporary.
- Misclaneous: New data interface for plugin authors needing internal offset to NVSE code.
-
Version 5.1.6
- Fixed heap corruption bug
- Fixed hacky piece of code making recompiles buggy
- Everything should be a lot faster since NVSE was compiled using a newer toolset
-
The New Vegas Script Extender, or NVSE for short, is a modder's resource that expands the scripting capabilities of Fallout: NV. It does so without modifying the executable files on disk, so there are no permanent side effects.
Once installed, no additional steps are needed to launch Fallout New Vegas with NVSE's added functionality. You can start the game using NVSE from nvse_loader.exe
xNVSE is compatible with the Steam and GOG versions of the game.
Not supported: German No Gore, Xbox Gamepass, Epic Games Store, and Bethesda.net versions.
For Epic Games Store version owners, consider using lStewieAl's patcher to make that version work with xNVSE.
Join the xNVSE Discord here!
Installation (Manual)
Install with Vortex
The source code is available here (Github)!
Releases are also available on Github; they're the same files as what's available here.
Once installed, no additional steps are needed to launch Fallout New Vegas with NVSE's added functionality. You can start the game using NVSE from nvse_loader.exe
xNVSE is compatible with the Steam and GOG versions of the game.
Not supported: German No Gore, Xbox Gamepass, Epic Games Store, and Bethesda.net versions.
For Epic Games Store version owners, consider using lStewieAl's patcher to make that version work with xNVSE.
Join the xNVSE Discord here!
Installation (Manual)
- Download the xNVSE from the Files tab.
- Extract all files inside the top-level folder in the ZIP to your game folder (where FalloutNV.exe is located).
- Run the game using nvse_loader.exe.
- To confirm it is working, open the console with the tilde (`) key and type GetNVSEVersion. This will display the version number of the current NVSE build.
Install with Vortex
- Click the "Vortex" button in the top-right of this page.
- Once installed and enabled, ensure you have deployed it by clicking "Deploy Mods" on the Mods toolbar.
- Use the shortcut on the dashboard to start the game with NVSE.
The source code is available here (Github)!
Releases are also available on Github; they're the same files as what's available here.