astymma Posted September 5, 2012 Author Posted September 5, 2012 Tested the latest SmallerTalk. I like the new random dialog. I wonder' date=' is there a way to close the dialog with keyboard shortcut, like ESC button or B button in XBOX360 controller in Skyrim? Many times I accidentally opened the SmallerTalk dialog, a keyboard shortcut to close the dialog will be very helpful. Btw, FNV have a very bad keyboard shortcut. In some menu you need to press E to close it, and the other is X. I think E is the best, easy to reach by the finger. [/quote'] There is no shortcut to close the dialogue but you can open the console and type "cam" which is the shorthand command for the longer console command "closeallmenus". Documentation here.
GECK.O Posted September 5, 2012 Posted September 5, 2012 Is there a way to show up the dialog from a keyboard shortcut? Like using Z button to show the dialog, instead of waiting for couple of seconds, for example.
astymma Posted September 5, 2012 Author Posted September 5, 2012 Is there a way to show up the dialog from a keyboard shortcut? Like using Z button to show the dialog' date=' instead of waiting for couple of seconds, for example. [/quote'] The original SmallerTalk worked that way but that method proved unworkable. The way SmallerTalk works is by waiting long enough for Goodbye flagged GREETING topics to be spoken and then the dialogue to end and then having the NPC approach and do a StartConversation with the SmallerTalkGreeting topic. The delay is a necessity to allow this to happen. You can shorten the delay using the MCM options to as little as 1 second or as much as 10 seconds. The default of 3 seconds was chosen specifically because it allows the GREETING the npc plays to actually complete (though some of them last to closer to 4 seconds). Unfortunately there is simply no way to determine if an NPC is speaking a Goodbye flagged topic and responding to that in script. There are only three solutions to this problem. The first is to do what SmallTalk does, which is to override the Goodbye flags of vanilla dialogue making it a VERY large esp containing a huge portion of all vanilla dialogue as overrides. The second solution, used by SmallerTalk, is to let the Goodbye flagged GREETING play out and then start a new topic specifically using StartConversation. The second solution requires there be a delay long enough to let the original GREETING to play out (though not including the sound file, the delay can be as short as only 1 second). The third solution would be to override the activate event and respond accordingly and this solution is the least stable and, when tried, proved also unworkable.
rikuth Posted September 10, 2012 Posted September 10, 2012 is there a way to bypass smallertalk? scenario: I want to activate an npc to use an on activate perk, is there a way via scripting, etc. (not sneaking) to prevent smallertalk from making the npc initiate dialog afterwards?
astymma Posted September 10, 2012 Author Posted September 10, 2012 is there a way to bypass smallertalk? scenario: I want to activate an npc to use an on activate perk' date=' is there a way via scripting, etc. (not sneaking) to prevent smallertalk from making the npc initiate dialog afterwards? [/quote'] There's an MCM option to disable SmallerTalk. Uncheck "Enable SmallerTalk".
zippy57 Posted September 10, 2012 Posted September 10, 2012 I think he wants to force-disable it when talking to that NPC for all users so it doesn't show up regardless of their SmallerTalk settings.
astymma Posted September 10, 2012 Author Posted September 10, 2012 I think he wants to force-disable it when talking to that NPC for all users so it doesn't show up regardless of their SmallerTalk settings. If it's desired for an NPC to block SmallerTalk from another mod' date=' all that is required is a quest running on that NPC that checks for the presence of the SmallerTalkDialogueToken "SmallerTalkDialogueToken" [ARMO:xx007AA3'] and removes it. The script has up to the user's current SmallerTalk delay to remove it before it does the StartConversation.
rikuth Posted September 10, 2012 Posted September 10, 2012 If it's desired for an NPC to block SmallerTalk from another mod' date=' all that is required is a quest running on that NPC that checks for the presence of the SmallerTalkDialogueToken "SmallerTalkDialogueToken" [ARMO:xx007AA3'] and removes it. The script has up to the user's current SmallerTalk delay to remove it before it does the StartConversation. Wouldn't the onadd portions of the dialogue and resetai token scripts have already run by then? right now I have edited smallertalk with a new faction, SmallerTalkIgnoreFaction and a check in the smallertalk quest script along with the getdead checks to ignore npcs in that faction.
zippy57 Posted September 10, 2012 Posted September 10, 2012 Perhaps a FormID list would be better, so plugins could add to it via script rather than requiring SmallerTalk as a master.
rikuth Posted September 10, 2012 Posted September 10, 2012 Perhaps a FormID list would be better' date=' so plugins could add to it via script rather than requiring SmallerTalk as a master. [/quote'] Sounds good to me.
astymma Posted September 10, 2012 Author Posted September 10, 2012 If it's desired for an NPC to block SmallerTalk from another mod' date=' all that is required is a quest running on that NPC that checks for the presence of the SmallerTalkDialogueToken "SmallerTalkDialogueToken" [ARMO:xx007AA3'] and removes it. The script has up to the user's current SmallerTalk delay to remove it before it does the StartConversation. Wouldn't the onadd portions of the dialogue and resetai token scripts have already run by then? right now I have edited smallertalk with a new faction, SmallerTalkIgnoreFaction and a check in the smallertalk quest script along with the getdead checks to ignore npcs in that faction. No they wouldn't have run by then, they simply start a timer that waits for the delay to run out (for dialogue) or 5 minutes (resetai). You would have plenty of time to remove the tokens. It's a simple matter to have any dialogue run a removeitem command on the dialogue end script or run a script attached to the npc that checks for the token in inventory and removes it if necessary.
zippy57 Posted September 10, 2012 Posted September 10, 2012 If you did that you would either have to buildref or have SmallerTalk as a master. Perhaps adding the Ignore FormID list in SmallerTalk so other mods can add to it via script is the best method.
astymma Posted September 10, 2012 Author Posted September 10, 2012 If you did that you would either have to buildref or have SmallerTalk as a master. Perhaps adding the Ignore FormID list in SmallerTalk so other mods can add to it via script is the best method. They'd have to master or buildref SmallerTalk to use the formid list too... but I'll add the functionality in anyway. Couldn't hurt.
zippy57 Posted September 10, 2012 Posted September 10, 2012 Right, but they'd have to do it in a dialog script, and I don't know about anyone else but I don't like doing anything in dialog scripts unless absolutely necessary. Especially if/then checks, like this would require.
astymma Posted September 10, 2012 Author Posted September 10, 2012 Right' date=' but they'd have to do it in a dialog script, and I don't know about anyone else but I don't like doing anything in dialog scripts unless absolutely necessary. [i']Especially[/i] if/then checks, like this would require. I'm going to add both so both options are available. A faction and a formid list.
rikuth Posted September 10, 2012 Posted September 10, 2012 Right' date=' but they'd have to do it in a dialog script, and I don't know about anyone else but I don't like doing anything in dialog scripts unless absolutely necessary. [i']Especially[/i] if/then checks, like this would require. I'm going to add both so both options are available. A faction and a formid list. Awesome thanks
astymma Posted September 10, 2012 Author Posted September 10, 2012 Release v1.2.5 Adds the ability to have NPCs be ignored by SmallerTalk. You have two options... place them in SmallerTalkIgnoreList, a formid list, or place them in SmallerTalkIgnoreFaction, a faction, at Rank 0. The SmallerTalkScript will then ignore the NPC and not give them a token.
mojodajojo Posted September 15, 2012 Posted September 15, 2012 Thank you, thank you for the faction/formid list update. Just what my follower mod needed.
astymma Posted September 16, 2012 Author Posted September 16, 2012 Thank you' date=' thank you for the faction/formid list update. Just what my follower mod needed. [/quote'] No problem. Feel free to come back and post your test results.
rikuth Posted September 16, 2012 Posted September 16, 2012 working with the ignore faction and flist is going great for me, with those additions might it be a good idea to place a download link for smallertalk with ESM flag to the OP? Not that it is hard to set, just that I'm sure someone out there would have trouble doing it, and If I'm not mistaken it is required to use the new ignore options.
zippy57 Posted September 16, 2012 Posted September 16, 2012 SmallerTalk should ideally never be used as a master. If you want to add to the ignore faction or list you should use BuildRef and do it via script.
rikuth Posted September 16, 2012 Posted September 16, 2012 BuildRef ? googling yields no useful info. edit: hmm found one decently commented code snippet using it, may be enough to figure it out.
zippy57 Posted September 16, 2012 Posted September 16, 2012 Also' date=' there are two ways of getting references to another mod, for this purpose. One is to make the other mod a "master" -- this forces the game to crash if your mod is installed and the other mod is not. The other mod also should appear earlier on load order than your mod (but I do not remember what bad things can happen if you fail to do this). Another approach is to use FOSE's GetModIndex and BuildRef. This is how MCM works, and here is some typical code: if GetGameRestarted if IsModLoaded "The Mod Configuration Menu.esp" set iMaster to GetModIndex "The ModConfiguration Menu.esp" set rList to BuildRef iMaster 2790 ListAddForm rList SCEStokenMISC endif endif Here, you have to work with numbers instead of dragging and dropping in GECK. The formid numbers are hexidecimal 8 digit numbers, where the first two digits depend on the mod's load order. Those are the digits you get from GetModIndex. The last six digits (of the armor's id, from the other mod) you have to convert from hexadecimal to decimal and that becomes the second argument to BuildRef. [/quote']More examples of this can be found in various places such as the main SexoutStore script.
astymma Posted September 16, 2012 Author Posted September 16, 2012 working with the ignore faction and flist is going great for me' date=' with those additions might it be a good idea to place a download link for smallertalk with ESM flag to the OP? Not that it is hard to set, just that I'm sure someone out there would have trouble doing it, and If I'm not mistaken it is required to use the new ignore options. [/quote'] An esp doesn't have to be an esm to be used as a master. Likely need an esm version to edit your esp mastered to SmallerTalk in the GECK though. TBH, I wouldn't define SmallerTalk as a master. I'd simply use IsModLoaded/GetModIndex/BuildRef and dynamically add your NPCs to the FormID list SmallerTalkIgnoreList. Something like so: Begin GameMode int intIndex ref refList if (GetGameLoaded || GetGameRestarted) if IsModLoaded "SmallerTalk.esp" set intIndex to GetModIndex "SmallerTalk.esp" set refList to BuildRef intIndex 37282 if refList AddFormToFormlist refList YourNPCRef endif endif endif End EDIT: see what happens when you don't click the link to the next page of responses... oops, already answered
rikuth Posted September 16, 2012 Posted September 16, 2012 Thanks for the quick replies. @astymma can I assume this could be used in a quest script to provide a persistent variable reference to the list? i.e. somequest.refList
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now