Jump to content

Papyrus log has infinitely repeating error that I can't find (from base game or from a mod?)


Dahveed

Recommended Posts

Here's a screenshot (below) of what my Papyrus log looks like.

 

I'm having this issue where when I stand beside certain NPCs (always custom ones, for example Livia and Tabia), my FPS drops to the single digits until I move away. I turned on logging, and I'm not exaggerating when I say that I got something like HUNDREDS of pages of this repeating message.

 

Does anyone know what this script is from?

 

https://imgur.com/a/kLMqh0h

 

Link to comment
Share on other sites

Open SSEEdit

Load all active mods

At the top left there is a filter box for the FormID

Enter 015F9014

Wait while it searches

Once found the associated record will be highlighted.

From there you can see the source plugin as well as any other plugins that might edit the record.

If there is more than one plugin editing the record, look for the one that assigns the mlq_lcoquestscript.

 

Personally, I do not know what mod it may be from. Based on the error shown, it looks like there might be a calculation error in determining the last index of an array.

Link to comment
Share on other sites

A Google search for mlq_lcoquestscript turned up a hit for the Lawbringer mod.

 

015F9014 would strongly indicate the use of an injected form ID since otherwise that should be from Update.esm and in Update.esm that ID does not exist.

Link to comment
Share on other sites

mod: "Lawbringer" v1.3.0.2 by EpicCrab https://www.nexusmods.com/skyrimspecialedition/mods/29882

 

MLQ_LCOQuestScript

 

Scriptname MLQ_LCOQuestScript extends Quest  

Keyword Property CurrentOwnership Auto
Keyword Property DefaultOwnership Auto
ReferenceAlias[] Property ControlMarkerAliases Auto
FormList Property RadiantExclusionFormList Auto

Event onStoryScript(Keyword akKeyword, Location akLocation, ObjectReference akRef1, ObjectReference akRef2, int newController, int excludeFromRadiant)
    bool isSetupProperly = akLocation.hasKeyword(CurrentOwnership)
    if(newController == 0 && akLocation.hasKeyword(DefaultOwnership)) ;defaulting ownership and a specific faction is the default
        newController = akLocation.getKeywordData(DefaultOwnership) as int
    endIf
    if(isSetupProperly)
        int index = akLocation.getKeywordData(CurrentOwnership) as int
        ObjectReference currentControllerRef = ControlMarkerAliases[index].getReference()
        ObjectReference newControllerRef = ControlMarkerAliases[newController].getReference()
        if(currentControllerRef && !currentControllerRef.isDisabled() && newControllerRef && newControllerRef.isDisabled()) ;if any of these conditions aren't met it's best to just not deal with this
            currentControllerRef.disable()
            newControllerRef.enable()
            akLocation.setKeywordData(CurrentOwnership, newController as float)
            if(excludeFromRadiant == 0 && RadiantExclusionFormList.hasForm(akLocation))
                RadiantExclusionFormList.removeAddedForm(akLocation)
            elseif(excludeFromRadiant != 0 && !RadiantExclusionFormList.hasForm(akLocation))
                RadiantExclusionFormList.addForm(akLocation)
            endIf
        endIf
    else ; f*** you this is going to be so much messier now
        int index = ControlMarkerAliases.length
        ObjectReference currentControllerRef = None
        while (index > 0 && !currentControllerRef)
            index -= 1
            ObjectReference temp = ControlMarkerAliases[index].getReference()
            if(temp && !temp.isDisabled())
                currentControllerRef = temp
                ObjectReference newControllerRef = ControlMarkerAliases[newController].getReference()
                if(currentControllerRef && !currentControllerRef.isDisabled() && newControllerRef && newControllerRef.isDisabled())
                    currentControllerRef.disable()
                    newControllerRef.enable()
                    if(excludeFromRadiant == 0 && RadiantExclusionFormList.hasForm(akLocation))
                        RadiantExclusionFormList.removeAddedForm(akLocation)
                    elseif(excludeFromRadiant != 0 && !RadiantExclusionFormList.hasForm(akLocation))
                        RadiantExclusionFormList.addForm(akLocation)
                    endIf
                endIf
            endIf
        endWhile
    endIf
    stop()
endEvent

int function getControllerIndex(String controllerName) global
  ; ... code here ...
endFunction

 

 

 

Without a specific error line its impossible to say what kind of code is throwing the errors. So I have the script partly rewritten.

If you want to compile next source keep in mind I do not added the single function from original script. Maybe the mod needs this function getControllerIndex() to work properly.

MLQ_LCOQuestScript

 

Scriptname MLQ_LCOQuestScript extends Quest
{adjusted by ReDragon 2022-01-01}
; https://forums.nexusmods.com/index.php?/topic/10898648-papyrus-log-has-infinitely-repeating-error-that-i-cant-find-from-base-game-or-from-a-mod/

  Keyword PROPERTY DefaultOwnership auto
  Keyword PROPERTY CurrentOwnership auto

  FormList PROPERTY RadiantExclusionFormList auto            ; radiant exclude list

  ReferenceAlias[] PROPERTY ControlMarkerAliases auto        ; pre-filled array of marker aliases

  Bool bBusy    ; [default=False]


; -- EVENT --

EVENT OnStoryScript(Keyword akKeyword, Location akLocation, ObjectReference akRef1, ObjectReference akRef2, Int aiValue1, Int aiValue2)
;====================================
; https://www.creationkit.com/index.php?title=OnStoryScript_-_Quest
; aiValue1 = newController
; aiValue2 = excludeFromRadiant

IF ( bBusy )
    RETURN    ; - STOP -    Do not allow multiple event calls to stop this quest!
ENDIF
;---------------------
    bBusy = TRUE            ; *T*

    myF_Action(akLocation, aiValue1, aiValue2, akLocation.HasKeyword(CurrentOwnership))

;;;    bBusy = False            ; ***
    self.Stop()        ; stop this quest
ENDEVENT


; -- FUNCTIONs -- 3

;----------------------------------------------------
FUNCTION myF_Debug(Int n, Location akLocation, Int i)  ; helper to shrink stack size
;----------------------------------------------------
IF (n == 0)
    Debug.Trace(self+" OnStoryScript("+i+") - ERROR-0: Location is <None> .. " +akLocation)
    RETURN    ; - STOP -
ENDIF
;---------------------
IF (n == 1)
    Debug.Trace(self+" OnStoryScript("+i+") - ERROR-1: Location = " +akLocation+ " has invalid KeywordData!")
    RETURN    ; - STOP -
ENDIF
;---------------------
IF (n == 2)
    Debug.Trace(self+" OnStoryScript("+i+") - ERROR-2: Location = " +akLocation+ " detected invalid newController value!")
    RETURN    ; - STOP -
ENDIF
;---------------------
IF (n == 3)
    Debug.Trace(self+" OnStoryScript("+i+") - ERROR-3: Location = " +akLocation+ " detected invalid newController value!")
ENDIF
ENDFUNCTION


;-----------------------------------------------------
FUNCTION myF_AddRem(Location akLocation, Int aiValue2)  ; internal helper
;-----------------------------------------------------
IF ( akLocation )
ELSE
    RETURN    ; - STOP -    safety net
ENDIF
;---------------------
    int i = RadiantExclusionFormList.Find( akLocation )
    IF ( aiValue2 )                                                        ; (excludeFromRadiant != 0)
        IF (i < 0)
            RadiantExclusionFormList.AddForm(akLocation)
        ENDIF
    ELSE
        IF (i >= 0)
            RadiantExclusionFormList.RemoveAddedForm(akLocation)
        ENDIF
    ENDIF
ENDFUNCTION


;-----------------------------------------------------------------------------
FUNCTION myF_Action(Location akLocation, Int aiValue1, Int aiValue2, Bool bOK)  ; code outsourced from event
;-----------------------------------------------------------------------------
IF ( akLocation )
ELSE
    myF_Debug(0, akLocation, aiValue1)                        ; //DEBUG-0
    RETURN    ; - STOP - /1
ENDIF
;---------------------
    IF (aiValue1 == 0) && akLocation.HasKeyword(DefaultOwnership)        ; default ownership and specific faction is default
        aiValue1 = akLocation.GetKeywordData(DefaultOwnership) as Int
    ENDIF

    objectReference currentControllerRef
    objectReference newRef                                               ; newRef = newControllerRef
    int i                                                                ; i = index

;---------------------
IF ( bOK )                                                               ; bOK = isSetupProperly
    i = akLocation.GetKeywordData(CurrentOwnership) as Int

    IF (i < ControlMarkerAliases.Length)
        currentControllerRef = ControlMarkerAliases[i].GetReference()            ; - CURRENT -
    ELSE
        myF_Debug(1, akLocation, i)                           ; //DEBUG-1
    ENDIF
;    -------------------------------------------
    IF (aiValue1 < ControlMarkerAliases.Length)
        newRef = ControlMarkerAliases[aiValue1].GetReference()                    ; - NEW -
    ELSE
        myF_Debug(2, akLocation, aiValue1)                    ; //DEBUG-2
    ENDIF

    ; if any of these conditions aren't met it's best to just not deal with this

    IF (currentControllerRef) && !currentControllerRef.IsDisabled()
    ELSE
        RETURN    ; - STOP - invalid REF /or/ controller is disabled
    ENDIF
;    ----------------------
    IF (newRef) && newRef.IsDisabled()
        currentControllerRef.Disable()
        newRef.Enable()

        akLocation.SetKeywordData(CurrentOwnership, aiValue1 as Float)
        myF_AddRem(akLocation, aiValue2)
    ENDIF
    RETURN    ; - STOP -    isSetupProperly == TRUE
ENDIF
;---------------------
; f*** you this is going to be so much messier now

    i = ControlMarkerAliases.Length
    WHILE (i > 0)
        i = i - 1
        currentControllerRef = ControlMarkerAliases[i].GetReference()    ; temp

        IF (currentControllerRef) && !currentControllerRef.IsDisabled()
            IF (aiValue1 >= ControlMarkerAliases.Length)
                currentControllerRef = None
                myF_Debug(3, akLocation, aiValue1)            ; //DEBUG-3
            ELSE
                newRef = ControlMarkerAliases[aiValue1].GetReference()
            ENDIF

            IF (newRef) && newRef.IsDisabled()
                currentControllerRef.Disable()
                newRef.Enable()

;?;             akLocation.SetKeywordData(CurrentOwnership, aiValue1 as Float)        ; code line not found in original script !!!
                myF_AddRem(akLocation, aiValue2)
                RETURN ; - STOP -
            ENDIF
;           ---------------------
            currentControllerRef = None
            newRef               = None
        ENDIF
    ENDWHILE
ENDFUNCTION

 

 

Edited by ReDragon2013
Link to comment
Share on other sites

  • Recently Browsing   0 members

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