You are on page 1of 29

5.

0 Beta 03
Fixes:
The return type for GetModLocalData was set on SetModLocalData.
Both are restored to their proper value.
HasVariable would return true when either parameter was invalid.
JIP (JazzIsParis) wrote a version of EquipItem2 that works for F
NV.
Changes:
Added creature specific flags and template flags to ActorBaseDat
a
Decoding from JIP's nvse plugin up to v21.00
Known issue:
SetScript on a loaded ref has no effect until the reference is r
eloaded.
SetScript on a BaseEffect will not be detected by an active effe
ct.
RunScript is unreliable. It may fail to start, and will only run
the first script block once, and then only if it is a GameMode block.
New:
GetCurrentQuestObjectiveTeleportLinks
returns an array of the path to the current objective ta
rgets
the path is an array of zero or more doors (call
ed teleportLink) followed by the target itself.
Works only on the current objective of the current quest
for the player, so no parameters required.
Will build the teleportLinks if needed, but activating t
he quest should have done that already.
Port of degree trig functions
dSin, "Calculates the
dCos, "Calculates the
dTan, "Calculates the

from OBSE
sin of a value in degrees"
cos of a value in degrees"
tan of a value in degrees"

dASin, "Calculates the arcsin of a value in degrees"


dACos, "Calculates the arccos of a value in degrees"
dATan, "Calculates the arctan of a value in degrees"
dATan2, "Calculates the arctan of two values in degrees"
dSinh, "Calculates the hyperbolic sin of a value in degr
ees"
dCosh, "Calculates the hyperbolic cos of a value in degr
ees"
dTanh, "Calculates the hyperbolic tan of a value in degr
ees"
Port of a subset of radian trig functions from OBSE
ATan2, "Calculates the arccos of two values in radians"
Sinh, "Calculates the hyperbolic sin of a value in radia
ns"
Cosh, "Calculates the hyperbolic cos of a value in radia
ns"
Tanh, "Calculates the hyperbolic tan of a value in radia
ns"

5.0 Beta 02
This version adds support for the russian version (different steam appid
)
Fixes:
ListClear could generate a CTD on save if forms were added throu
gh AdFormToFormList (but not with ListAddForm).
Still the handling of numAddedObjects is not 100% cohere
nt. Should be looked into.
Get/SetActorBaseFlagsLow/High was operating on the wrong flags.
GetActorFIKstatus checks the FIK flag directly.
Changes to GetParentWorldspace broke it for some references. Cor
rected by merging the two methods.
Dispatching an unhanded user defined event from an event handler
resulted in a CTD.
Changes:
IsPlayable supports TESRace also.
Ported from OBSE
HasEffectShader
let bool := ref.HasEffectShader anEffectShader
returns 1 if the reference is playing the effect shader
5.0 Beta 01
Version bumped to 5 because of a change in a plugin interface which did
not have a version.
Before checking the NVSArrayVarInterface kVersion, make sure NVSE versio
n is at least 5
Fixes:
bipedFlags in TESBipedModelForm restricted to a byte. Some armor
s seem to have uninitialized data in the higher bytes.
Changes:
Decoding from JIP's nvse plugin up to v8.0
NVSEArrayVarInterface:
added version. kVersion is 2.
added GetArrayPacked.
Returns if the array is packed (an array
) or not (a map). Useful when accessing all arrays globally.
NVSEScriptInterface:

did not have a version either, a

dded at the same time.


added version. kVersion is 1.
New
GenericCheckForm:
Checks if said form is present in the list of form. (sam
e encoding as the other GenericXXXForm functions)
let anIndex := GenericCheckForm whichEmbeddedList object
ContainingTheEmbeddedList formToAdd
-1 means invalid parameters
-2 means not found
Anything positive (>=0) is the index
GetBit
Gets the value of a bit inside a bitmask
let aBool := GetBit bitmask bitIndex
bitmask is an integer.

bitIndex starts at 0 and should not be greater t


han 20. Higher values are unreliable and prone to conversion.
ar_Packed
Returns if the array is packed (an array) or not (a map)
. Useful when using an array_var defined in another plugin.
4.6 Beta 04
Changes:
Decoding from JIP's nvse plugin up to v7.0
OnOpen/OnClose extended to container that weren't detect
ed.
New
Get/SetEyesFlags
get or set the eyes flags.
let aTest := GetEyesFlags eyes [bitmask]
bitmask checks only the bit set. (see v2 beta 6
below for how to specify the flags)
SetEyesFlags eyes newFlags
Useful value for bitmask:
1 = playable
( = SetBit 0 0 )
2 = Not male
( = SetBit 0 1 )
4 = Not Female ( = SetBit 0 2 )
Get/SetHairFlags
get or set an hair flags.
Same syntax as Get/SetEyesFlags.
Another useful value for bitmask:
8 = Fixed

( = SetB

it 0 3 )
Get/SetActorFIKstatus or Get/SetFIK
get or set the Foot IK status of an actor
requires to be called on a ref that is an actor
let aBool := anActor.GetActorFIKstatus
anActor.SetFIK 1
Changing FIK status can only happen in certain condition
s that are to be found and explicited (while playing animations ?)
The global FIK setting can be accessed through the GameS
etting bFootIK::RagdollAnim
4.6 Beta 03
Fixes:
OnPackage events names were mixed.
OnCombatEnd parameters were wrong.
Using CIOS inside event scripts possibly led to CTD.
OnDrop should work now.
GetFactionRank returns -1 when called with an invalid parameter.
Vanilla function which return forms are identified as such.
ConsoleOutputFile will not double "Carriage Return" on each line
.
Some functions parameters changed from TESObject to AnyForm, so
a literal value can be specified in scripts rather than needing a variable to ho
ld the value.
IsScripteed, GetScript, RemoveScript, SetScript, IsFormV

alid, RunScript. (Please report any other where the change would be beneficial).
Changes:
The second parameter for OnDrop is changed from a reference to a
form to handle case where no valid reference are created during drop. In that c
ase the value is the baseForm.
IsScripted, GetScript, RemoveScript and SetScript work with Effe
ctSetting now (aka MGEF or Base Effect) IF the archtype is Script.
Merged edits to GameForm.h from JazzIsParis NVSE plugin v3.
New event OnDropItem
Same as OnDrop and fired concurrently, but will return the baseF
orm of the item dropped and not the (temporary) reference for it. Useful when th
e engine does not or cannot create a reference.
New built in User Defined Events related to dialogs
OnSpeakerText
This will let you modify the subtitle of a text "spoken"
by an NPC.
Fired before the text is rendered on the screen, also be
fore global text replacement (&global; place holders) is done so the engine can
properly calculate text size on screen.
Args content:
eventName = OnSpeakerText
senderName = NVSE
tileName = the name of the TileText that will be
containing the text in the MenuRoot arborescence. Something like MenuRoot\Dialo
gMenu\NOGLOW_BRANCH\DM_SpeakerText
speakerName = Name of the NPC speaking. Access t
o the NPC FormID is borderline impossible at this point.
text = Text as entered in the plugin in the Info
list.
To change the text on return, change the value of Args["
Text"] in your handler.
OnTopic
This will let you modify the subtitle of a text "spoken"
by the PC.
Fired before the text is rendered on the screen, also be
fore global text replacement (&global; place holders) is done, so the engine can
properly calculate text size on screen.
Args content:
eventName = OnTopic
senderName = NVSE
tileName = the name of the TileText that will be
containing the text in the MenuRoot arborescence.
text = Text as entered in the plugin in the Topi
c text or the prompt.
To change the text on return, change the value of Args["
Text"] in your handler.
The speaker name is assumed to be the player.
I could
I am worried about the
You can
leTileTextHook=0 in the

generate an event for every text displayed on screen but


potential for abuse.
opt out of dialog hooks, using nvse_config.ini. Set Enab
[Text] section.

Ported from FOSE


AddSpellNS
screeen)

(AddSpell No Spam: does not display the spell on

Ported from OBSE


Door teleport functions:
bool IsLoadDoor
float GetDoorTeleportX
float GetDoorTeleportY
float GetDoorTeleportZ
float GetDoorTeleportRot
SetDoorTeleport NewDoorRef X Y Z Rot (in degrees)
OBSE's last parameter (bool bTemp) was removed b
ecause FalloutNV will never save a change in the DoorTeleport data.
Added:
Get/SetFlagsLow, Get/SetFlagsHigh: gets or set individual flags
on any form. Of course not all flags should be used, and not all flag will have
an effect in game.
(see v2 beta 6 below for how to specify the flags).
HasConsoleOutputFile
(HasCOF)
no parameter, return not null if a COF have been set by
SCOF.
GetConsoleOutputFile
(GetCOF)
no parameter, return the file name set by SCOF as a stri
ng_var.
PrintF and PrintDebugF (PrintDF)
Alternate versions of Print and PrintDebug that append t
o a file whose name is specified as the first parameter.
Console command imported:
TFIK
(Toggles Foot IK System)
4.6 Beta 02
Fixes:
if adding too many user defined handler (as in more than two :)
), the callback list of previous event handler got corrupted.
4.6 Beta 01
Fixes:
Variable names terminated with a comment without interleaving wh
itespace can be referenced in scripts.
Changes:
SetScript and GetScript modified based on jazzisparis comments.
GetInGrid and GetInGridInCell:
Returns wether a specific reference is found in the grid centere
d on the specified cell (or on the PlayerRef).
GetInGrid aref:reference [CellDepth:integer [includeTakenRefs:in
teger]]
GetInGridInCell aCell:reference aref:reference [cellDepth:intege
r [includeTakenRefs:integer]]
Like GetFirstRef/GetFirstRefInCell cellDepth should be:
0, 1 or 2 to scan for a cell grid of, respectivly, 1, 3 or 5 c
ells wide. Higher values could be used if you increased uGridToLoad.
no value is intepreted as 0, i.e. a single cell.
-1 is interpreted as scan all loaded cell (ie use uGridsToLoad
).

Ported from OBSE:


GetGridsToLoad:
returns the effective value of the uGridsToLoad ini sett
ing
OutputLocalMapPicturesOverride:
a.k.a. OLMPOR.
OutputLocalMapPicturesOverride
Calls OutputLocalMapPictures. If you used SetOLM
PGrids to limit the number of cells, then only those will be output.
SetOutputLocalMapPicturesGrids:
a.k.a. SetOLMPGrids
SetOutputLocalMapPicturesGrids numCell
Limits OLMPOR to a square of numCell. numCell mu
st be odd and cannot exceed uGridsToLoad (nor 5). Which leaves 1 and 3 for valid
values.
Initial port of Events: start reading here http://obse.silverlock.org/ob
se_command_doc.html#Events
SetEventHandler
sets an event handler, that is a User Defined Function t
hat will be called when the event fire.
You can filter by source, ie on which reference
the event occurs, and by object, ie which object the interacted with the source
to fire the event
SetEventHandler eventName eventUDF [pair:source] [pair:o
bject]
The source pair is expected to be either ref::aR
ef or first::aRef or ref::aFormList or ref::aBaseForm or first::aFormList or fir
st::aBaseForm
The object pair is expected to be either object:
:aForm or second::aForm or object::aFormList or second::aFormList
If the source or the object is a form list, then
SetEventHandler will be called in turn for each member of the form list.
If one of the member is another form list, the p
rocess is called recursively.
(There is no attempt at detecting loops
in list)
RemoveEventHandler
removes an event handler previously registered by SetEve
ntHandler
same syntax as SetEventHandler.
if using a formlist for object, it is not required that
this list be identical to the list used for SetEventHandler.
GetCurrentEventName
Use inside the event handler UDF. Returns the eventName
of the currently fired event. Useful if the same UDF handle more than one event.
let aStringVar := GetCurrentEventName
User-Defined Events (copied from OBSE v0021 distribution, obse_command_doc.h
tml)
In addition to the events supplied by NVSE, mods can also register event h
andlers for events dispatched by other mods. These types of events are referred
to as "user-defined events".

The event handler for a user-defined event always takes one argument: a St
ringmap. The stringmap argument always includes the following two key-value pair
s:
"eventName": a string indicating the event which occurred
"eventSender": a string indicating the origin of the event. By default t
his is the filename of the mod which dispatched the event, unless that mod suppl
ied an alternate sender name.
The stringmap argument will also contain any additional data supplied by t
he sender of the event.
To register an event handler for a user-defined event, use SetEventHandler
. To dispatch an event to any registered listeners, use DispatchEvent
Example:
scriptname EventHandler
array_var args
begin Function {args}
print "Event " + args->eventName + " received from " + args->eventSender
print $arg->activator + " was activated by " + $arg->activatedBy
end
scriptname EventSender
begin onActivate
DispatchEvent "Activated" (ar_Map "activator"::GetSelf "activatedBy"::Ge
tActionRef)
end
DispatchEvent - dispatches a user-defined event to any registered listener
s. The eventName parameter specifies the event that occurred; this should be fai
rly unique to prevent event name clashes between different mods, but the event h
andler can also disambiguate name clashes by checking the name of the event send
er if necessary. The optional second parameter is a StringMap containing any add
itional information about the event. When the event is dispatched, the array wil
l also include the event name and the name of the sender. If omitted, the name o
f the sender is the filename from which the event originated; otherwise it match
es the supplied third argument.
(dispatched:bool) DispatchEvent eventName:string args:StringMap senderName
:string
You cannot filter on User defined Events!
This version supports some standard script event: tested all "in Geck".
They should correspond to the available block types in scripts.
"onadd"
"onactorequip"
// Seen working. Depending of th
e source event, using Print/PrintC from the event handler can be purposely forbi
dden.
// Also seen fired in strange context, like an actor equippi
ng another :)
"ondrop"
"onactorunequip"
"ondeath"
"onmurder"
"oncombatend"
"onhit"
"onhitwith"
"onpackagestart"
"onpackagedone"

"onpackagechange"
"onload"
"onmagiceffecthit"
// changed from OBSE. Passes the EffectS
etting, not the effectCode, which doesn't exist.
"onsell"
"onstartcombat"
"saytodone"
"onopen"
"onclose"
"ontrigger"
"ontriggerenter"
"ontriggerleave"
"onreset"
"onactivate"
More events will be added or completed later, but there will never be ev
ery event present in OBSE.
At least two other events can be registered "on0x0080000" and "o
n0x00400000", but I don't know what event they mark :) If anybody encounter them
, please report in what context. Thank you.
Also supported are those NVSE events, corresponding to the PluginAPI mes
sage interface:
"ExitGame"
"ExitToMainMenu"
"LoadGame"
"SaveGame"
"QQQ"
"PostLoadGame"
"RuntimeScriptError"
"DeleteGame"
"RenameGame"
"RenameNewGame"
"NewGame"
"DeleteGameName"
"RenameGameName"
"RenameNewGameName"
4.5 beta 08
Fixes:
Variable names terminated with a comment without interleaving wh
itespace can be referenced in scripts.
Resolve CTD when using Animation hooks, with a big help from Queued.
4.5 beta 07
Fixes:
GetArrayVariable return type corrected.
All String and array map modification are protected by a critica
l section due to concurrency issues.
Handling of {} in compiler override or let/eval expression.
You can use {} to enclose function parameters in complex
expression so the parser knows which arguments are used by which function
let aVar := aFunction { parm1 parm2 } + anotherF
unction { parm3 parm4 parm5 }
() are used to enclose complete expression.
let aVar := ( aFunction parm1 parm2 ) + ( anotherFunctio
n parm3 parm4 parm5 )
EquipItem2 recognises the third parameter when used.
SetHotkeyItem should no longer interrupt the calling script when
called and should work when called on an item without ExtendData.

SetHotkeyItem should properly remove the previous hotkey before


setting the new one.
RemoveMeIR should work when called on an item without ExtendData
.
EquipMe and UnEquipMe should work when called from the item obje
ct script.
All NVSE functions returning forms are explicitly declared as su
ch. This should be proof read by someone :)
I need to do the same for all vanilla commands.
Corrections to HealthPercent functions by jazzisparis
Fix to SetPackageLocationRadius, radius should be corrrectly set
now.
Known issue:
EquipItem2 is broken in the sense that the item is equipped afte
r EquipItem returns so which item is equipped is not detected :( So it is the sa
me as EquipItem currently.
Changes:
Builtin objects preloaded are no longer reported as incomplete r
eads during the load of the cosave.
Rewrote type casting in IsRefInList. Hope to avoid reported CTD.
Activated showing faction rank names as part of %c in ExtractFor
mattedString. Should apply to all format specifiers functions.
Extract from OBSE documentation:
%c - replaced with the name of a component within anothe
r object. Takes two arguments - an object (ref) and the index of the component y
ou want to access (short). Supported object types:
Faction - prints the male rank title of the nth rank.
NVSE already had support for AMMO (full names, short nam
es or abreviation).
Calling GetFirstRef/GetNumRef with a cellDepth of -1 will use uG
ridsToLoad to calculate how many cells to scan.
TestExpr has been tested :)
IsPlayable is extended to weapon and ammo.
Added:
GetPerkRank:
Return actor Perk rank or -1 if the perk is not applied
[ref.]GetPerkRank [actor]
GetAltPerkRank:
Return the alternate companion Perk rank or -1 if the pe
rk is not applied
[ref.]GetPerkRank [actor]
WARNING: those two functions can only apply to the player !
Get/SetEquipmentBipedMask:
GetEquipmentBipedMask returns which flags an armor uses.
SetEquipmentBipedMask sets which flags an armor uses.
The mask is a bitmask that should be build by using Clea
rBit/SetBit (see below).
The order of bit index for slots can be found in NVSE so
urce files (GameForms.h, search for EBipedFlags).
4 = HasBackpack
8 = Medium Armor
32 = Power Armor
64 = Non playable
128 = HeavyArmor
Other bits are either unused or unknown.

GetRefs:
returns an array of references of a given type in the current cell
same syntax as GetFirstRef,
GetRefs [formType [cellDepth [includeTaken]]]
GetRefsInCell:
returns an array of references of a given type in the specified cell
same syntax as GetFirstRefInCell,
GetRefsInCell cell [formType [cellDepth [includeTaken]]]
IsPluginInstalled:
returns 1 if the specified plugin is installed, else 0
IsPluginInstalled pluginName
GetPluginVersion:
returns the version of the specified plugin, or -1 if the plugin is n
ot installed
GetPluginVersion pluginName
Note: The plugin name is set by the plugin during registration and displayed
in nvse.log, it is not the filename.
GetBaseNumFactions
Returns the count of factions of an actor baseform.
let iCount := [ref.]GetNumFactions [actor|charac
ter|creature]
GetBaseNthFaction
Returns the Nth faction of an actor baseform.
let rFaction := [ref.]GetNthFaction [actor|chara
cter|creature]
GetBaseNthRank
Returns the Nth rank of an actor baseform. Same order as
GetBaseNthFaction.
let iRank := [ref.]GetNthRank [actor|character|c
reature]
GetNumRanks
Returns the number of ranks for a faction.
let iCount := GetNumRanks faction
A set of functions to extract embedded lists into arrays:
GetBaseSpellListSpells
GetBaseSpellListLevSpells // Tested but no data
GetBasePackages
GetBaseFactions
GetBaseRanks
GetActiveFactions
GetActiveRanks
GetFactionRankNames
GetFactionRankFemaleNames
GetRaceHairs
GetRaceEyes
GetHeadParts
GetLevCreatureRefs
GetLevCharacterRefs
GetListForms
Most rank functions require using the corresponding faction function to

know which rank applies to which function (same index).


They all follow this calling logic:
let anArray_var := [ref.]GetXXX [form]
GetBaseXXX and GetActiveXXX can be called on a ref (which must be an act
or) or by passing an actor (or even an actorBase for GetBaseXXX).
Others require passing the proper form as parameter.
GetNthDefaultForm
Returns the form at index in the array of defaul
t forms.
The list of default form and their corre
sponding index can be found in GameForm.h (kDefaultObjectNames).
let rForm := GetNthDefaultForm f
ormIndex
SetNthDefaultForm
Sets the form at index in the array of default f
orms. !!There is no check that the new form is valid!!
The list of default form and their corre
sponding index can be found in GameForm.h (kDefaultObjectNames).
SetNthDefaultForm formIndex newF
orm
GetDefaultForms
Return an array of all the default forms.
The list of default form and their corre
sponding index can be found in GameForm.h (kDefaultObjectNames).
let aArrayVar := GetDefaultForms
A "somewhat generic" set of functions to manipulate embedded lists of forms:
GenericAddForm:
adds a form to a list of form of an obje
ct at index
let indexAddedAt := GenericAddForm whichEmbeddedList objectContainingTheEm
beddedList formToAdd index
GenericReplaceForm: change a form in a list of form of an object at index
let previousForm := GenericReplaceForm whichEmbeddedList objectContainingT
heEmbeddedList replacingForm index
GenericDeleteForm: delete a form from a list of form of an object at index
let previousForm := GenericDeleteForm whichEmbeddedList objectContainingTh
eEmbeddedList index
GenericGetForm:
returns a form from a list of form of an
object at index
let currentForm := GenericGetForm whichEmbeddedList objectContainingTheEmb
eddedList index
valid values for whichEmbeddedList are:
0 = Race Hair
1 = Race Eyes
5 = actor base (NPC or creature) package
6 = actor base spell
7 = actor base levelled spell
10 = NPC head part
13 = FormList form (redundant with existing functions :) )
index for end of list is -2
Imported from Console:

con_Inv
4.5 beta 06
Fixes:
Definition of Hairs and Eyes in TESRace.
InventoryRef functions should be fully functional now, including
for the player inventory.
Plugin manager:
RegisterCommand will properly record the plugin opcodeBa
se.
RegisterTypeCommand will only provide an eval version wh
en appropiate.
GetParentPlugin reports the correct answer for opcode 0.
GetModLocalData and GetAllModLocalData return types corrected.
Changes:
During reference variable evaluation, Player is replaced by Play
erRef when appropriate.
Proof of concept:
Different animations set and/or different skeleton. see TestAnim
.txt in Data\nvse.
Added:
EquipItem2:
equips and runs onEquip block
[ActorRefID].EquipItemZ ObjectID:ref NoUnequipFlag:int{0
, 1} HideEquipMessage:int{0, 1}
EquipMe:
equips the calling object on its owner
ref.EquipMe
UnequipMe:
unequips the calling object on its owner
ref.UnequipMe
IsEquipped:
returns 1 if the calling object is currently being worn
Currently, it must be called on an InventoryRef, though.
ref.IsEquipped
GetInvRefsForItem:
returns an array of temp refs to objects of the specifie
d type in the calling container
(refs:Array) GetInvRefsForItem baseObject:ref
All 5 ported from OBSE.
SetHotkeyItem:
sets the item associated with a hotkey
(nothing) SetHotkeyItem whichHotkey:short item:r
ef
ClearHotkey:

clears the item associated with the specified hotkey.


(nothing) ClearHotkeyItem whichHotkey:short
Both ported from OBSE by Luthien Anarion.
PrintDebug or PrintD:
Version of Print that only display something if the scri
pt is in debug mode.
SetVariable:
Sets a numeric variable on a ref or a quest:
ref.SetVariable variableName variableValue
SetVariable variableName variableValue Quest
SetRefVariable:
Sets a form variable on a ref or a quest:
ref.SetRefVariable variableName anyForm
SetRefVariable variableName anyForm Quest
Get/SetStringIniSettings:
string_var GetStringIniSetting "settingGroup:settingName
"
the : seems to be expected by the engine.
example: let s := GetStringIniSetting "sDPad:LAN
GUAGE"
SetStringIniSetting "settingGroup|settingName"
the | is coherent with the SetNumIniSettingsEx
Imported from Console:
con_ShowVars
(requires SetConsoleEcho 1 to be visible)
4.5 beta 05
Fixes: archive contains the actual corrections.
4.5 beta 04
Fixes:
Accounted for difference in the Reference class between Runtime
and Editor.
This allows Let to use Reference.Variable without needin
g the compiler override.
GetRaceName should return a valid name now.
Changes:
Rewrote GetRace and GetRaceName to be more robust and accept eit
her a ref or a baseForm as parameter.
4.5 beta 03
Fixes:
Looping through InventoryRef no longer removes existing extras w
hen count is <=1
4.5 beta 02
Fixes:
intf format.

Allows ErrorLogHook to have an integer parameter before the vfpr


(submitted by Queued)

EndVATScam:
Unselect any target and quit VATS mode. (ported from Queued)

4.5 beta 01
Fixes:
bad handling of $string_var name length
Changes:
User Defined Functions can have up to 15 parameters now (from 10 before).
Get/SetModelPath, GetPath functions when passed a reference, will operate on
the reference's baseForm.
TESPackages identified as being safe to perma clone. Functionality still incom
plete and not published. :-(
A few comments added or changed, or some typos corrected. Declared missing kno
wn virtual functions or found fields.
4.2 beta 04
Fixes:
Pelinor's corrections to InventoryRef.
GetScopeModelPath
SetScopeModelPath

returns the model path of the scope of a weapon


sets the model path of the scope of a weapon

4.2 beta 04 alpha 4


Fixes:
ListClear should try to do something now.
4.2 beta 04 alpha 3
Revert parenthesis chnage from alpha 1 due to breaking existing scripts.
Adds comparable handling using braces.
Changes:
Open/Close braces checks are added, in the NVSE parser so that a
ny extraneous closing brace will terminate the sub expression.
This way, said extraneous brace, and the rest of the line, will
be then parsed by the GECK parser.
This should allow mixing NVSE expressions and standard expressio
ns in the same source line.
(Please report any non override script that fails to compile onc
e converted to the compiler override)
4.2 beta 04 alpha 2
Provide a map file for runtime.
4.2 beta 04 alpha 1
Fixes:
GetUserTime properly returns an array now.
Port of (Set)IsPlayable from OBSE
IsPlayable
returns wether an armor is usable by the
player.
SetIsPlayable Sets wether an armor is usable by the player.
GetEquipmentSlotsMask returns which slots an armor uses.
SetEquipmentSlotsMask sets which slots an armor uses.
The mask is a bitmask that should be build by using ClearBit/Set
Bit (see below).
The order of bit index for slots can be found in the GECK (order
in the list) or in NVSE source files (GameForms.h, search for EPartBit).
The first bit is at index 0

Import console command ShowQuestVars


SetConsoleEcho toggles wether the engine print to the console,
required by con_SQV
Returns the current state
GetConsoleEcho checks wether the engine print to the console, u
ses no parameters.
con_SQV
imports the console command ShowQuestVar
s, requires ConsoleEcho turned on.
4.2 beta 03
Fixes:
Update3D avoids the player due to camera issues.
4.2 beta 03 alpha 6
Port of the Algohol OBSE plugin
V3Length
V3Normalize
V3Crossproduct returns
QFromEuler
ional flag indicates if the angles came
QFromAxisAngle
on
QNormalize
QMultQuatQuat
QMultQuatVector3
QInterpolate
QToEuler
ional flag indicates the output will be

by emtim:
returns length of given vector3
returns normalized vector3
crossproduct of two vectors
converts euler angles to quaternion. opt
from an actor
converts axis-angle rotation to quaterni
returns normalized quaternion
multiplies two quaternions
multiplies vector3 by quaternion
interpolates between two quaternions
converts quaternion to euler angles. opt
used for rotating an actor

Fixes:
Corrected handling of $: Vanilla functions should recognise the
$ parameter and the result should not be truncated to the variable nae size any
more.
ianpatt's Windows 8 compatibility fix for steam_loader.
Heap management not limited to debug build.
4.2 beta 03 alpha 5
IsPlayerSwimming
ayer
GetTFC

workaround IsSwimming returning false for the pl


returns wether or not Fly Camera is active

4.2 beta 03 alpha 4


Port part of Heap management from SKSE originally by Sheson.
Set "DefaultHeapInitialAllocMB" in the "Memory" section of nvse_
config.ini
Vanilla value is 200, hardcoded max value is <500. 400 h
as been reported functional, 500 induced CTD.
No ScrapHeap as there is'nt a single allocation but at least 6 w
ith varrying sizes.
Cleanup default NVSE.log for release build.
Added logLevel management to nvse.ini.
Value logLevel in RELEASE or DEBUG section. Valid values are 0 (
FatalError) to 5 (Debug), anything greater will be treated as 5.
Fixes:
RemoveScript, tests for unassigned pointer now.
Label/Goto return addresses assigned by script refID. So the sam

e label can be used in a script and a user defined function.


Corrected the number of subprocedure called when setting a strin
g_var. Applies to BipedPath Funcs and GetPath funcs
4.2 beta 02
GetRace
GetRaceName
con_SCOF
PickOneOf
the NPC inventory.

returns
returns
imports
returns

the race of an NPC


the name of the race of an NPC
the console command SCOF
a random item in the FormList that is present in

Version 3 of the messaging interface, providing alternate Delete/rename


save event with the file name rather than the file path:
kMessage_DeleteGameName,
// version of the messag
es sent with a save file name instead of a save file path.
kMessage_RenameGameName,
kMessage_RenameNewGameName,
Rename(s) will remain untested until someone knows how to rename a save
in game :)
4.1 beta 01
mostly ports OBSE plugin events/strings/arrays/user functions/ex
pressions and the relevant serialization
I tried to keep function names identical to OBSE, so I c
an refer directly to the OBSE online documentation. http://obse.silverlock.org/o
bse_command_doc.html
added variables to nvse_settings.ini to help control debugging without r
ecompiling.
ported support for serialization/messages/strings/arrays... to the plugi
nAPI
messages available:
PostLoad
ed plugins once all plugins have been loaded (no data)

sent to register

ExitGame
from main menu or in-game menu

exit to windows

ExitToMainMenu

exit to main menu from i

n-game menu
LoadGame
Dispatched immed
iately before plugin serialization callbacks invoked, after savegame has been re
ad by Fallout
// dataL
en: length of file path, data: char* file path of .fos savegame file
// Recei
pt of this message does not *guarantee* the serialization callback will be invok
ed
// as th
ere may be no .nvse file associated with the savegame
SaveGame

as above

Precompile
EDITOR: Dispatch
ed when the user attempts to save a script in the script editor.
// NVSE
first does its pre-compile checks; if these pass the message is dispatched befor
e
// the v

anilla compiler does its own checks.


// data:
ScriptBuffer* to the buffer representing the script under compilation
PreLoadGame
iately before savegame is read by Fallout

dispatched immed
// dataL

en: length of file path, data: char* file path of .ess savegame file
ExitGame_Console

exit game using 'qqq' co

nsole command
PostLoadGame
dispatched after an atte
mpt to load a saved game has finished (the game's LoadGame() routine
//has re
turned). You will probably want to handle this event if your plugin uses a Prelo
ad callback
//as the
re is a chance that after that callback is invoked the game will encounter an er
ror
//while
loading the saved game (eg. corrupted save) which may require you to reset some
of your
//plugin
state.
//data:
bool, true if game successfully loaded, false otherwise */
PostPostLoad
sent right after kMessa
ge_PostLoad to facilitate the correct dispatching/registering of messages/listen
ers
// plugi
ns may register as listeners during the first callback while deferring dispatche
s until the next
RuntimeScriptError
script error is encountered during runtime/

dispatched when an NVSE


// data:

char* errorMessageText
DeleteGame
e deleting the .nvse cosave and the .fos save.

sent right befor


// dataL

en: length of file path, data: char* file path of .fos savegame file
RenameGame
e renaming the .nvse cosave and the .fos save.

sent right befor

// dataL
en: length of old file path, data: char* old file path of .fos savegame file
// you a
re expected to save the data and wait for kMessage_RenameNewGame
RenameNewGame

sent right after RenameG

ame.
// dataL
en: length of new file path, data: char* new file path of .fos savegame file
NewGame
e iterating through plugins newGame.

sent right befor


// dataL

en: 0, data: NULL


SetEyes

sets an NPCs eyes


[ref.]SetEyes eye:form [NPC:npc]

GetEyes

gets an NPCs eyes


[ref.]GetEyes [NPC:npc]

SetHair

sets an NPCs hair


[ref.]SetHair hair:form [NPC:npc]

GetHair

gets an NPCs hair


[ref.]GetHair [NPC:npc]

GetHairLength

sets an NPC hairLength (apparently unused, but s

till :) )
[ref.]GetHairLength
SetHairLength

[NPC:npc]

sets an NPC hairLength (apparently unused, but s

till :) )
[ref.]SetHairLength

hairLength:float [NPC:npc]

GetHairColor
gets an NPCs hair color (code: 1=Red, 2=Green, 3
=Blue, other=color)
[ref.]GetHairColor hairColorCode:int [NPC:npc]
SetHairColor
sets an NPCs hair color (color as RGB bytes)
[ref.]SetHairColor hairColor:int
GetNPCWeight
gets an NPCs weight
[ref.]GetNPCWeight [NPC:npc]
SetNPCWeight

sets an NPCs weight (no idea if that has any eff

ect :) )
[ref.]SetNPCWeight weight:float [NPC:npc]
GetNPCHeight
gets an NPCs height
[ref.]GetNPCHeight [NPC:npc]
SetNPCHeight
sets an NPCs height
[ref.]SetNPCHeight weight:float [NPC:npc]
To see the effect of any of those functions, you should call Upd
ate3D
Update3D
patched ModFactionRank same issue as SetFactionRank, rank was not taken
into account if modified on the reference.
some scripts functions from OBSE
GetVariable
looks up the value of a variable
by name. If called on a reference, the ref must be scriptable, but not necessar
y a quest.
[ref.]GetVariable variableName:string [QUEST:quest]
HasVariable
returns true if the script has a
variable with the specified name
[ref.]HasVariable variableName:string [QUEST:quest]
GetRefVariable

looks up the value of a ref variable by

name
[ref.]GetRefVariable variableName:string [QUEST:quest]
GetArrayVariable
looks up an array variable by name on th
e calling object or specified quest
[ref.]GetArrayVariable variableName:string [QUEST:quest]
CompareScripts

returns true if the compiled scripts are

identical
CompareScripts script:formID script:formID
ResetAllVariables
sets all variables in a script to zero,
unless called on a reference, apply to the calling script.
[ref.]ResetAllVariables
GetNumExplicitRefs

returns the number of literal references

in a script
GetNumExplicitRefs script:formID
GetNthExplicitRef

returns the nth literal reference in a s

cript
GetNthExplicitRef script:formID
RunScript
GetCurrentScript
GetCallingScript
OBSE expressions, see http://obse.silverlock.org/obse_command_doc.html#O
BSE_Expressions
Let
eval
While
Loop
ForEach
Continue
Break
ToString
(and $)
Print
testexpr
TypeOf
GetUserTime
GetModLocalData
(verified ?)
SetModLocalData
OBSE user-defined functions, see http://obse.silverlock.org/obse_command
_doc.html#User_Defined_Functions
Call
Function
SetFunctionValue
OBSE Array variables, see http://obse.silverlock.org/obse_command_doc.ht
ml#Array_Variables
ar_Construct
ar_Size
ar_Dump
ar_DumpID
ar_Erase
ar_Sort
ar_CustomSort
(to be verified, had to wait for user fu
nctions and then forgot)

ar_SortAlpha
ar_Find
ar_First
ar_Last
ar_Next
ar_Prev
ar_Keys
ar_HasKey
ar_BadStringIndex
ar_BadNumericIndex
ar_Copy
ar_DeepCopy
ar_Null
ar_Resize
ar_Insert
ar_InsertRange
ar_Append
ar_List
ar_Map
ar_Range
OBSE String variables, see http://obse.silverlock.org/obse_command_doc.h
tml#String_Variables
sv_Destruct
sv_Construct
sv_Set
sv_Compare
sv_Length
sv_Erase
sv_SubString
sv_ToNumeric
sv_Insert
sv_Count
sv_Find
sv_Replace
sv_GetChar
sv_Split
sv_Percentify
sv_ToUpper
sv_ToLower
IsLetter
IsDigit
IsPrintable
IsPunctuation
IsUpperCase
CharToAscii
ToUpper
ToLower
AsciiToChar
NumToHex
ToNumber
GetNthModName
GetName
GetKeyName
GetFormIDString
GetRawFormIDString
GetFalloutDirectory
ActorValueToString
ActorValueToStringC
GetModelPath

GetIconPath
GetBipedModelPath
GetBipedIconPath
GetTexturePath
SetModelPathEX
SetIconPathEX
SetBipedIconPathEX
SetBipedModelPathEX
SetTexturePath
GetNthFactionRankName
SetNthFactionRankNameEX
GetStringGameSetting
SetStringGameSettingEX
3 beta 05

again some package functions.


SetPackageTargetReference

sets package target to the calli

ng reference
[ref.]SetPackageTarget package:form [target:ref]
tance

SetPackageTargetCount
sets package target count or dis
(alias is SetPackageTargetDistance)
SetPackageTargetCount package:form count:int

GetPackageTargetCount
gets package target count or dis
tance (alias is GetPackageTargetDistance)
GetPackageTargetCount package:form
SetPackageLocationRadius

sets package start location radi

us
SetPackageLocationRadius package:form radius:float
GetPackageLocationRadius

gets package start location radi

us
GetPackageLocationRadius package:form
3 beta 04
complements SetOpenKey
ClearOpenKey
clears the key used to unlock the calling object (shows
the lock has broken until unlocked).
ref.ClearOpenKey
3 beta 03
more package functions mainly.
SetOpenKey
sets the key used to unlock the calling object
ref.SetOpenKey Key:formID
GetCurrentPackage

gets the current package from an actor


[ref.]GetCurrentPackage [actor:ref]

GetPackageLocation

gets package start location


GetPackageLocation
package:form

The following, while called on a reference, runs on the reference baseFo


rm
GetPackageCount

gets the count of packages from an actor

base form
[ref.]GetPackageCount [actor:ref]
form

GetNthPackage
gets the Nth package from an actor base
(O is the package with the highest priority)
[ref.]GetNthPackage packageIndex:int [actor:ref]

SetNthPackage

sets and returns the Nth package to an a

ctor base form


[ref.]SetNthPackage package:form packageIndex:in
t [actor:ref]
AddPackageAt
adds the Nth package to an actor base fo
rm : 0 at top, -1 at end, returns index
[ref.]AddPackageAt package:form packageIndex:int
[actor:ref]
RemovePackageAt
an actor base form: -1 at end

removes and returns the Nth package from


[ref.]RemovePackageAt packageIndex:int [actor:re

f]
RemoveAllPackages
removes all packages from an actor base
form returns count removed
[ref.]RemoveAllPackages [actor:ref]
3 beta 02
Added isNogore to NVSEinterface
Compatible with nogore runtime version
Fixed GetFactionRank (Report the exact rank and not 1 after SetFactionRa
nk)
3 alpha 01
New functions:
HasOwnership
checks wether an NPC owns a reference or has the required factio
n rank to own said reference
IsOwned
checks wether a reference is owned by an NPC or that said NPC as
the required faction rank to own the reference
SetOwningFactionRequiredRank
set the owning faction required reference
GetDialogueSubject
Get the subject reference in a converation. That is the referenc
e who STARTED the conversation, (subject of Hello/Greatings topic)
GetDialogueTarget
Get the target reference in a conversation. That is the referen
ce who ANSWERS the conversation, (target of Hello/Greatings topic)
GetDialogueSpeaker
Get the current speaker in a conversation. That is the current s
ubject in a topic.
note: GetCurentPackageTarget does not provide the other member of a conv
ersation reliably.
SetPackageLocationReference
Change the target reference of a package.
GetAgeClass
Classify the age of the standard races: -1 undefined. 0 is Child
, 1 is default, 2 is Old, 3 is OldAged.
RemoveMeIR,
removes an inventory reference from its container, optionally tr
ansferring it to a different container, in much the same way as the vanilla Remo
veMe command. The inventory reference becomes invalid once this command is calle

d and should no longer be used.


CopyIR
copies an inventory reference to the specified container. The ca
lling object needn't be in a container and remains valid after the command is ca
lled. If the calling object is equipped, the copy will not be equipped.
CreateTempRef
creates a temporary reference to the specified form. This refere
nce does not exist in the gameworld or in a container, and remains valid for onl
y one frame. It is mostly useful for creating a stack of one or more items to be
added to a container with CopyIR
GetFirstRefForItem,
returns the first entry in an array of temp refs to objects of t
he specified type in the calling container
GetNextRefForItem
returns the next entry in the array of temp refs to objects of t
he specified type in the calling container
AddItemOwnership
Specifies the ownership info while adding an item
AddItemHealthPercentOwner
Specifies both the ownership info and the health while adding an
item
"Token" functions: A token is an Item that can only be present once in i
nventory, and must allow Health and Ownership. Most likely created from an Armor
with no biped slot so it can't be equipped.
GetTokenValue, GetTV
Get the value of a token
SetTokenValue, SetTV
Add or modify the value of a token
GetTokenRef, GetTR
Get the referenece of a token
SetTokenRef, SetTR
Add or modify the reference of a token
SetTokenValueAndRef, SetTVR
Add or modify both the value and the reference of a token
GetPaired
Detects if ref and actor cross references each other (through it
em ownership). Usage for thinks like is familly member, is partner of where ther
e maybe multiple instances (n n links)
GetRespawn
Checks the respawn flag on Actor
SetRespawn
Sets the respawn flag on actor. Effective on standard NPC, unrel
iable on LevelledCharacters
GetPermanent
Checks the permanent flag on Reference
SetPermanet
Sets the permanent flag on Reference. Effective on standard NPC,

unreliable on LevelledCharacters
GetBaseForm
Find the actual baseForm of a Levelled form
IsRefInList
Checks whether a ref, its baseform or its leveled baseForm is in
a FormList
Changed functions
TempCloneForm
IsClonedForm
Both accept any Form as the source, rather than just 3D object t
o allow for cloning of packages for example.
ListGetFormIndex
Eval version of the function created
2 beta 14
- PluginApi extended to support:
* condition functions in plugins.
* function alternate name in plugins using DEFINE_COMMAND_ALT_PLUGIN.
* NVSECommandTableInterface (like OBSE).
2 beta 13
- PluginApi extended to support Messaging Interface (like OBSE). Implemented mes
sages are GameLoad and GameSave.
2 beta 12:
- made weapon mod indexing the same across all functions (1-based instead of 0-b
ased for backwards compatibility)
2 beta 11:
- fixed Get/SetWeaponItemModValue2
2 beta 10:
- optional (compile-time) SEH wrappers for formlist functions, useful for debugg
ing
- add .ini file (\Data\NVSE\nvse_config.ini),
- optionally hook game error reporting function, to enable add this to your nvse
_config.ini:
[Logging]
EnableGameErrorLog=1
- rename nvse_1_1.dll to nvse_1_4.dll (an old mistake that should have been fixe
d long ago)
- log start time of components
- fix crash in GetHotkeyItem (tList::Iterator now understands empty nodes)
- fix SetWeaponRequiredSkill
- nogore runtime support
- from schlangster: Get/SetEquippedWeaponModFlags
- Get/SetWeaponItemModEffect/Value1/Value2
0:
None
1:
Increase Weapon Damage
2:
Increase Clip Capacity
3:
Decrease Spread
4:
Decrease Weight
5:
<Unused>
6:
Regenerate Ammo
7:
Decrease Equip Time
8:
Increase Rate of Fire
9:
Increase Projectile Speed

10:
11:
12:
13:
14:

Increase Max. Condition


Silence
Split Beam
VATS Bonus
Increase Zoom

2 beta 9:
- document new method of getting to NiNode
- fix IsControlDisabled
2 beta 8:
- fix crash when iterating over invalid form lists (generally a sign that a mod
needs to be updated, but crashing is bad)
- support for editor 1.4.0.518
2 beta 7:
- fix GetCrosshairRef, other things relying on InterfaceManager
- more helpful error message when using the updated CS
2 beta 6:
- access to weapon flags: Get/SetWeaponFlags1
1 = ignores normal weapon resist
2 = is automatic
4 = has scope
8 = can't drop
16 = hide backpack
32 = embedded weapon
64 = don't use first-person IS animations
128 = nonplayable
- Get/SetWeaponFlags2
1 = player only
2 = NPCs use ammo
4 = no jam after reload
8 = override action points
16 = minor crime
32 = range fixed
64 = not used in normal combat
128 = override damage to weapon mult
256 = don't use third-person IS animations
512 = short burst
1024 = rumble alternate
2048 = long burst
- math functions for setting individual bits (ClearBit/SetBit)
SetBit takes an optional third parameter that clears the bit if set to z
ero
this is designed to be used as "set the value of this bit to X"
int a
set a to 15
; bits 0-3 set
set a to ClearBit a 2 ; clear bit 2 (value 4)
; a is now 11
set a to SetBit a 1 0 ; would set bit 1 (value 2), but the third param
eter is 0 so instead it clears the bit
; a is now 9
- Get/SetActorBaseFlagsLow
use of unknown bits may cause random behavior
these had to be split in to two fields to avoid floating point precision
problems
1 = female

2 = essential
4 = has chargen face
8 = respawn
16 = auto-calc stats
32 = unknown
64 = unknown
128 = pc level mult
256 = use template
512 = no low-level processing
1024 = unknown
2048 = no blood spray
4096 = no blood decal
8192 = unknown
16384 = unknown
32768 = unknown
- Get/SetActorBaseFlagsHigh
1 = unknown
2 = unknown
4 = unknown
8 = unknown
16 = no VATS melee
32 = unknown
64 = can be all races
128 = unknown
256 = unknown
512 = unknown
1024 = no knockdowns
2048 = not pushable
4096 = unknown
8192 = unknown
16384 = no rotate to head track
32768 = unknown
- improve IsControlDisabled, cache now keeps track of partially disabled keys
- ExtractArgsRaw, new internal function for getting detailed information about p
assed-in arguments (not a scripting command, only useful for C++ API stuff)
- support for runtime 1.4.0.525
2 beta 5:
- Get/SetWeaponLongBursts
- SetWeaponFireRate
- long strings shouldn't crash the compiler any more
- overhaul dinput code
- added an optional integer parameter to IsKeyPressed (default behavior unchange
d)
the parameter is a bitfield, so the following values can be added together:
1 = return game state (buttons as seen by the game after all filtering, prev
ious default behavior)
2 = return raw state (unfiltered buttons, exactly what is being pressed)
4 = return inserted state (scripted keypresses only)
if multiple of the above are selected, then they are logically or'd toge
ther
8 = ignore disabled keys (returns 0 for all DisableKey'd keys)
2 beta 4:
- full pass on all parameter types, fix lots of mistakes
- fixes ListAddForm and other formlist things that were using ExtractArgsEx
2 beta 3:
- fix formlist params so they accept any form type
- fix SetUIStringEx

- document new vegas parameter types


- %c format type can print the different sub-names of ammo (0 = full name, 1 = s
hort name, 2 = abbreviation)
2 beta 2:
- Menu*Key functions use buffered input like they should
- log printc to IDebugLog in _DEBUG builds
- SetUIStringEx
- fix %k format specifier
- fix DataHandler::DoAddForm (updated address then reverted it then fixed it aga
in)
- enable kWeapType_OneHandThrown type
2 beta 1:
- MessageEx/MessageBoxEx
- SetNameEx
- IsClonedForm/TempCloneForm
- GetParentCellOwner/GetOwningFactionRequiredRank/GetParentCellOwningFactionRequ
iredRank
- fix loader misreporting when it can't find the editor
- GetLocalRefIndex/BuildRef
1 beta 10:
- support for CS 1.3.0.452
- fixed custom conditionals in dialog trees
1 beta 9:
- support for 1.3.0.452
- GetOwner
- fix LogicalNot
- report when launching a UPX'd exe
- contributions from Douglas Greiman: improved accessors for Get/SetUIFloat/Stri
ng functions, SortUIListBox:
1. The path argument to Get/SetUIFloat/String() has two new capabilities. A pat
h segment of "*" matches any child tile, and a path segment suffix of ":N" match
es the N'th child tile. This is useful when accessing list box items, where the
tile names are either identical, or unpredictable, or both.
2. There is a new function SortUIListBox(path, sortSpec). "path" is the path to
the list box, and sortSpec defines how its children should be sorted.
A sort specification looks like
"keySpec0[,keySpec1[,...]][$destinationPath[$incrementPath]]"
where [] indicate optional parts. A key path looks like
"[-][#][@]path"
where
"-" reverses the normal sort order for this key
"#" sorts this string field numerically
"@" sorts this item name disregarding quanties and mod indicators
E.g. "9mm Pistol (2)" and "9mm Pistol+" sort as "9mm Pistol"
Usage Examples:
GetUIFloat "RepairServicesMenu/NOGLOW_BRANCH/RSM_MainRect/RSM_RepairList/RSM_Rep
airListTemplateRect:4/string"
Returns the name of the 4th item on the repair services menu.
SortUIListBox "BarterMenu/*:0/*:5/*:9" "@string,-#_value"

Sorts the barter menu alphabetically, and then by item condition.


1 beta 8:
- fix GetRepairList
- unify steam_loader and nvse_loader launch procedure
- nvse_loader tries to inject steam_loader on steam launches to avoid a race con
dition
1
-

beta 7:
support for 1.2.0.352
plugin manager supports console interface
fix crash when accessing objects with no repair list

1
-

beta 6:
support for 1.2.0.314
GetOpenKey (SetOpenKey not working yet)
math functions

1 beta 5:
- Get/SetPlayerCurrentAmmoRounds, GetPlayerCurrentAmmo (may be usable on other a
ctors, will be modified if so)
- fix runtime version reporting for plugins
1 beta 4:
- support for 1.1.1.280, err 1.1.1.285 err 1.2.0.285
1
-

beta 3:
fix SetUIFloat
Script functions (IsScripted, GetScript, RemoveScript, SetScript)
IsFormValid, IsReference

1 beta 2:
- UI functions (Get/SetUIFloat, SetUIString)
- Object query functions: GetCrosshairRef, GetDebugSelection
- GetGameRestarted, GetGameLoaded
- Imported console functions: con_ToggleMenus, con_ToggleFreeCamera, con_ToggleC
ollision
- Misc object queries: GetArmorDT, SetArmorAR, SetArmorDT
- fixed %n printc formatter for TESObjectREFR and subclasses
- fixed bug in GetNumRefs for types 200 and 201
- Mod query functions: IsModLoaded, GetModIndex, GetNumLoadedMods, GetSourceModI
ndex
- GetWeaponItemMod
- steam loader reports unsupported versions
- new options for nvse_loader: -skiplauncher to skip the normal launcher screen,
-minfo for debugging purposes
1 beta 1:
- everything!
- GetNVSEVersion, GetNVSERevision, GetNVSEBeta
- Basic Inventory Object functions
- Get and Set Weapon functions
- Imported console functions: con_SetGameSetting, con_SetINISetting, con_GetINIS
etting, con_RefreshINI, con_Save, con_SaveINI, con_QuitGame, con_LoadGame, con_C
loseAllMenus, con_SetVel
- Form list functions
- GetEquippedObject, GetNumItems, GetInventoryObject
- CompareNames, SetName
- GetHotkeyItem

- Input functions
* Get/SetCurrentHealth
* Get/SetEquippedCurrentHealth
- Plugin support
- Ref Walking (GetFirstRef, GetNumRefs, GetFirstRefInCell, GetNumRefsInCell, Get
NextRef)
- Get/SetNumericGameSetting, Get/SetNumericIniSetting
- Loops (Label/Goto)
- PrintC, DebugPrint, Get/SetDebugMode

You might also like