Dahveed Posted December 31, 2021 Share Posted December 31, 2021 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 More sharing options...
IsharaMeradin Posted January 1, 2022 Share Posted January 1, 2022 Open SSEEditLoad all active modsAt the top left there is a filter box for the FormIDEnter 015F9014Wait while it searchesOnce 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 More sharing options...
Arthmoor Posted January 1, 2022 Share Posted January 1, 2022 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 More sharing options...
Dahveed Posted January 1, 2022 Author Share Posted January 1, 2022 I've since discovered it's from Lawbringer, yes. Still have no idea what that means though, I've left a comment on the author's page... but this feels like an outlier case. Link to comment Share on other sites More sharing options...
ReDragon2013 Posted January 2, 2022 Share Posted January 2, 2022 (edited) 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 January 2, 2022 by ReDragon2013 Link to comment Share on other sites More sharing options...
Recommended Posts