Help getting started with Moneo or Leto

I’ve read through the Moneo help file. And all I got was this lousy T-Shirt.

My initial goal, in picking up Moneo, was to mine all the items and their attributes from my .mod file.

I thought about the fact that a vast majority of the non generic items (in our .mod) are Tag based, and that we use NWSS 2.4.4, which is tag based. This would enable me to make a list of:

  • Items
  • Dude that drops that item
  • Where that dude lives

I could put all this in some sort of .php searchable web format and submit this to my players for salivation.

The script that I (we, as I have a friend who uses an Apple/Linux computer help) came up with generates an item name just fine, but then it’s just a series of numbers which make little and less sense to me.

Here is our script (which I think is almost exactly the example script from Moneo):

%mod = 'World_of_Amon.mod';
for (%mod['*.uti']) 
{
print /TemplateResRef, "	", /LocalizedName, "	",; 
for (/PropertiesList) {
print /~/PropertyName, "	", /~/Param1Value;
}
print "\n";}
\\{
  print /TemplateResRef, "	", /LocalizedName, "	", /~/PropertyName, "\n";
}

I tell powershell “.\moneo dump_items.ls > dump_items.txt” !

Here is (a few lines of) the result (3885 items):

bast1	Tinker's Gloves	52	052	052	0
bast2	Nadrili Shield	0	01	012	023	051	0
bast3	Crystal Rose Amulet	0	01	075	040	0
bauhmar1	Greater Displacement Cloak	0	01	012	015	0
bauhmar2	Jade Buckled Belt	35	051	0
bauhmar3	Hasslich's Gift	0	016	06	037	043	074	0

How do I turn this into actual human readable data? And then further link that to a creature tag (printing the name, then to a waypoint location (Area Name)? And is there any way I can “print” which palette it appears in (Armor, Creature, Mis, …)?

My other question would be for all my quest items, which are given by a script (usually in a conversation) can I have the same script, when it doesn’t find a creature associated to the tag, look for a script that creates the item, find the conversation it’s used in, then find the creature (and location) that conversation is associated with? Thus far, I have done this by reverse engineering (i.e. reading through all the conversations, noting scripts used and items created by them)… I’m on “R”.

The numbers are references to 2da files. I’m not sure whether moneo can read them. You could load the moneo output into a spreadsheet to do the 2da lookups.

For the overall solution, you’ll need something like this:

Cycle through the area .git files.
For each area

  • Open the .are file, store the area name, close
  • Cycle through the creature list for the area:
    • Store the creature name
    • Cycle through the inventory
      > open the uti, print area / creature / item, close uti

Unless anyone can think of a shortcut.

Regarding your final question, I suggest opening a new thread, - unless I’m mistaken, it’s a separate topic.

I appreciate it @Proleric. I’ll elaborate on the second to last part first.

None of the items (or .uti’s (I can’t think that without smiling)) are on the creatures. All are handled by OnDeath loot scripts. Initially (in the scope of building the .mod) named for the individual, but eventually they wholly embraced the Tag based loot system and thus used a single loot script.

Almost no creatures are placed in areas. They’re handled by NWSS (Neverwinter Spawn Script) 2.2.4. So it’s a tag based spawn

So, the only link between a creature and the items he’ll drop are the Tag (and ResRef). And the only link between the creature and the area is his Tag.

Example:
Creature - Palsfor
Tag - palsfor
Loot Script - ls_palsfor

...
    CreateItemOnObject("palsfor1", OBJECT_SELF, 1);
    }
   else if(nDiceRoll <= 20)
    {
    CreateItemOnObject("palsfor2", OBJECT_SELF, 1);
    }
   else if(nDiceRoll <= 30)
    {
    CreateItemOnObject("palsfor3", OBJECT_SELF, 1);
   ...

Waypoint - Calls Tag palsfor

So, I know his Tag (which textually equals his ResRef but is not the same field) is called in the waypoint where he spawns in a particular area. This is was what I thought might be the link.

So what data element might be called for the tag in a given waypoint? I can see that they all logically have similar same data (item, creature tag, waypoint tag), but I don’t know how to string them together. if I need to do separate “pulls” and consolidate them, I’ll do what needs to be done.

My logical database brain says: Query item tag (Print the Name and Tag). If the item tag (minus 1 character because of the naming convention of items) equals a creatures tag, Print his name. Look in areas to match creatures tag, Print area name. I just don’t know how to speak that to Moneo.

As to the last portion, I understand. I’ll make a new post for it momentarily.

Ah, now I see that your second question is more closely related than I imagined.

I guess the first thing to do would be to generate a text table of item and creature resrefs from your scripts - see my response to your second question in the other thread.

Now you can write a moneo script that cycles through the area .git files, capturing the area name from the .are as shown above, then cycling through WaypointList to find waypoints whose tag matches a creature. Output a text table of creature and area.

Join the creature/area table with the item/creature table in a spreadsheet, and you’re done.

If translating tags to refrefs isn’t quite a mechanical process of going lower case, you might need additional scripts to do that translation.

@Proleric, Sorry it took so long to respond. I had some commitments that almost got me committed, and I have subscriptions (as opposed to issues).

I really appreciate you taking a look at this. Currently one of our players, who is a coder by trade, is putting something together to pull stuff in the mod apart. We are learning, together, how all the 2das integrate and cross reference, so it’s taking a while. A lot of the fidgity is specific to our mod, but I’ve asked him if he was willing to submit it to the collective y’all for improvements and maybe eventual publication. I’ll let you know how it turns out.

2 Likes