monsta88 Posted March 25, 2021 Posted March 25, 2021 I am currently doing an English update for a mod. In a dialog the player can select this option: "Which means... it is possible to forge Dragonbone Bikini...?" I see the above line in the game. However it is quite out of context in its current form, so I'd like to change it. I opened up the mod in SSEEdit (I actually made a new ESL flagged ESP, copied over all text related lines, and work in that, but that is beside the point). However, I can't find this line at all. I made a Name filter to list all lines where the parts of the above text is present. For example "Which means" or "forge Dragonbone". For the former I have a few hits, but none of them is the above line. I then loaded in all the mods in the load order and made a filter again, in case I missed another connecting mod which might provide this line, but could not find it again. So what am I doing wrong? Why can't I find this line?
jmf890 Posted March 25, 2021 Posted March 25, 2021 What's the filter? If it's a dialogue text than it should be on Dialog Topic either as a DIAL or a INFO record.
monsta88 Posted March 25, 2021 Author Posted March 25, 2021 1 hour ago, jmf890 said: What's the filter? If it's a dialogue text than it should be on Dialog Topic either as a DIAL or a INFO record. Here is what I tried. As you can see on the left, there are a few hits, but none of them is the line I mentioned in the 1st post. I'm sure I'm just not using thee tool properly. Spoiler
jmf890 Posted March 25, 2021 Posted March 25, 2021 You won't be able to filter it out with just the vanilla xEdit filter options if it's a response (INFO) because the text lies within the entry Responses, rather than Name. Here is a script that applies filtering by checking in the proper places for both DIAL and INFO. Spoiler unit FilterDialogTopic; var substring: string; function Filter(e: IInterface): boolean; var responses, response: IwbElement; i: integer; begin if Signature(e) = 'DIAL' then begin result := ContainsText(GetElementEditValues(e, 'FULL'), substring); exit; end else if Signature(e) = 'INFO' then begin if ContainsText(GetElementEditValues(e, 'RNAM'), substring) then begin result := true; exit; end; responses := ElementByName(e, 'Responses'); if Assigned(responses) then begin for i := 0 to Pred(ElementCount(responses)) do begin response := ElementByIndex(responses, i); if Assigned(response) and ContainsText(GetElementEditValues(response, 'NAM1'), substring) then begin result := true; exit; end; end; end; end; result := false; end; function Initialize: integer; begin result := 1; if not InputQuery('Dialogue', 'Substring', substring) then exit; substring := Trim(substring); if substring = '' then exit; FilterConflictAll := false; FilterConflictThis := false; FilterByInjectStatus := false; FilterInjectStatus := false; FilterByNotReachableStatus := false; FilterNotReachableStatus := false; FilterByReferencesInjectedStatus := false; FilterReferencesInjectedStatus := false; FilterByEditorID := false; FilterEditorID := ''; FilterByName := false; FilterName := ''; FilterByBaseEditorID := false; FilterBaseEditorID := ''; FilterByBaseName := false; FilterBaseName := ''; FilterScaledActors := false; FilterByPersistent := false; FilterPersistent := false; FilterUnnecessaryPersistent := false; FilterMasterIsTemporary := false; FilterIsMaster := false; FilterPersistentPosChanged := false; FilterDeleted := false; FilterByVWD := false; FilterVWD := false; FilterByHasVWDMesh := false; FilterHasVWDMesh := false; FilterBySignature := true; FilterSignatures := 'DIAL,INFO'; FilterByBaseSignature := false; FilterBaseSignatures := ''; FlattenBlocks := false; FlattenCellChilds := false; AssignPersWrldChild := false; InheritConflictByParent := false; FilterScripted := true; ApplyFilter; end; end. Just apply the script anywhere, input a substring that must be in the dialogue text you are looking for and the filter should be able to find it. Substring is case-insensitive and can be located anywhere within the dialogue's text.
monsta88 Posted March 25, 2021 Author Posted March 25, 2021 7 hours ago, jmf890 said: Here is a script that applies filtering by checking in the proper places for both DIAL and INFO. Thank you, I made a .pas file with this and Applied Script. I tried to search again for "Dragonbone Bikini" and the "Which means" parts, and checked all the Response fields as well, but still can't find it. (last time I ran it on the whole modlist, but I'm quite sure it is in this mod, since the line is said by a mod-specific NPC). I do another check in the game, to make sure I wrote down the exact sentence/wording. I'll also check the Response in the game and will try to search for that too. Edit: OK, I found it. It is an RNAM - Prompt line.
jmf890 Posted March 26, 2021 Posted March 26, 2021 1 hour ago, monsta88 said: Edit: OK, I found it. It is an RNAM - Prompt line. You're right, I did overlook the RNAM entry, which is the only relevant string entry in both DIAL and INFO that I didn't check for. I know you've already found the record you were looking for, but I've edited the post and the script above to look at INFO/RNAM aswell. Any future use should be able to find any dialogue text with it.
monsta88 Posted March 26, 2021 Author Posted March 26, 2021 14 minutes ago, jmf890 said: I've edited the post and the script above to look at INFO/RNAM aswell. Great, thank you very much!
Recommended Posts
Archived
This topic is now archived and is closed to further replies.