Is there a way to automate finding a script used in conversation file?

I have a script missing from a conversation file, and - of course - it’s the biggest, most involved conversation file in the whole module, with dozens of scripts hanging off every third line or so.

I know I can highlight lines with scripts attached in the conversation editor, but that’s not really that helpful since there’s so many of them, and it basically just highlights 1/3 of the conversation.

Do I have to find the one line with the missing script manually, or is there possibly some way to automate the process? Searching manually has failed me so far.

@QuenGalad, have you tried building module (toolset option)? This should show you missing resources, non-compiling scripts, etc. (provided you checked scripts element).

Yes. Like I said, I know I have the missing script - I know this because I have used the “build module” toolset option.

What I’m trying to do is react to the fact that it showed me the missing script - to fix that problem.

But to do that, I have to first find the specific line that has that specific script attached to it in the “Actions Taken” tab.

However, the conversation file is enormous, and content of the dialogue does not help in this specific instance. And when it shows me the “missing resources” upon building module, it can only open the conversation file - but it does not open at the location within the file where the problem is.

So I was hoping there was an automated way to search the “Actions Taken” tabs in a conversation file, so that I don’t have to scroll manually through hundreds of tiny blue squares and small text lines.

moneo is well worth the learning curve, because it’s a completely general solution for all your find and/or fix needs. It will search your Actions Taken or anything else you like.

1 Like

Whoa.

Thanks, Proleric. I mean, it looks terrifying, but it’s great to know it’s an option.

If that’s too scary, you can use niv’s nwn-tools to convert the dialog to YAML or JSON and just open it up in your text editor and search for the script name.

2 Likes

I was going to suggest that but didn’t want to get into describing how to figure out which node it was on once it was found in the yml file :slight_smile:

If you just need to find it to remove it or fix the spelling this would do the trick easily. If you really need to know which node it’s on this way may lead to madness…

1 Like

It would really help to have an idiot’s guide to using niv’s tools. I have no clue where to start.

moneo really isn’t that scary. The principles aren’t wildly different from nwscript. It’s well-documented and comes with examples of most common tasks. I use it all the time.

1 Like

I found a workaround to this by opening a copy of the .mod file in a simple text editor, then searching for the name of the script in question. Between a load of gibberish, you will find precisely the conversation line you have been looking for and can then find the node via text search inside the toolset. Not exactly the most elegant solution, but simple enough.

1 Like

You may improve your solution by avoiding the need to deal with binary data directly:

  1. open the module in nwnexplorer.
  2. browse the conversation
  3. go to raw hierarchy and export it as a text file
  4. search for name of the script
  5. text of the node should be in the (12, Text, line above it

This is fine for single cases, but for full batch processing solutions by other posters in this old thread are probably more efficient.

2 Likes