Jump to content

[Solved] SSEEdit question


Recommended Posts

Posted

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?

 

 

Posted
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

SSEEdit.PNG.1b96a927674afa7fe98499cab513e74f.PNG

 


 

 

Posted

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.

Posted
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.

Posted
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.

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

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