Professional Documents
Culture Documents
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"
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:
( = 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
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.
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
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:
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
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
returns
returns
imports
returns
sent to register
ExitGame
from main menu or in-game menu
exit to windows
ExitToMainMenu
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
dispatched immed
// dataL
en: length of file path, data: char* file path of .ess savegame file
ExitGame_Console
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/
char* errorMessageText
DeleteGame
e deleting the .nvse cosave and the .fos save.
en: length of file path, data: char* file path of .fos savegame file
RenameGame
e renaming the .nvse cosave and the .fos save.
// 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
ame.
// dataL
en: length of new file path, data: char* new file path of .fos savegame file
NewGame
e iterating through plugins newGame.
GetEyes
SetHair
GetHair
GetHairLength
till :) )
[ref.]GetHairLength
SetHairLength
[NPC:npc]
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
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
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
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
in a script
GetNumExplicitRefs script:formID
GetNthExplicitRef
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
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
us
SetPackageLocationRadius package:form radius:float
GetPackageLocationRadius
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
GetPackageLocation
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
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
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:
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
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