Jump to content
ℹ️ Download History temporarily unavailable ×

SKKmods

Premium Member
  • Posts

    2755
  • Joined

  • Last visited

Posts posted by SKKmods

  1. Reviewing the new Starfield scripts and starting to write some global functions in the hope that Caprica will be published (without attached virus paylod that Champollion has) before CK.

     

    The ObjectReference script defintion for SetLinkedRef has a new parameter abPromoteParentRefr.

    Function SetLinkedRef(ObjectReference akLinkedRef, Keyword apKeyword, Bool abPromoteParentRefr) Native
    

    Anyone worked with Papyrus enough to hazard what abPromoteParentRefr may do ?

     

    As it was inferred (but not fact) that objects with linkedrefs were persistent in Fallout4 (qv WorkshopItemKeyword) I was thinking it could be "Promote to persistent" ... athough [ Bool abForcePersist ] would be more appropriate for that.

  2. Whenever I ADD new navmesh to an existing worldspace the CK always ends marking some of the original navemesh as deleted, which is clearly not good for stability.

     

    As I am far to lazy to do the tedious old > new formid comparision and transposition, I tend to just remove any new navmesh if xEdit reports any deletes.

     

    Is there a mechanism to TOTALLY AVOID the CK deciding to mark original navmesh deleted ?

     

    I would have expected it to be where the new joins the exisitng, but thats not always the case as I get deletes even when the new is not joined to the exisitng and never even touched any of the existing stuff.

  3. Ever since I have been making non start game enabled "radiant" quests there have been issues with quest aliases spontaniously unfilling between a quck/exit game save and game load.

     

    • This does NOT affect full saves ever.
    • This does NOT affect start game enabled quests ever.
    • This CAN happen to both optional (but validated filled by script) and mandatory aliases. Optional alias unfills leave the quest active, mandatory alias unfills shut the quest down but leave it "grey" in the active log.
    • This CAN happen to persistent (e.g. workshops) and non persistent objects.

     

    Anyone come across this issue and any root cause analysis ?

  4. One outline approach (of many);

     

    Put an invisible activator in front of the door with your door name and activation text.

    Make nokeyword LinkedReference from the activator to the door.

    Attach script to activator with event OnActivate() that shows the menu messagebox and activates the linkedref door if that menu option is selected.

  5. Depends how they are used.

     

    I would not publish a solution with a timer constantly firing every second, but my compute cost and quality aspirations may be different to yours.

     

    Utility.Random* takes one frame to execute so can be considered "expensive" compared to non frame bound functions.

     

    Utiltiy.Wait is not expensive but be aware that script will freeze/lock and receive no input (e.g. other events) during that wait period. If the script reacts to multiple events I would put any wait functions into a seperate standalone script and call it using (FormName as ScriptName).CallFunctionNoWait("WaitFunctionName", new var[0])

  6. If the settler does not exist then compile this, put in data\scripts and console [ cgf "SKK_GlobalScript.CreateSettler" workshopref ]

    ScriptName SKK_GlobalScript
    
    Function CreateSettler(ObjectReference thisWorkshop) Global
    
    If (thisWorkshop != None) && (thisWorkshop is WorkshopScript)
       Quest pWorkshopParent = Game.GetFormFromFile(0x0002058e, "Fallout4.esm") as Quest
       WorkshopNPCScript thisActor = (pWorkshopParent as WorkshopParentScript).CreateActor((ThisWorkshop as WorkshopScript)) 
       Debug.Notification("Created Settler")
       ; do stuff to thisActor here
    Else
      Debug.Notification("No Workshop")
    EndIf
    
    EndFunction
    
  7. 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.

  8. 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

  9. 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.

  10. 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.

×
×
  • Create New...