Jump to content

What Plugin records (formIDs) are NOT stored in your save?


PJMail

Recommended Posts

Due to the upcoming Next-Gen update, I took a deeper look at Papyrus, the compiler and the VM.. I'm currently making some Papyrus functions to help with diagnosing any possible script related changes.. I'll likely add these to Garden of Eden SE v17.4:

Function LogScriptObjects() native global
Function LogScriptsData(bool abIncludeNative = false, bool abIncludeNonNative = true) native global
String[] Function GetScriptObjectTypes() native global
[2024-04-19 06:02:53.780] [ F4SE log ] [info] [Objects.h:14180] LogScriptObjects   -->   attachedScriptArraySize [2] | iter [0] | ScriptObject [valid] | ScriptObjectIsValid [true] | ObjectTypeInfo [valid] | TypeInfoName [WorkshopFloraDamageHelperScript] | ScriptObjectHandle [281474959973541] | FormType [64] | StringFormType [REFR] | TypeAcquiredForHandle [true] | ObjectAddress [2050D3CE550] | FormObjectValid [valid] | GameFormValid [valid]
[2024-04-19 06:08:12.225] [ F4SE log ] [info] [Objects.h:14044] LogScriptsData   --->   [Function: PlaceMyLights | Script ProjectorScript] [MemberFuncCount: 12 ] [bAcquiredLineCount: 1] [lineCount: 12] [instuctionAddress: 205031FA6C0] [sDescTable: ::temp29 [0], SlideNumber [1], count [2], ::temp30 [3], ::temp31 [4], ::temp32 [5], ::nonevar [6], newLight [7], ] [ParamCount: 0] [EntryCount: 8] [tableAddresses: 205031F2EE8 [0], 205031F2EF8 [1], 205031F2F08 [2], 205031F2F18 [3], 205031F2F28 [4], 205031F2F38 [5], 205031F2F48 [6], 205031F2F58 [7], ] [sTypeInfoName: ObjectReference [3], Light [4], Form [5], ObjectReference [7], ] [lineNumbers.address: 205031E9530] [Function.address: 20503228E80] [NamedStateCount: 0]
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [91] is IdleMarker
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [90] is HeadPart
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [89] is WordOfPower
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [88] is TextureSet
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [87] is Holotape
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [86] is Book
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [85] is Form
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [84] is AssociationType
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [83] is ConstructibleObject
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [82] is Idle
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [81] is Scene
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [80] is DefaultObject
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [79] is VisualEffect
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [78] is Quest
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [77] is Potion
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [76] is Topic
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [75] is TopicInfo
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [74] is Terminal
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [73] is GlobalVariable
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [72] is ReferenceAlias
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [71] is Shout
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [70] is RefCollectionAlias
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [69] is LocationAlias
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [68] is ImageSpaceModifier
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [67] is Actor
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [66] is ActiveMagicEffect
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [65] is SPELL
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [64] is SoundCategorySnapshot
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [63] is LeveledActor
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [62] is Weather
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [61] is Ingredient
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [60] is OutputModel
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [59] is InstanceNamingRules
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [58] is WorldSpace
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [57] is ObjectMod
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [56] is SoulGem
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [55] is Activator
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [54] is Location
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [53] is CameraShot
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [52] is ScriptObject
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [51] is watertype
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [50] is matswap
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [49] is SoundCategory
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [48] is MovableStatic
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [47] is Door
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [46] is Scroll
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [45] is Class
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [44] is Alias
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [43] is LeveledSpell
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [42] is MagicEffect
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [41] is MiscObject
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [40] is Enchantment
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [39] is Furniture
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [38] is Keyword
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [37] is Armor
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [36] is armoraddon
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [35] is Package
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [34] is MusicType
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [33] is Explosion
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [32] is ActorBase
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [31] is ActorValue
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [30] is LocationRefType
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [29] is ObjectReference
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [28] is equipslot
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [27] is Perk
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [26] is TalkingActivator
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [25] is Cell
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [24] is LeveledItem
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [23] is Weapon
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [22] is EffectShader
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [21] is Container
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [20] is Outfit
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [19] is ShaderParticleGeometry
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [18] is Flora
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [17] is VoiceType
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [16] is ImpactDataSet
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [15] is Faction
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [14] is Ammo
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [13] is Key
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [12] is Race
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [11] is Hazard
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [10] is message
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [9] is FormList
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [8] is Action
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [7] is EncounterZone
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [6] is PROJECTILE
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [5] is Sound
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [4] is STATIC
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [3] is Light
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [2] is InputEnableLayer
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [1] is Component
[04/19/2024 - 06:11:52AM] GetScriptObjectTypes at Index [0] is CombatStyle

They're still in beta, signitures and log structures may change.. but they may be able to help with identifying Forms with attached scripts (LogScriptObjects logs >70k lines) if you're still interested.

Link to comment
Share on other sites

It isn't clear to me what the last 2 calls are returning - or more accurately - what context they are reporting on... A single Script, object, save, or the entire game.

Anyway, I am sure that will become clear. I hope you won't have too much work adapting GOESE when that update drops...

Link to comment
Share on other sites

15 hours ago, PJMail said:

It isn't clear to me what the last 2 calls are returning - or more accurately - what context they are reporting on... A single Script, object, save, or the entire game.

In their current states:

   GetScriptObjectTypes return all form typed ScriptObjects the engine knows in a String[]. These are scripts objects designed to be attached to game objects, e.g. "F4SE" is not in the list but "Form", "RefCollectionAlias" and "ActiveMagicEffect" are.

   LogScriptObjects logs all Papyrus script objects (the instances) existing in the memory and tries to locate the BoundGameObjects they're attached to. Native VM functions sometimes (seem intentionally?) don't locate the game object though ("unattached Script instances"?) that's why the many "IsValid" checks.

   LogScriptsData iterates the map of compiled scripts, then loops through the scripts' functions and events one by one to output some data. Instruction opcodes are not in the output.

All functions query the VM to for script data that was loaded in the memory by the vanilla code. They, especially LogScriptsData, were actually made to help me identify possible changes to vanilla Papyrus scripts. If BGS decides to edit some then recompile all, it might prove difficult to determine which ones were actually edited, and how. Comparing the scripts pre-post update may reveal these.. Beyond that, having access to script instances and objects can help with identifying or maybe even debugging bad script data ("Set" and "Remove" functions we be a bit too ambitious though..).

15 hours ago, PJMail said:

Anyway, I am sure that will become clear. I hope you won't have too much work adapting GOESE when that update drops...

GOESE functions are located by the code through the Address Library, including the event dispatchers. The Address Library will (supposedly) greatly speed up things. I don't know if BGS changed class structures.

Edited by LarannKiar
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...