Jump to content

Creating a simple MCM menu?


ErraticFox

Recommended Posts

This whole MCM thing is actually starting to melt my brain! I'm only just getting comfortable with scripts... and now I try my hand at this and "ArrggHH!".

 

Firstly, am I missing something really simple here? Am I supposed to load something from SKI in to Ck because nothing compiles. Is that normal. And I don't quite grasp the ModName property referred to in the quickstart guide.

 

If anyone wants to help. I'm looking to make a simple MCM menu that can deactivate Mharphin's idle dialogue quest and perhaps alter his actorbase aggression level

 

 

EDIT: Doh! Just noticed this: https://github.com/schlangster/skyui/wiki

 

Still if anyone wants to help.. it would be a lot quicker

I haven't made an MCM in a while but... Let me give it a try.

Scriptname MarphinMCMScript Extends SKI_ConfigBase

float MarphinAggression = 1.0; default value of 1
{Determines Marphin's aggression, slider}
bool MarphinIdle
{Toggle Marphin's idle dialogue, toggle}
Actor Property MarphinActor Auto 
Quest Property IdleQuest Auto; assuming you are Stop()ping idle quest, if setting a global then make a global prop instead and set that value

event OnPageReset(string page)
	AddHeaderOption("Options")
	AddEmptyOption()
	AddToggleOptionST("MarphinIdleState", "Toggle Idle Dialogue", true)
	AddSliderOptionST("MarphinAggressionState", "Change Aggression", 1.0)
endEvent

State MarphinIdleState
	event OnSelectST()
        MarphinIdle = !MarphinIdle
        SetToggleOptionValueST(MarphinIdle)
    endEvent

    event OnDefaultST()
        MarphinIdle = true
        SetToggleOptionValueST(MarphinIdle)
    endEvent

    event OnHighlightST()
        SetInfoText("Turn Marphin's idle dialogue on or off.")
    endEvent
EndState

State MarphinAggressionState
	event OnSliderOpenST()
        SetSliderDialogStartValue(MarphinAggression)
        SetSliderDialogDefaultValue(1)
        SetSliderDialogRange(0, 3)
        SetSliderDialogInterval(1)
    endEvent

    event OnSliderAcceptST(float value)
        MarphinAggression = value
        SetSliderOptionValueST(MarphinAggression)
    endEvent

    event OnDefaultST()
        MarphinAggression = 1.0
        SetSliderOptionValueST(MarphinAggression)
    endEvent

    event OnHighlightST()
        SetInfoText("Change Marphin's aggression level.\n 0 means he will not initiate combat. 1 means he will attack enemies on sight.\n 2 means he will attack enemies and neutral NPCs on sight, and 3 means he will attack anyone on sight.")
    endEvent
EndState

Event OnConfigClose()
	MarphinActor.SetActorValue("Aggression", MarphinAggression); may need a maintenance script on the player alias, don't recall, check and if so PM me if you need an example
	If MarphinIdle
		If !IdleQuest.IsRunning()
			IdleQuest.Start()
		EndIf
	Else 
		IdleQuest.Stop()
	EndIf
EndEvent

It's untested but should work. I've messed about with MCMs a decent amount, judging by my mods. I think. :P

Link to comment
Share on other sites

 

 

This whole MCM thing is actually starting to melt my brain! I'm only just getting comfortable with scripts... and now I try my hand at this and "ArrggHH!".

 

Firstly, am I missing something really simple here? Am I supposed to load something from SKI in to Ck because nothing compiles. Is that normal. And I don't quite grasp the ModName property referred to in the quickstart guide.

 

If anyone wants to help. I'm looking to make a simple MCM menu that can deactivate Mharphin's idle dialogue quest and perhaps alter his actorbase aggression level

 

 

EDIT: Doh! Just noticed this: https://github.com/schlangster/skyui/wiki

 

Still if anyone wants to help.. it would be a lot quicker

I haven't made an MCM in a while but... Let me give it a try.
Scriptname MarphinMCMScript Extends SKI_ConfigBase

float MarphinAggression = 1.0; default value of 1
{Determines Marphin's aggression, slider}
bool MarphinIdle
{Toggle Marphin's idle dialogue, toggle}
Actor Property MarphinActor Auto 
Quest Property IdleQuest Auto; assuming you are Stop()ping idle quest, if setting a global then make a global prop instead and set that value

event OnPageReset(string page)
	AddHeaderOption("Options")
	AddEmptyOption()
	AddToggleOptionST("MarphinIdleState", "Toggle Idle Dialogue", true)
	AddSliderOptionST("MarphinAggressionState", "Change Aggression", 1.0)
endEvent

State MarphinIdleState
	event OnSelectST()
        MarphinIdle = !MarphinIdle
        SetToggleOptionValueST(MarphinIdle)
    endEvent

    event OnDefaultST()
        MarphinIdle = true
        SetToggleOptionValueST(MarphinIdle)
    endEvent

    event OnHighlightST()
        SetInfoText("Turn Marphin's idle dialogue on or off.")
    endEvent
EndState

State MarphinAggressionState
	event OnSliderOpenST()
        SetSliderDialogStartValue(MarphinAggression)
        SetSliderDialogDefaultValue(1)
        SetSliderDialogRange(0, 3)
        SetSliderDialogInterval(1)
    endEvent

    event OnSliderAcceptST(float value)
        MarphinAggression = value
        SetSliderOptionValueST(MarphinAggression)
    endEvent

    event OnDefaultST()
        MarphinAggression = 1.0
        SetSliderOptionValueST(MarphinAggression)
    endEvent

    event OnHighlightST()
        SetInfoText("Change Marphin's aggression level.\n 0 means he will not initiate combat. 1 means he will attack enemies on sight.\n 2 means he will attack enemies and neutral NPCs on sight, and 3 means he will attack anyone on sight.")
    endEvent
EndState

Event OnConfigClose()
	MarphinActor.SetActorValue("Aggression", MarphinAggression); may need a maintenance script on the player alias, don't recall, check and if so PM me if you need an example
	If MarphinIdle
		If !IdleQuest.IsRunning()
			IdleQuest.Start()
		EndIf
	Else 
		IdleQuest.Stop()
	EndIf
EndEvent
It's untested but should work. I've messed about with MCMs a decent amount, judging by my mods. I think. :P
You're a star sir!

 

I did manage to find an old post http://forums.nexusmods.com/index.php?/topic/1748926-help-creating-mcm-menu/?fromsearch=1

 

And I kinda pieced one together between that and the one here (thanks CdCooley).

 

Although it seemed to work, I hadn't quite set it up correctly (there was no fancy Cross hair in the toggle box, but I think this is because I hadn't set a default state).

 

Yes I am using global to allow the idle quest to function or not.

 

Just one last question if I may. Do I still need to add all the default script from configuration template?

Edited by skinnytecboy
Link to comment
Share on other sites

I don't know what I would do without the wiki. I am so grateful for the people who have taken the time to add all that information. I certainly have not done my share.

 

As to the MCM, that really shouldn't be your first attempt at Papyrus. That's more Intermediate level, you need to start at Beginner. Everyone starts there. Google for Cipcis and try some of his/her tutorials first.

 

EDIT: I did it for you, here's a link: http://www.cipscis.com/skyrim/tutorials/beginners.aspx

Link to comment
Share on other sites

 

 

This whole MCM thing is actually starting to melt my brain! I'm only just getting comfortable with scripts... and now I try my hand at this and "ArrggHH!".

 

Firstly, am I missing something really simple here? Am I supposed to load something from SKI in to Ck because nothing compiles. Is that normal. And I don't quite grasp the ModName property referred to in the quickstart guide.

 

If anyone wants to help. I'm looking to make a simple MCM menu that can deactivate Mharphin's idle dialogue quest and perhaps alter his actorbase aggression level

 

 

EDIT: Doh! Just noticed this: https://github.com/schlangster/skyui/wiki

 

Still if anyone wants to help.. it would be a lot quicker

I haven't made an MCM in a while but... Let me give it a try.
Scriptname MarphinMCMScript Extends SKI_ConfigBase

float MarphinAggression = 1.0; default value of 1
{Determines Marphin's aggression, slider}
bool MarphinIdle
{Toggle Marphin's idle dialogue, toggle}
Actor Property MarphinActor Auto 
Quest Property IdleQuest Auto; assuming you are Stop()ping idle quest, if setting a global then make a global prop instead and set that value

event OnPageReset(string page)
	AddHeaderOption("Options")
	AddEmptyOption()
	AddToggleOptionST("MarphinIdleState", "Toggle Idle Dialogue", true)
	AddSliderOptionST("MarphinAggressionState", "Change Aggression", 1.0)
endEvent

State MarphinIdleState
	event OnSelectST()
        MarphinIdle = !MarphinIdle
        SetToggleOptionValueST(MarphinIdle)
    endEvent

    event OnDefaultST()
        MarphinIdle = true
        SetToggleOptionValueST(MarphinIdle)
    endEvent

    event OnHighlightST()
        SetInfoText("Turn Marphin's idle dialogue on or off.")
    endEvent
EndState

State MarphinAggressionState
	event OnSliderOpenST()
        SetSliderDialogStartValue(MarphinAggression)
        SetSliderDialogDefaultValue(1)
        SetSliderDialogRange(0, 3)
        SetSliderDialogInterval(1)
    endEvent

    event OnSliderAcceptST(float value)
        MarphinAggression = value
        SetSliderOptionValueST(MarphinAggression)
    endEvent

    event OnDefaultST()
        MarphinAggression = 1.0
        SetSliderOptionValueST(MarphinAggression)
    endEvent

    event OnHighlightST()
        SetInfoText("Change Marphin's aggression level.\n 0 means he will not initiate combat. 1 means he will attack enemies on sight.\n 2 means he will attack enemies and neutral NPCs on sight, and 3 means he will attack anyone on sight.")
    endEvent
EndState

Event OnConfigClose()
	MarphinActor.SetActorValue("Aggression", MarphinAggression); may need a maintenance script on the player alias, don't recall, check and if so PM me if you need an example
	If MarphinIdle
		If !IdleQuest.IsRunning()
			IdleQuest.Start()
		EndIf
	Else 
		IdleQuest.Stop()
	EndIf
EndEvent
It's untested but should work. I've messed about with MCMs a decent amount, judging by my mods. I think. :tongue:
You're a star sir!

 

I did manage to find an old post http://forums.nexusmods.com/index.php?/topic/1748926-help-creating-mcm-menu/?fromsearch=1

 

And I kinda pieced one together between that and the one here (thanks CdCooley).

 

Although it seemed to work, I hadn't quite set it up correctly (there was no fancy Cross hair in the toggle box, but I think this is because I hadn't set a default state).

 

Yes I am using global to allow the idle quest to function or not.

 

Just one last question if I may. Do I still need to add all the default script from configuration template?

 

You still need to add the default script onto the player.

 

And Pevey, it's not his first script. Unless you were talking about the OP, then nvm.

Link to comment
Share on other sites

  • Recently Browsing   0 members

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