Other user's assetsThis author has not specified whether they have used assets from other authors or not
Upload permissionYou are not allowed to upload this file to other sites under any circumstances
Modification permissionYou must get permission from me before you are allowed to modify my files to improve it
Conversion permissionYou are not allowed to convert this file to work on other games under any circumstances
Asset use permissionYou must get permission from me before you are allowed to use any of the assets in this file
Asset use permission in mods/files that are being soldYou are not allowed to use assets from this file in any mods/files that are being sold, for money, on Steam Workshop or other platforms
Asset use permission in mods/files that earn donation pointsYou are allowed to earn Donation Points for your mods if they use my assets
Console modding permissionThis mod will not be available on Bethesda.net for console users
Author notes
This author has not provided any additional notes regarding file permissions
File credits
This author has not credited anyone else in this file
Donation Points system
Please log in to find out whether this mod is receiving Donation Points
Changelogs
Version 11.70
New functions:
-NotifyReferenceScriptsEx
-IsIPInTheSameSubnet
-FolderGetContentsAlt
Changes:
- Now plugin accounts for UTF8-BOM file format for all file functions.
Version 11.60
New function:
-GetDirectGridConnectionsRefs
Changes:
- Removed MP3 functions from the plugin.
- Added bTermLinkFix to IsSUPPatchActive
Version 11.50
New functions:
-UnregisterForAllSUPEvents;
-GetInstanceNamingRulesType;
-GetLastLoadedSaveName;
Fixes:
-Fixed CTD when invalid references were provided in filters to RegisterForSUPEvent function.
Version 11.40
New function:
-StringRemoveWhiteSpace
Version 11.35
New function:
-IsLastGameLoadedFromMainMenu()
Fixes:
- Fixed RegisterForGameMainLoopCallback function instantly firing first time when you register it.
- Fixed "Config" folder being created by default.
Version 11.30
Fixes:
-Fixed all Building Bridges-related CTDs(for sure this time).
-Fixed bTermLinkFix making switches inoperable - thanks SSESW for reporting.
Version 11.20
HOTFIX:
-Fix rare CTD for Building Bridges and cell scan functions.
- bTermLinkFix - Prevents power grid from losing all of old terminal connections when you connect a new terminal to it. Also enables terminal connections for wireless objects(thanks Niston!).
New functions:
-GetTerminalLinkKeyword
-GetKeywordByName
-GetActorValueByName
-ReestablishTerminalLinks
Changes:
-Fixed NotifyReferenceScripts not working.
Version 11.00
Added option to set permanent events for modders.
New functions:
-RegisterForGameMainLoopCallback
-RegisterForSUPEvent
-IsSUPEventRegistered
-IsScriptLoadedForForm
-GetInventoryItemsByType
-GetInventoryItemsByTypes
-GetReferencesInCellByType
-FilterRefArrayByActorValues
-WorkshopGenerateFakeReferenceEvent
-GetReferencesInCellWithKeyword
-GetReferencesInCellWithKeywordAlt
-WorkshopCleanUpEmptyPowerGrids
-IsAnyOfTypes
-RadiatorEstablishConnections
-NotifyReferenceScripts
-GetInventoryItemsByKeyword
-GetInventoryItemsByKeywordAlt
-IsSUPPexMismatched
-AttachPapyrusScript
Changes:
-SetEventHandler is removed and replaced by RegisterForSUPEvent.
-SetGameMainLoopCallback is removed and replaced by RegisterForGameMainLoopCallback.
-SUP Script runner now requires object to which script is attached (examples are updated).
-Event handlers now work simmilar to vanilla and F4SE event handlers(in terms of event being tied to an object, not the function).
-Added new smart filterting system for the events(see .psc file in "RegisterForSUPEvent" sections for more info);
-Wireless fix - updated so snapped connections are not removed from radiators and radiators lose connections on when you place them to a new unpowered location.(thanks Niston!)
-IsScriptLoaded now detects new scripts if they were added after game load;
-Memory optimization by removing script caching.
-Added "IsSnapped" parameter for "OnPowerConnection" callback.
-Fixed AttachWireEx not working.
Version 10.25
Changes:
-Fixe missing "r" in "OnCrosshairRefChange" event declaration so you can actually use it now.
-Fixed CTD which happened for a few people(thanks to Gun13 for the help with debugging!)
-Removed some console spam on game load.
Version 10.20
New engine patches:
-ScrapCrashFix
Fixes bug widely known as "scrap crash". Will take care of removing object reference from it's powergrid in case reference was not scrapped via Workshop(using "Delete" console or papyrus function).
-WirelessPowerFix
Fixes and reworks wireless power connections:
When radiators are powered off they will drop all wireless connections to it. When powered on they will restore them. This fixes bug when powergrid elements "connected" via powered off radiator will be in the same powergrid.
Properly restores wireless connections of a radiator which is also a generator if connections were severed while it was moved.
All engine patches are enabled by default and can be switched off in SUP F4SE INI file.
A SPECIAL SHOUT-OUT TO NISTON FOR REPORTING AND EXPLAINING THEM AND ALSO TESTING.
New events:
-OnActorRagdollFinish
-OnCrosshairRefChange
-OnWorkshopPowerStateChange
-OnDismemberLimb
New functions:
-IsSUPPatchActive
-GetRadioStationName
-GetOverridingMod
-GetOverridingMods
-IsOverridingMod
Changes:
-Fixed "ScanPowerGridForFaults" so it doesn't treat connections without spline as invalid.
-"OnActorRagdollStart" will no longer pass Actors who cannot be knocked down.
-Improved SUP events stability.
-SetGlobalTimeMultiplier no longer uses a Scaleform function. -Added export function for DLL plugin makers bool fn_ext_IsSUPPatchActive(int iRequest) which is equivalent to IsSUPPatchActive from papyrus.
Version 10.00
New events:
-"OnPowerConnection"
-"OnQuestFinished"
-"OnQuestActive"
-"OnConsoleCommand"
-"OnPlayerMapMarkerStateChange"
-"OnActorRagdollStart"
-"OnPlayerRadioState"
For modders:SetEventHandler section is updated in the .psc file.
New functions:
-"ScanPowerGridForFaults"
-"IsDirectGridConnection"
-"IsSnappedGridConnection"
-"GetDirectGridConnections"
-"WorkshopCalculatePowerRating"
-"WorkshopRecalculateResources"
-"RemoveGridConnection"
-"AddGridConnection"
-"ActorJump"
-"ActorIsInAir"
-"ActorIsSwimming"
-"FailQuest"
-"IsLocationEverCleared"
-"GetPlayerHasMapMarker"
-"GetPlayerMapMarkerInfo"
-"SetPlayerMapMarker"
-"RemovePlayerMapMarker"
Changes:
-GetPowerGridForObject and GetPowerGridElements will look in unpowered objects as well.
-Fixed CTD for Event functions in case user passed a "NONE" value in an VMArray.
-GetPowerGridForObject is greatly optimized.
Version 9.60
New functions:
-ReadINIFloatFromGameSettingINI
-ReadINIStringFromGameSettingINI
-GetGameINISettingValue
-GetAllActorFactions
Version 9.50
New functions:
-GetLoadedFormsByType
Version 9.45
Fixes:
-Fixed Building Bridges CTD which happened at cell entering.
New functions:
-GetAllConstructibleObjectsFromForm
Version 9.35
Fixes:
-Some improvements I cannot longer remember.
-Fixed Building Bridges CTD with particular load order(thanks Pileggi and dcr981 for testing).
Version 9.25
Fixes:
-Fixed some of functions CTD if NULL reference is provided to them in Papyrus.
-SUP F4SE version is now visible in the log.
Version 9.20
Changes:
-Code refactoring;
-For JSON functions now it makes no difference how you specify folder delimeters ("\\" or "/).
-Fixed a possible memory leak when trying to add the same event again with filters.
-Fixed a crash when setting "OnCellChange" event and exiting to main menu.
New events:
-OnGameSave
New functions:
-XMLToJSONString
-XMLToJSONCachedFile
Version 9.10
Changes:
-Fixed "TransmitConnectedPowerLatentEx" function which was removed by an oversight for the last updates(thanks msalaba and niston)
New functions:
-GetAllRadioFrequencies
Version 9.05
Changes:
-Completely removed debug messages processing if debug mode is not enabled.
-Fixed BuildingBridges crash with particular load order for sure this time.
-Great optimization for Building Bridges - faster incoming messages processing;
-Fixed an oversight in event code which caused CTD when setting previously set event again;
-Fixed a bad hook;
Version 9.00b
Please consider it beta.
Changes:
-Added "OnCellChange" event.
-Added "OnCellFirstTimeVisit" event.
-Added "OnMainGameLoop" event.
-More memory optimizations.
-Overall optimization.
-SUPDater now builds global variables and forms in ESL plugins as well.
-Fixed Pastebin reader not calling callback functions on a new game.
-Fixed BuildingBridges crash with particular load order.
---------------------------
SUPScriptRunner:
-JSON files for SUP Script runner should have a new structure(see the "SUP Script Runner" section on Nexus mod page). Old JSONs are NOT backwards compatible(no public mods were using them at the moment of this update).
-SUP Script runner now detects if specified script in JSON is not loaded and doesn't process it.
-Greatly improved performance of SUP Script Runner for local functions.
-Fixed possible CTD for SUP Script Runner when reading incorrectly made JSONs.
---------------------------
New functions:
-SetGameMainLoopCallback
-RemoveFromGameMainLoopCallback
-SetEventHandler
-IsScriptLoaded
-MergeArrays
Version 8.80b
Changes:
-Minor memory optimization;
-ReadFormArrayFromFile builds references from ESL plugins as well.
-Minor code refactoring(thanks Niston)
New functions:
-GetGlobalTimeMultiplier
-SetGlobalTimeMultiplier
-GetStartingLocation
-GetStartingAngle
-TransmitConnectedPowerLatentEx
Version 8.75
Changes:
-SUP Script Runner now supports local functions as well. More info on mod main page under spoiler.
-GetReferencesInCellByBaseForm will process items from a form list if you pass it as a parameter.
-Fixed ReadStringFromFile not reading string from files in some cases.
-Nexus article "SUP F4SE functions" will no longer be updated. All new functions will be visible in changelogs or .psc file which is included in the package.
New functions:
-GetFormFromFileEX
-StringToDec
-GetDistanceBetweenNodesEx
Version 8.68
Changes:
-Recompiled with VisualStudio 2022.
-Fixed crashes from previous version.
New Functions:
-SplitStringEx
-IsRadioReceiver
Version 8.60
New Functions:
-GetReferencesInCellByBaseForm
Changes:
- JSONCacheFileFromString now properly adds JSON to the list.
- JSON filename(cached and not) in JSON functions will be case-insensitive.
- Fixed CTD for IsMenuModeActive() and IsGamePaused() in rare cases.
- Fixed IsNewGame() returning wrong value on game load if BB is not loaded.
Version 8.50
Changes:
-JSON Functions will search for keys case-insensitively
New Functions:
-GetAllRadios
Version 8.45
Changes:
-Fixed Nif functions CTD in some cases.
-Overall improvements.
New Functions:
-IsRadio
-GetRadioData
-AttachWireEX
-UpdateSplineEx
-GetConnectedObjectsEx
-RemovePowerGrid
-GetFurnitureMarkersFromFurniture
Version 8.20
---------Changes:
-Fixed GetActorsInCell.
-StringFind is changed to SUPStringFind because it conflicted with StringFind from LL Four Play.
---------New Functions:
-WorldToScreen
-GetNearCells
-GetReferencesInCell
Version 8.11
-----------New functions:
-SUPGetConnectPoints
-GetDistanceBetweenNodes
-GetDistanceBetweenNodesTwoRefs
Version 8.00
-----------New functions:
-StringFind
-StringFindSubString
-JSONGetValue
-JSONGetValueArray
-JSONCloseFile
-JSONCacheFile
-JSONCacheFileFromString
-JSONIsFileCached
-JSONGetValueType
-JSONSetValueFloat
-JSONSetValueString
-JSONAppendValueFloat
-JSONAppendValueString
-JSONClearKey
-JSONEraseKey
-JSONToString
-JSONEraseArrayElement
-JSONIsFileValid
JSON tutorial can be found here - https://www.nexusmods.com/fallout4/articles/3946
Version 7.45
-Added UpdateMovingWirelessItem, EstablishTerminalLinks, UpdateSpline(made avaiable for papyrus from F4SE).
Version 7.30
---------Changes:
-Improvements for Building Bridges;
Version 7.15
---------Changes:
-Fixes for Building Bridges;
Version 7.10
-----------Changes;
-Added support for Building Bridges for Fallout 4;
-----------New functions:
-IsNewGame;
-IsMenuModeActive;
-IsGamePaused;
-GetActorsInCell.
Version 7.00
-----------Changes:
-Added support for Building Bridges for Fallout 4.
-----------New functions:
-IsNewGame()
-IsMenuModeActive()
-IsGamePaused()
-GetActorsInCell
Version 6.10
-Removed gamepad functions as the same imported library was used by some controller emulator softare which didn't work correctly.
Version 6.00
------Changes:
-Added SUP NVSE Pastebin Reader Framework(see the article https://www.nexusmods.com/fallout4/articles/3566).
------New functions:
-GetPastebinRawTextArray
-GetPastebinRawTextString
-GetPastebinReaderDoneStage
-GetPastebinReaderCurrentStage
Version 5.20
------Changes:
-Fixed "wrong PEX file" error(thanks RedKingca);
-Source code is now commented(thanks to msalaba).
------New functions:
-GetPowerGridForObject;
-ListPowerGrids;
-GetPowerGridElements;
-IsWorkshopPowerGridOverloaded.
Version 5.10
------Changes:
-Papyrus source code is now commented(thanks to msalaba).
------New functions:
-GetPowerGridForObject;
-ListPowerGrids;
-GetPowerGridElements;
-IsWorkshopPowerGridOverloaded.
Version 5.00
------Changes:
-Fixed Nif functions not working on anything besides actors;
------New functions:
-DrawSpline
-GetSplineForm
-GetWorldLocationMarkerRef
-IsMapMarker
-MapMarkerSetName
-MapMarkerGetName
-MapMarkerGetUseLocationName
-MapMarkerSetUseLocationName
Version 4.60
------Changes:
-Renamed "GetUserLanguage" to "GetWindowsLanguage"
-Renamed "GetEXEVersion" to "GetFileVersion"
------New functions:
-SteamIsLoaded
-SteamGetGameLanguage
-SteamGetSteamLanguage
-SteamIsOverlayEnabled
-SteamTriggerScreenshot
Version 4.30
------Changes:
-ExcelWorkSheetRename will shorten new sheet name if it exceeds 31 characters(Excel limitation).
------New functions:
-GetUserLanguage
-GetEXEVersion
-GetLeftStickX
-GetRightStickX
-GetLeftStickY
-GetRightStickY
-GetLeftTrigger
-GetRightTrigger
-IsGamePadButtonPressed
Version 4.10
------Changes:
-Numerous Excel function fixes.
------New functions:
-GetAshPileSource
-GetItemDropper
-ExcelReadFloatArray
-ExcelReadStringArray
Version 4.00
------Changes:
-Fixed ReadFormArrayFromFile - it detects forms in only loaded mods;
------New functions:
-GetGitHubLatestReleaseTag
-GetNexusModVersionAPI
-IsNexusAPIKeyValid
-GetSUPDateCheckerDoneStage
-GetSUPDateCheckerCurrentStage
-OpenNexusModPage
-IsSUPDateCheckerLoaded
Version 3.30
------Changes:
-WriteStringToFile,ReadStringArrayFromFile,ReadFormArrayFromFile will read\write files in other folders if specified i.e. "Data/MyMod/MyFile.txt";
-StringContains now performs case-insensitive check;
-FileExists now searches inside loaded BA2 files.Return values are updated.(see the article).
------Added new functions:
-FileExistsAlt
Version 2.20
------Changes:
-Added SUP Script Runner(see the article)
------Added new functions:
-IsCellVisited
-GetCellWorldSpace
Version 2.10
------Changes:
-Text To file in DebugPrintSUP will be written from the new line.
------Added new functions:
-StringRegexMatch
-StringRegexSearch
-StringRegexReplace
-GetLastLoadedSaveSize
-MP3LoadFile
-MP3Play
-MP3Pause
-MP3Stop
-MP3IsPlaying
-MP3GetDuration
-MP3GetCurrentPosition
-MP3IsFileLoaded
-MP3GetVolume
-MP3SetVolume
-MP3HasFinishedPlaying
-MP3GetCurrentFile
Version 2.00
------Changes:
-SUP F4SE will print out it's version in console on game start.
-Added set of "ModLocalData" functions.
------Added new functions:
-FileDialogueBoxOpenFile
-FileDialogueBoxOpenFolder
-DebugPrintSUP
-ModLocalDataExists
-ModLocalDataGetType
-ModLocalDataSetFloat
-ModLocalDataSetInt
-ModLocalDataSetRef
-ModLocalDataSetString
-ModLocalDataGetFloat
-ModLocalDataGetInt
-ModLocalDataGetRef
-ModLocalDataGetString
-ModLocalDataRemoveKey
-ModLocalDataRemoveAllKeys
-ModLocalDataDumpToConsole
-ModLocalDataDumpToArray
------Removed function that were already in F4SE:
-IsMenuOpened;
-All Weapons and Armor functions.
If I'm adding dublicate functions please let me know - it's not intentional.
Version 1.60
------Added new functions:
-GetUserTimeStruct
-GetCalculatedPos
-GetCalculatedPosAlt
-GetDistanceBetweenPoints
-GetHeadingAngleAlt
-GetHeadingAngleBetweenPoints
Version 1.50
------Added new functions:
-WriteStringToFile
-ReadStringArrayFromFile
-ReadFormArrayFromFile
-FormListToArray
-NumberToString
Version 1.25
------Added new functions:
-IsFormValid
-GetWeaponBaseDamage
-SetWeaponBaseDamage
-GetWeaponAmmoCapacity
-SetWeaponAmmoCapacity
-GetWeaponFlags
-SetWeaponFlags
-GetWeaponReach
-SetWeaponReach
-GetWeaponReloadSpeed
-SetWeaponReloadSpeed
-GetWeaponSpeed
-SetWeaponSpeed
-GetWeaponCritDamageMult
-SetWeaponCritDamageMult
-GetWeaponCritChargeBonus
-SetWeaponCritChargeBonus
-GetWeaponStagger
-SetWeaponStagger
-GetWeaponSkill
-SetWeaponSkill
-GetWeaponResist
-SetWeaponResist
-GetArmorRating
-SetArmorRating
Version 1.15
-Renamed StringGetLenght to StringGetLength(thanks pra)
-All INI functions renamed as they had the same name as functions from "Utility":
-SetINIFloat to SetModINIFloat
-SetINILong to SetModINILong
-SetINIString to SetModINIString
-GetINIFloat to GetModINIFloat
-GetINILong to GetModINILong
-GetINIString to GetModINIString
New function:
-IsMenuOpened
Version 1.10
-----------New functions:
-StringReplace
-StringErase
-StringCompareCaseInsensitive
-StringGetLenght
-StringContains
-StringInsert
-SetINIFloat
-SetINILong
-SetINIString
-GetINIFloat
-GetINILong
-GetINIString
-FileGetLinesCount
-ReadStringFromFile
-FileGetFileTime
-GetSHA1FromFile
-GetSHA1FromString
-GetUserTimeStamp
-GetUserTime
-----------Added SHA1 check for PEX file in case user updates only the .DLL file. Please always update the whole package.
Version 1
-Initial release
Description: F4SE plugin which adds new functions for modders. Complete list of functions can be found in the SUP_F4SE.psc file in the plugin package.
Installation: Install the package via mod manager.
Engine fixes:
Spoiler:
Show
-ScrapCrashFix Fixes bug widely known as "scrap crash". Will take care of removing object reference from it's powergrid in case reference was not scrapped via Workshop(using "Delete" console or papyrus function).
-WirelessPowerFix Fixes and reworks wireless power connections: When radiators are powered off they will drop all wireless connections to it. When powered on they will restore them. This fixes bug when powergrid elements "connected" via powered off radiator will be in the same powergrid. Properly restores wireless connections of a radiator which is also a generator if connections were severed while it was moved.
-TerminalLinkFix Prevents power grid from losing all of previous terminal connections when you connect a new terminal to it. Also enables terminal connections for wireless objects All engine patches are enabled by default and can be switched off in SUP F4SE INI file.
Events:
Spoiler:
Show
Since V 11.00 those events can be permanent if you set the respective flag. Permanent events will be tied to the savegame like vanilla or F4SE events. The only exception is "OnMainGameLoop" - it can't be made permanent. Starting from V11.00 SUP F4SE adds following events for modders to use:(Please refer to .psc file for more detailed info) -"OnMainGameLoop" - allows papyrus functions to be independently called by the game with specified time between calls and other parameters(Call interval, Only Gamemode\Only menumode) -"OnGameLoad" - invokes on savegame load or a new game. -"OnGameSave" - invokes on savegame save. -"OnCellChange" - invokes when player enters a Cell(also fires on savegame load). -"OnCellFirstTimeVisit" - invokes when player enters an INTERIOR cell for the first time. -"OnPowerConnection" - invokes when Player Adds\removes connection in the workshop. -"OnQuestFinished" - invokes when Quest is finished(either completed or failed). -"OnQuestActive" -invokes when quest is enabled\disabled in Pipboy.. -"OnConsoleCommand" - invokes when user successfully executes a console command. -"OnPlayerMapMarkerStateChange" - invokes when player sets\removed Custom marker in the pipboy or via relevant SUP function. -"OnActorRagdollStart" -invokes when Actor is knocked down(Ragdoll mode) by explosion or by PushActorAway command. -"OnActorRagdollFinish" - invoked when Actor is no longer in Ragdoll mode. -"OnPlayerRadioState"- invokes when player radio is switched on\off via pipboy or papyrus command. -"OnCrosshairRefChange" - invoked when when the a new ref is found in the crosshair. -"OnWorkshopPowerStateChange" - invoked when workshop capacity,load,power rating changes. -"OnDismemberLimb" - invoked when actor loses a limb. All of these events can be set up using papyrus functions or SUP Script Runner. More info can be found in .psc file which comes with the package.
If you try to set any event except "OnMainGameLoop" twice for the same function - it won't be set the second time.
SUP Script Runner:
Spoiler:
Show
SUP Script Runner allows you to set up event callbacks by placing a JSON file in the game folder. Note: -Info provided here is valid for SUP F4SE V 11.00 or later! -All files must be placed in "Data\Scripts\SUPScriptRunner" folder. -You can set up all of abovementioned events. -Functions can be either global or local. -Function should have parameters which correspond with specified event(requires params correspond with those mentioned in .psc file) -The function call is done via native CallGlobalFunctionNoWait(for global functions) or CallFunctionNoWait(for local functions) function. More info and examples are under spoiler: Example: Papyrus script:
Scriptname MyScriptName
Function OnLoadFunction() global DebugPrintSUP("My global function runs!") endFunction
or
Function MyLocalFunction() DebugPrintSUP("My local function runs!") endFunction
Instruction: You should create a JSON file(editable in notepad), give it a unique name and place it "Data\Scripts\SUPScriptRunner" folder. JSON examples are avaiable at "file section".
For this file local "MyLocalFunction" from "MyScriptName" will be called. Example file path - "Data\Scripts\SUPScriptRunner\Myfile.json" If you want more than one function called on game load, use this template:
Function SUPOnCellChange(Cell NewCell) DebugPrintSUP("NEW CELL FROM ESP IS " + NewCell) endFunction
Function SUPOnCellChangeSecond(Cell NewCell) DebugPrintSUP("NEW CELL FROM ESP SECOND IS " + NewCell) endFunction
Function SUPTestLoop() global ;DebugPrintSUP("Test loop works = CHECK") endFunction
List of parameters you can add to all types of Events: -"Event"(string) - Specify event for which this function will be called.You can see list of Events in the section above. -"Caller"(string) - FormID of object to which script is attached in "formIDhex|PluginName" structure. Light mods are supported. -"RunTimesCount"(0-infinite) - Specify for how much times this function will be called untill callback is automatically removed. Set it to 0 or don't specify at all for infinite calls. List of parameters you can add to callbacks of "OnMainGameLoop" event: -"CallInterval": (0-inf) - specify time between calls in seconds(it's not advisable to call the functions very frequently as papyrus can stack them). -"CallMode": (0-2) - 0 - function will be called in both Gamemode and Menumode, 1 - function will be called only in Gamemode, 2 - function will be called only in Menunode
For modders:
Spoiler:
Show
Your papyrus script should include this line to call the functions:
Import SUP_F4SE
You can check if plugin installed using GetPluginVersion from F4SE. Plugin name is "SUP_F4SE". Plugin version is returned as a decimal value. 1.00 == 100 1.1 == 110 11.00 = 1100 etc..