Jump to content

SKKmods

Premium Member
  • Posts

    2737
  • Joined

  • Last visited

Everything posted by SKKmods

  1. I have noticed that just COC-ing into a new game can cause some game systems to be unpredictable, which is why I never use that for actual testing. Either a clean vault exit savegame or Fast Start New Game (exactly why I created it). See if you can reproduce the issue when the game has been allowed to initialise normally.
  2. Select ALL in the left hand tree view and type [ intimid ] in the filter, most of the related assets will then list. Your interested in the [ Perk entry ] section [ target ] tab. Typical conditions for your case would be: GetIsID == MyUniqueActivationObjectName GetDistance Reference PlayerRef value
  3. If you hide the base activation option (or use an object with no activation) then use an AddActivate perk to add a focus/hover activation menu option it can be conditioned on distance. I do excatly that with placed objects to activate ainmations with Open Anything. Look at the base game Intimidation perk as a template.
  4. Yes Move Workshop Markers does exactly that. BUT you do have to READ the description to use it.
  5. Just had a dig around and my "charge caps for fast travel like in Fallout 76" function does it like this: Bool bFastTravelMenu = false ... Self.RegisterForPlayerTeleport() Self.RegisterForMenuOpenCloseEvent("PipboyMenu") ... Event OnPlayerTeleport() If (bFastTravelMenu == TRUE) && (pPlayerREF.GetCurrentLocation() != pInstituteConcourseLocation) ; PUNISH THEM EndIf bFastTravelMenu = FALSE EndEvent Event OnMenuOpenCloseEvent(string asMenuName, bool abOpening) If (asMenuName == "PipboyMenu") If (abOpening == True) bFastTravelMenu = True Else Utility.Wait(1.0) ;for events to happen bFastTravelMenu = False EndIf EndIf EndEvent Since it contains a blocking Wait, for elegance it wants to be in a standlone async script (not part of a larger event driven script). The only gotcha is if a player open/close pipboy within 1 second of using a load door that is detected as fast travel.
  6. Be careful as OnPlayerTeleport triggers on normal load doors. As will the Institute teleporter and subsequent travel to/from InstituteConcourseLocation
  7. CK doesnt want to save a file whilst it is loaded in a running game. It can be forced, but you risk getting what you got.
  8. Thanks, good to know my invironment is no more broken than everyone else. ps no I dont use CK fixes due to my vanilla SDK platforms philosophy.
  9. Loading perfectly fine ESPs that use TopicInfoGroups for dialogue batch management, CK ocassionally generates a stack of EditorWarnings: QUESTS: <CURRENT> INFO '' (010732FC) Could not find previous info (010732FD) for TopicInfo (010732FC) in Topic "" (010732F2). Where the "previous info" is always a TopicInfoGroup which still exists, infact the same InfoGroups which xEdit lists in the file header as TNAM Transient Types Unknown. Simply cloasing and opeing the CK + ESP resolves the issue. Is this common, or just me ?
  10. Looks like the (wait + bailout counter) is the way forward. The same object on different loads 5 minutes apart: SKK_476WorkshopSafetyScannerScript.OnLoad [SKK_476WorkshopSafetyScannerScript < (FF00BEA1)>] mass 9.990244 SKK_476WorkshopSafetyScannerScript.OnLoad [SKK_476WorkshopSafetyScannerScript < (FF00BEA1)>] ZERO MASS
  11. Good thinking will add that test and throw a debug message if it trips ... ... BUT its the exact same object that works 90% and only generates the error 10% of the time.
  12. This papyrus error is thrown occasionally (maybe ~10% of triggers) on an ObjectReference attached script. Nothing is broken, but it's un-neat. Any ideas on how to strengthen this to avoid the error condition: Event OnLoad() If (Self.IsBoundGameObjectAvailable() == True) && (Self.IsDisabled() == false) && (Self.Is3dLoaded() == true) Self.SetMotionType(Motion_Keyframed, FALSE) EndIf EndEvent
  13. Static adding another RedR_ButtonBox activate parent to RedRGarageDoor in CK is EZ. Dont forget to add a new locked working layer to avoid nudging and breaking existing combined elements. RedRGarageDoor does not show as [Placed Object] broken precombine in xEdit after adding linkrefs or activate parents to it.
  14. have nearly a THOUSAND papyrus scripts published and regularly updated them with fixes and enhancements. To help with the publishing workflow I have a custom papyrus release compiler script which in toto is specific to me, but you may find concepts and components useful. The standards are: (1) All non fragmentary scripts start with the prefix SKK_MODUNIQUECODE so (a) scripts will never version conflict between solutions (b) I can compile only the scripts relevant to a specific mod © when archives are created I can check that no other scripts have somehow been tagged to include. (2) Any lines of debug or test code has the postfix ;debugdebug to detect and remedy before release (of course just use DebugOnly pragma for whole functions). (3) Some of my diagnostic mods actually depend on Debug.Trace output so those specific scripts have to be recompiled as exceptions with debug enabled. (4) One of my solutions actually hacks three base game scripts (yeah pure filth) so they need to be specifically compiled. The variable pathing supports script namespaces, although I do not use them to keep things simple. Enjoy !
  15. 99% that the quest will not start as is has a quest alias that is not filling and not checked as OPTIONAL. Falg all aliases to optional and see what happens IN A NEW GAME.
  16. The furthest (actor 3d rendered) column is the empyrical demonstration of the uGrids active radius around the player: Math: ((uGridsToLoad / 2) * 4096) Example: uGrids 5 outside Goodneighbor the furthest 3d loaded actor is 12,764 game units from the player which is 3 cells distant (not 2.5 because the player is not always exactly in the center of the cell they are in). In Language: uGridsToLoad is the diameter of 4096 game unit cells that are loaded around the player, where uGridsToLoad 5 is 5 cells (20,480 game units) diameter or 2.5 cells (10,240 game units) radius. Baseline assumes the player is exactly in the center of the cell they are in but in actual measurments there can be a +/- 2048 unit offset from that cell center. In pictures, uGridstoLoad 5 cells (grid 3 is player center): 1 2 12345 4 5 For non native English speakers note the transitions from RADIUS (distance) to DIAMETER (cells). The maximum playable anywhere in the world in my game configurations is uGridsToLoad 13 (26,000 game unit radius) to account for the volume of actors and objects downtown boston as illustrated in the clipped excel tables. More than that and Fallout4.exe will just not load a game on what looks like memory allocation limits. To EZ rebut the "but no one can run more than 9 uGrids" limited beliefs here is an old GTX1060 shooting hitscan projectiles over 50,000 game units which is 25 uGrids or 13 cells back in 2017 and a more recent test using non hitscan projectiles at 35,000 game units which is 17 uGrids or 9 cells.
  17. Yes you can do most of that yourself today using Replace Any Actor with Any Actor. Enjoy.
  18. uGridsToLoad is simply a progression of odd numbers; 3,5,7,9,11,13,15 ... 31 all work to define the loaded radius in game units ((uGridsToLoad / 2) * 4096) around the player. I have been doing this stuff for years now, here is what uGridsToLoad 25 (active radius 51,200) looks like The point here is not to document the basics, rather to find the actual limits depending on loaded objects and scenery in the arera.
  19. Messing about on a totally vanilla base game with large uGrids to use the Commonwealth for a long range shooting project with non hitscan projectiles, found some interesting things. Basic ratios: Fallout4Prefs.ini [General] uGridsToLoad = XuExteriorCellBuffer = (uGridsToLoad+1)^2iPreloadSizeLimit = (uGridsToLoad*1024)^2 Fallout4.exe generally stops consistently loading games at around 300 active actors or 5Gb memory allocated. Some games manage to load up to 6Gb but freeze ~ 50% of retries. The number of actors is constant at around 300, the memory allocated to Fallout4.exe seems to vairy depending on complexity of scenery: Vault111ext 31 uGridsToLoad 296 loaded actors 6.2Gb memory DiamondCityExt 15 uGridsToLoad 299 loaded actors 5.0Gb memoryGoodneighborExt 13 uGridsToLoad 288 loaded actors 4.5Gb memory Using a scanning script to find and remove all persistent and loaded actors then forcing CellReset PurgeCellBuffers in the console removes 1,500 loaded/persistent actors from the world, reducing allocated memory by 800Mb suggesting that each actor generates a memory load of ~ 500Kb. Comparision of the default uGridsToLoad 5 and 15 at DiamondCityExt: Learn more here.
  20. Or it may be that your custom actors have not regenerated facegen data, or, that face data is strewn around in cancerous loose files rather than fast streaming BA2 archives. As those actors cells load, the game engine has to work extra hard to regenerate the mess that you created, on the fly.
  21. I dont KNOW but remeber similar issues trying to configure split interior workshop with exterior refs (probably the map marker/fast travel mat lookup) and THINK my solution was to make the interior and exterior cells share the same location record. Totally non standard kludge, but may be worth checking out.
  22. Probably becuase OnInit() does not fire for quest aliases. That would be OnAliasInit() like: Event OnAliasInit() Debug.Trace("SKK_GSSPlayerAliasScript.OnAliasInit") ScrapPlayerJunkFilter() EndEvent
  23. StartTimer() in real seconds pauses in any UI menu, so every menu event needs to be registered for accurate ETAs:
  24. Only if you store an ETA and then subtract current time from that. Then cancel and restart the timer. BUT WARNINGS ... (a) StartTimerGameTime() and GetCurrentGameTime() in GameHours are paused in menus, but values are preserved across OnPlayerLoadGame. (b) StartTimer() in real seconds do not tick in menus. To maintain a realtime ETA have to store an end time and reset the timer at each OnMenuOpenCloseEvent (abOpening == false) event and use Utility.IsMenuMode to detect multipe stacked open menus e.g. (PipboyMenu + PauseMenu). © GetCurrentRealTime() in real seconds do still tick in menus BUT is reset to zero OnPlayerLoadGame so to maintain a reltime ETA you have to also store a GameTime based ETA and then factor back from that at the current Timescale every OnPlayerLoadGame.
  25. Good to establish that I am a jerk and you are an asshole. For everyone else: always check your results.
×
×
  • Create New...