Jump to content

Recommended Posts

Posted

Hiya everyone,

I've recently been having some weird issue with the MCM menu, everything was working fine, installed some mods (just to add a few dungeons, nothing that even adds itself to the MCM as it apparently doesnt have much configurations to do) and could use some help, I've been checking the papyrus logs but nothing's out of the ordinary.

 

What happens is, I open the menu, select a mod to configure like say Forgotten Magic or Achieve That or any other, things work fine for about 5 to 10 seconds, then it's like it stops responding, I can leave the menu back to the game, but when I hover stuff on MCM, I get no descriptions, I cant enter other sections that I haven't previously entered or something, it's like MCM itself stopped loading/interacting with any data, but the game keeps working, if I leave the menu ESC all the way back to the action, then go back into the MCM it works for about 5 to 10 seconds again.

 

Latest installed mods were:

  • Summerset Isle
  • Salem - Arena Tournament and DLC
  • Beyond Reach
  • The Republic of Maslea - Prologue
  • Maslea - No Main Quest Requirement (not exactly a mod but still it's a separate thing)

I've never had any issue such as this. The any thing it might be pointing to be the cause would be the same three old lines it always has been spamming due to Fushigina Dungeon, but it always did this and I never had any trouble with MCM. (I've been having Fushigina for several months without real game-breaking issues). This is also a fresh save.

 

Can anyone help me with this? Or had such issue before and knows a workaround or something?

Posted

Most cases I've seen of that type of behavior in MCM is:

 

A mod is calling latent functions or doing large loops calling latent functions from within the MCM control event.

latent function == a function that has to complete before it returns.

eg: myQuest.Start() (starting quest can not be done while a menu is open and it won't return until the menu closes == hung event == hung instance of MCM.)

 

That's just one example of what I mean by latent.

 

It may of been a case that the new mods have nothing to do with the MCM event, maybe an old mod is doing checks when you added new mods and it's now hanging MCM at certain times.

Posted (edited)

I see. Is there any way to see which mod/file might be attempting such interaction? And if possible either add or comment out that line (if it ends up doing nothing)?

I found some particular lines in the log that were... weird, in my opinion. ( I dont believe these were there before, but I could be wrong )

[02/22/2016 - 10:06:31PM] Error: Cannot call CloseConfig() on a None object, aborting function call stack: [SKI_ConfigManagerInstance (21000802)].SKI_ConfigManager.OnMenuClose() - "SKI_ConfigManager.psc" Line 122
[02/22/2016 - 10:06:48PM] Error: Cannot call CloseConfig() on a None object, aborting function call stack: [SKI_ConfigManagerInstance (21000802)].SKI_ConfigManager.OnModSelect() - "SKI_ConfigManager.psc" Line 134

It doesn't seem to indicate which script/mod is calling these functions tho...

Edited by KurokazePT
Posted

I may be interpreting it wrong but to me...

Indicates a save that has had load orders changed or mods removed and the form registered with MCM no longer exists

 

 

[SKI_ConfigManagerInstance (21000802)].SKI_ConfigManager.OnModSelect()

 

21 Hex to Dec = 33

 

What was or is the 33rd mod in your load order?

 

As I said I may be reading the log msg wrong.

But a mod that was registered with MCM has been removed or changed in your load order.

 

Posted

Currently it's Nausicaa's Tweaker...

Not exactly updated, but never had any issue with it, I'll update it just in case. I'll also test it with the current save and then with an old save and see if anything changes. It's weird tho, considering this save was started after all the mods were installed (both the ones I had and the newly added ones).

 

Also, quite cool to know that the number such as 21000802 has it's first numbers as an hex indicator of what mod is in the load order. Had no idea, that's quite neat to know when it comes to debugging purposes ^^

Does that often apply to other cases or is it only MCM-wise?

Posted (edited)

Went ahead and updated SkyUI from 4.1 to 5.0 (never had issues, but just to be safe I went ahead), Nausicaa's Tweaker went from 1.00 to 1.20. And it still gives out the same thing, It now points to SkyUI itself which doesn't make much sense.

 

So started a new game, it did the same for a while which I kinda rushed so I just waited for it to initialize it everything (a couple of minutes as usual). The error only happened once when I went to the "Hide Helmet" settings, but now seems to no longer happen. Can't really understand why tho, has something corrupted the same somehow?

 

Ah, and I've been paying attention to the papyrus logs, and never really realized the amount of "errors" most mods seem to have. Non-existing quests, non-existing functions, array indexes out of range and the sort. I never really wondered since stuff seems to work all the time specially after doing the usual TES5Edit patch thing then Wrye Bash, then ASIS then PerMa then Dual Sheath for PerMa...

 

EDIT: Used quick reply instead of editing previous post, my apologies.

Edited by KurokazePT
Posted

A lot what you read in papyrus as errors can be taken with a pinch of salt as some errors are intentional and it's how some mod authors check if something is available or true or false to decide on the course of action needed.

 

When it comes to scripting and errors some returns of functions report to the log even though the error or warning is not critical at all.

 

Arrays out of bounds errors in most cases is just bad coding that has not had enough exception checks before passing an index to an array, tsk, tsk tsk on those script writers as that is more a script writers responsibility to check the index is in bounds of an array before passing to an array...lol

 

Basically to keep the papyrus log free of warnings and errors it requires a lot more error checking code or checking every value before calling a function on the value, which in the end bloats the script.

 

For example:

Say I want to set the MotionType on an object

 

myObject.SetMotionType(4)

 

That looks simple enough, but the log may get multiple warnings or errors spammed if I don't check things first.

1. I need to cheack the object exist

 

If myObject != None
    myObject.SetMotionType(4)
EndIf

 

You would think ok no log spam if the object doesn't exist, but what if the object doesn't have the 3D loaded yet..

SetMotionType() will report to the log if the object does not have 3D loaded..

So I write another check

 

If myObject != None
    If myObject.Is3DLoaded()
        myObject.SetMotionType(4)
    EndIf
EndIf

 

So just to stop papyrus spam instead of 1 line I now have 5 lines of code.

Now when you look at an average script with multiple refs having functions called on them, your can see your short clean code turning in to a big bloated script full of nothing but error checks just to shut papyrus up...lol

 

Most of this is due to papyrus functions that report to papyrus when they fail, even when that fail is what your wanting to check in your script to decide the next action.

So to stop papyrus spam you turn a 1 line call into a multiple line checks on every step of the call, which is tedious.

  • Recently Browsing   0 members

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