» Mon May 07, 2012 1:43 pm
There's a few xml-related ways you can do it.
You can set to false for the persuation button to hide it, or you can set to false to make it non-clickable. Or you can run your script every frame and detect when the mouse is over the Peruasion button, and disable left mouse button as long as the mouse is pointing there. The Persuasion menu's xml path seems to be: "dialog_topics\dialog_button_layout\dialog_persuade", so altering the two would need:
SetMenuFloatValue "dialog_topics\dialog_button_layout\dialog_persuade\visible" 1009 1
or
SetMenuFloatValue "dialog_topics\dialog_button_layout\dialog_persuade\target" 1009 1
...where the last "1" means false, and "2" is true and would enable them.
Note that the specific xml menus are re-built by the engine at various times. I'm not sure whether the Dialogue menu is rebuilt every time you activate a new NPC, but I would guess so. If that's the case, you can just forget the changes when the dialogue menu has been closed. If not, you need to change it back to enable it.
But from looking at the SetNoPersuasion function, I think it works like most other OBSE functions: It lasts for the reminder of that game session, but is not stored in the savegame. And even if it was, it would be relatively simple to detect when you're back in GameMode again, and then call SetNoPersuasion to enable Persuasion again.