scriptname JsonUtil Hidden ;/ MOD AUTHORS, READ! These functions all work in exactly the same way as their StorageUtil.psc equivalents. See them for usage docs. The important difference between these functions and the ones on StorageUtil.psc, is that instead of giving "Form obj" argument for the location to save the data, you give it a "string FileName" argument, pointing to an external JSON formatted file. These files will be saved/loaded in JSON format, and the starting location for the files to save/load from is as follows: data/skse/plugins/StorageUtilData/ Some important notes on usage to keep in mind: - You may specific a folder path in the filename, i.e. "../MyData/config" will save to data/skse/plugins/MyData/config.json - If not given in the filename argument, the filename will have the extension .json appended to it automatically when used. - You do not need to call Load() or Save() manually unless you have a specific need to. - When the player saves their game any modified file will be automatically saved, written to, or created if it does not exist. - When the player loads another save without saving themselves or the Save() function having been manually called by a script, the loaded data will be discarded and revert back to whatever the contents of the current saved file are. /; bool function Load(string FileName) global native bool function Save(string FileName, bool minify = false) global native bool function Unload(string FileName, bool saveChanges = true, bool minify = false) global native ; Check if given file has had any changes to it that haven't yet been saved bool function IsPendingSave(string FileName) global native ; Check if the given file was succesfully loaded and has no json parser errors bool function IsGood(string FileName) global native ; Get a formatted error string of any json parser errors on a file, returns as empty string if no errors. string function GetErrors(string FileName) global native ; Returns a list of all filenames in a given folder that end in .json string[] function JsonInFolder(string folderPath) global native ; Check if a json file exists or not bool function JsonExists(string FileName) global if !FileName return false elseIf StringUtil.Find(FileName, ".json") == -1 FileName += ".json" endIf return MiscUtil.FileExists("data/skse/plugins/StorageUtilData/"+FileName) endFunction ; See StorageUtil.psc for equivalent function usage instructions int function SetIntValue(string FileName, string KeyName, int value) global native float function SetFloatValue(string FileName, string KeyName, float value) global native string function SetStringValue(string FileName, string KeyName, string value) global native form function SetFormValue(string FileName, string KeyName, form value) global native int function GetIntValue(string FileName, string KeyName, int missing = 0) global native float function GetFloatValue(string FileName, string KeyName, float missing = 0.0) global native string function GetStringValue(string FileName, string KeyName, string missing = "") global native form function GetFormValue(string FileName, string KeyName, form missing = none) global native bool function UnsetIntValue(string FileName, string KeyName) global native bool function UnsetFloatValue(string FileName, string KeyName) global native bool function UnsetStringValue(string FileName, string KeyName) global native bool function UnsetFormValue(string FileName, string KeyName) global native bool function HasIntValue(string FileName, string KeyName) global native bool function HasFloatValue(string FileName, string KeyName) global native bool function HasStringValue(string FileName, string KeyName) global native bool function HasFormValue(string FileName, string KeyName) global native int function IntListAdd(string FileName, string KeyName, int value, bool allowDuplicate = true) global native int function FloatListAdd(string FileName, string KeyName, float value, bool allowDuplicate = true) global native int function StringListAdd(string FileName, string KeyName, String value, bool allowDuplicate = true) global native int function FormListAdd(string FileName, string KeyName, Form value, bool allowDuplicate = true) global native Int function IntListGet(string FileName, string KeyName, int index) global native Float function FloatListGet(string FileName, string KeyName, int index) global native String function StringListGet(string FileName, string KeyName, int index) global native Form function FormListGet(string FileName, string KeyName, int index) global native Int function IntListSet(string FileName, string KeyName, int index, int value) global native Float function FloatListSet(string FileName, string KeyName, int index, float value) global native String function StringListSet(string FileName, string KeyName, int index, String value) global native Form function FormListSet(string FileName, string KeyName, int index, Form value) global native int function IntListRemove(string FileName, string KeyName, int value, bool allInstances = true) global native int function FloatListRemove(string FileName, string KeyName, float value, bool allInstances = true) global native int function StringListRemove(string FileName, string KeyName, String value, bool allInstances = true) global native int function FormListRemove(string FileName, string KeyName, Form value, bool allInstances = true) global native bool function IntListInsertAt(string FileName, string KeyName, int index, int value) global native bool function FloatListInsertAt(string FileName, string KeyName, int index, float value) global native bool function StringListInsertAt(string FileName, string KeyName, int index, String value) global native bool function FormListInsertAt(string FileName, string KeyName, int index, Form value) global native bool function IntListRemoveAt(string FileName, string KeyName, int index) global native bool function FloatListRemoveAt(string FileName, string KeyName, int index) global native bool function StringListRemoveAt(string FileName, string KeyName, int index) global native bool function FormListRemoveAt(string FileName, string KeyName, int index) global native int function IntListClear(string FileName, string KeyName) global native int function FloatListClear(string FileName, string KeyName) global native int function StringListClear(string FileName, string KeyName) global native int function FormListClear(string FileName, string KeyName) global native int function IntListCount(string FileName, string KeyName) global native int function FloatListCount(string FileName, string KeyName) global native int function StringListCount(string FileName, string KeyName) global native int function FormListCount(string FileName, string KeyName) global native int function IntListCountValue(string FileName, string KeyName, int value, bool exclude = false) global native int function FloatListCountValue(string FileName, string KeyName, float value, bool exclude = false) global native int function StringListCountValue(string FileName, string KeyName, String value, bool exclude = false) global native int function FormListCountValue(string FileName, string KeyName, Form value, bool exclude = false) global native int function IntListFind(string FileName, string KeyName, int value) global native int function FloatListFind(string FileName, string KeyName, float value) global native int function StringListFind(string FileName, string KeyName, String value) global native int function FormListFind(string FileName, string KeyName, Form value) global native bool function IntListHas(string FileName, string KeyName, int value) global native bool function FloatListHas(string FileName, string KeyName, float value) global native bool function StringListHas(string FileName, string KeyName, String value) global native bool function FormListHas(string FileName, string KeyName, Form value) global native function IntListSlice(string FileName, string KeyName, int[] slice, int startIndex = 0) global native function FloatListSlice(string FileName, string KeyName, float[] slice, int startIndex = 0) global native function StringListSlice(string FileName, string KeyName, string[] slice, int startIndex = 0) global native function FormListSlice(string FileName, string KeyName, Form[] slice, int startIndex = 0) global native int function IntListResize(string FileName, string KeyName, int toLength, int filler = 0) global native int function FloatListResize(string FileName, string KeyName, int toLength, float filler = 0.0) global native int function StringListResize(string FileName, string KeyName, int toLength, string filler = "") global native int function FormListResize(string FileName, string KeyName, int toLength, Form filler = none) global native bool function IntListCopy(string FileName, string KeyName, int[] copy) global native bool function FloatListCopy(string FileName, string KeyName, float[] copy) global native bool function StringListCopy(string FileName, string KeyName, string[] copy) global native bool function FormListCopy(string FileName, string KeyName, Form[] copy) global native int[] function IntListToArray(string FileName, string KeyName) global native float[] function FloatListToArray(string FileName, string KeyName) global native string[] function StringListToArray(string FileName, string KeyName) global native Form[] function FormListToArray(string FileName, string KeyName) global native int function AdjustIntValue(string FileName, string KeyName, int amount) global native float function AdjustFloatValue(string FileName, string KeyName, float amount) global native Int function IntListAdjust(string FileName, string KeyName, int index, Int amount) global native float function FloatListAdjust(string FileName, string KeyName, int index, float amount) global native int function CountIntValuePrefix(string FileName, string PrefixKey) global native int function CountFloatValuePrefix(string FileName, string PrefixKey) global native int function CountStringValuePrefix(string FileName, string PrefixKey) global native int function CountFormValuePrefix(string FileName, string PrefixKey) global native int function CountIntListPrefix(string FileName, string PrefixKey) global native int function CountFloatListPrefix(string FileName, string PrefixKey) global native int function CountStringListPrefix(string FileName, string PrefixKey) global native int function CountFormListPrefix(string FileName, string PrefixKey) global native int function CountAllPrefix(string FileName, string PrefixKey) global native ; Experimental custom json formatting handlers. Paths are resolved using typical json syntax. ; The path will be created as necessary when setting data and the path does not yet exists. ; examples: ; JSON File: { "foo": { "bar": [3, 10, 7] } } ; Function: GetPathIntValue("filename.json", ".foo.bar[1]") ; Return: 10 function SetPathIntValue(string FileName, string Path, int value) global native function SetPathFloatValue(string FileName, string Path, float value) global native function SetPathStringValue(string FileName, string Path, string value) global native function SetPathFormValue(string FileName, string Path, form value) global native bool function SetRawPathValue(string FileName, string Path, string RawJSON) global native int function GetPathIntValue(string FileName, string Path, int missing = 0) global native float function GetPathFloatValue(string FileName, string Path, float missing = 0.0) global native string function GetPathStringValue(string FileName, string Path, string missing = "") global native form function GetPathFormValue(string FileName, string Path, form missing = none) global native bool function GetPathBoolValue(string FileName, string Path, bool missing = false) global return GetPathIntValue(FileName, Path, (missing as int)) != 0 endFunction int[] function PathIntElements(string FileName, string Path, int invalidType = 0) global native float[] function PathFloatElements(string FileName, string Path, float invalidType = 0.0) global native string[] function PathStringElements(string FileName, string Path, string invalidType = "") global native form[] function PathFormElements(string FileName, string Path, form invalidType = none) global native int function FindPathIntElement(string FileName, string Path, int toFind) global native int function FindPathFloatElement(string FileName, string Path, float toFind) global native int function FindPathStringElement(string FileName, string Path, string toFind) global native int function FindPathFormElement(string FileName, string Path, form toFind) global native int function PathCount(string FileName, string Path) global native string[] function PathMembers(string FileName, string Path) global native bool function CanResolvePath(string FileName, string Path) global native bool function IsPathString(string FileName, string Path) global native bool function IsPathNumber(string FileName, string Path) global native bool function IsPathForm(string FileName, string Path) global native bool function IsPathBool(string FileName, string Path) global native bool function IsPathArray(string FileName, string Path) global native bool function IsPathObject(string FileName, string Path) global native function SetPathIntArray(string FileName, string Path, int[] arr, bool append = false) global native function SetPathFloatArray(string FileName, string Path, float[] arr, bool append = false) global native function SetPathStringArray(string FileName, string Path, string[] arr, bool append = false) global native function SetPathFormArray(string FileName, string Path, form[] arr, bool append = false) global native function ClearPath(string FileName, string Path) global native ; Debug use function ClearAll(string FileName) global native