• Please note: In an effort to ensure that all of our users feel welcome on our forums, we’ve updated our forum rules. You can review the updated rules here: http://forums.wolflair.com/showthread.php?t=5528.

    If a fellow Community member is not following the forum rules, please report the post by clicking the Report button (the red yield sign on the left) located on every post. This will notify the moderators directly. If you have any questions about these new rules, please contact support@wolflair.com.

    - The Lone Wolf Development Team

Hiding Stuff - coding help

stargazer_dragon

Well-known member
Ok so I know how to use preclude and hidden, but what I need to do is basically the same as they made for deities recently (which I still got to figure out how to use properly)

I want to
>Hide all Languages
>Hide all Factions
> Hide all races - can kind of use a go around for this
> hide all gods
> Hide all Traits
> Hide all Ethnicity
> Hide some Alt traits
> hide some classes and other mic junk

So I can manually go threw and do this for everything, but my players don't have all the same data packs I have (I have all Pathfinder ones you can buy and a lot of the 3rd party Downloaded ones)

So the problem becomes how to hide these yet not break it when they load it, I mean I guess it might be possible to make multiple packages for each source, but this is way harder then even just hiding it all which is already a huge task. Wondering if there is any way to do basicaly what they are doing with deities and hide everything that is not XX type of thing, so instead of hiding specifics it hides for instance every ID that starts with dei or with fa or whatever, this way I can just make my stuff start with a difrent prefix.

In short is there any way to use wildcards with the hide option thus allowing something like

<preclude id="dei*" source="hidden_stuff"/>

thus hiding everything that starts with the dei prefix while not hiding stuff that starts with any other prefix such as Dei
 
The short answer is no. You can't preclude stuff that they don't have access to as it causes HL to fall into safe mode. :( I know its sort of strange to say you MUST have this book just so I can take it away. ;)

Why "hide" all this stuff? I mean most of what you said like ARTs are coming from books like the ARG. Why not just turn off the ARG as that would be allot easier wouldn't it? Or are you allowing just pieces of the ARG?

Ummmm I can't think of any good way other than like you said to have multiple install "packages". I was forced to do this just recently for Mythic and the Community Bestiary. People need to install the CB and then add Mythic addon only if they have the official Mythic Package. I agree its going to cause MORE work.

Honestly if your allowing really small pieces of Pathfinder Books then you will just have to audit the players sheets after they make them. I can't think of a another good way right now....

Disclaimer: Nothing above is meant to be "your playing wrong". Its honest questions to see if I can gather more info and find a solution....
 
Last edited:
is there a way to use if statements such as if source X is present then preclude Y ect

that way it checks for the source then only if the source returns true will it run the code otherwise it will ignore the code and move on.

I know they at least added option for deities but they didn't give any links or real clue where and what kind of code is needed to use the new hide deity options. Perhaps you could give me a example so that I could take it from there.

And yea we use feats and a lot of this and that's like gear and such from a lot of sources but don't use the actual location names and such. eventually I figure I will slowly remake everything we use then just turn off all data packs, certainly save my players cash. But if they allowed us a way to preclude data pack bits without worrying about breaking the everything then we wouldn't need to go threw such lengths as basically recoding the whole darned system.
 
on a side note I love the work you and others have done with the 3rd party stuff, has saved me countless hours of work and likely a TON of frustration as I try to figure out the coding that hero lab uses, kinda wish they had just whent with C++ standard or something but am sure there's really good reasons for using the coding they use.
 
Strictly FYI, skip if you want
For the Deity choice exclusions, it is handled by adding "needtag" elements to the table which adds gods.

<denytag container="HideDeiCat" thing="DeityCat"/>
<denytag container="HideDeity" thing="HasDeity"/>

The "thing" element checks the named tag group on each thing considered for the table. If there is a matching tag on the container of the tag group named in "container", then the prospective thing is not shown for choosing. Each element is checked individually, so the thing is only shown if it passes them all.

Since the container for deities is the hero, all you have to do is assign the former tag group to the hero which matches the tag on the thing you want to exclude.

Functional Part
For example, if you want to hide the 20 core golarion core deities (the category tag for that group is DeityCat.CoreGolari), you would assign HideDeiCat.CoreGolari to the hero. If you wanted to hide only Abadar (who has the HasDeity.deiAbadar tag) then assign HideDeity.deiAbadar.

Da Bad News
Because users don't have access to the core files and you can't manipulate tables with scripts (except in a very few cases, where a candidate tag expression is based on a field), starting from a clean slate like you desire isn't really possible.
 
Last edited:
Will just have to make the file specific to the books that all my players have and turn the other data packs I have off then from here on just manually code junk, which means I best start getting a good hold on the hero lab code.

________
For the Deity choice exclusions, it is handled by adding "needtag" elements to the table which adds gods.

<denytag container="HideDeiCat" thing="DeityCat"/>
<denytag container="HideDeity" thing="HasDeity"/>

The "thing" element checks the named tag group on each thing considered for the table. If there is a matching tag on the container of the tag group named in "container", then the prospective thing is not shown for choosing. Each element is checked individually, so the thing is only shown if it passes them all.

Since the container for deities is the hero, all you have to do is assign the former tag group to the hero which matches the tag on the thing you want to exclude.
_______

When you say ""adding "needtag" elements to the table which adds gods.""
do you mean in the editor or opening up the files in note pad and adding them there?
Still getting a good handle on how hero lab arranges stuff, Thus far it seams easier to make new stuff then to use the already existent stuff lol, prob why there are a zillion copies of so many abilities.
 
Tables are part of the UI of the Program, they are the things you click on to add something. For example, on the Background tab, there is a Deity Chooser Table, an Alignment Chooser Table, a Race Chooser Table, a Language Dynamic table, an ART Dynamic Table, so on.

Chooser Tables are the ones which look like dropdowns, they are used when you pick exactly one thing (for example, your character will never have 2 races, or 2 alignments). Dynamic Tables are the ones like the feat table or the language table, where you can add multiple things and have them all display in the table.

The UI and its elements (like needtag things) are not accessable to users, so this sort of thing is purely informational, if you ever want to make your own game system.

For most practical purposes, the editor should suffice. What I recommend is that you make a mechanic in the editor for your home brew game, click on the blue "Eval Scripts" button in the upper right, and try out the code I gave you in the other thread. You can also make copies of existing things using the "New (Copy)" button in the lower left to see other examples (though I don't think there are any similar mechanics, in this case).
 
Got the code Working just trying to track down the Source codes, Thing Look up deity info would work for the Gods are the cat tags also found there?

--Edit NM I think I found them by going to deity as if I was making one and grabbing the tags from there
 
Last edited:
>>>

Don't suppose there's some variant of HideDeiCat for races yet?


If I made a New race that used the replace thing ID for a race that was in a book, then a player used the mod but didn't have the book. Would it
A- break the mod (which I assume it would)

or
B - ignore the replace thing ID entry and allow the new race normally?

HL code gets flustering sometimes is so limited in some areas yet so vastly perfect in others. Avoiding breaking the mod simply becouse you tried to hide or ignore content that a player doesn't have is amongst the top on that list.

Is there going so be Hide* Tag for other stuff in the future?
 
If I made a New race that used the replace thing ID for a race that was in a book, then a player used the mod but didn't have the book. Would it
A- break the mod (which I assume it would)
HL will fall into safe mode because it can't find that "Unique ID".

Not many people use this feature actually as like myself I can think of 2 things I have hidden. So yes if your trying to "hide" lots of stuff HL will have issue if the thing your hiding does not exist.

Personally I would much rather have XML namespaces so I don't clash with LW official ID's before they put time into better "hiding". But that is because that affects 90% of the packages I do where "hiding" affects the Eberron package only. :)
 
if they already have the basic concept for hiding stuff, based on what they did for dieties, would it be a ton of work to set something similar up for all the other categories?
 
if they already have the basic concept for hiding stuff, based on what they did for dieties, would it be a ton of work to set something similar up for all the other categories?
Their is two types of hiding here so just to be on the same page I will go over them.

*HIDDEN and *PRECLUDE do things at a much higher level as the "Thing" itself is non-existent when *HIDDEN. So if I bootstrapped the Thing (*HIDDEN) it would have issues as it does not exist.

The Hide Deity tag is not really really making the "Thing" go away. It just prevents the Deity from being displayed in a very specific portal/table list. But if I bootstrapped the deity I could still get it onto the hero without issues.

As I am not LW and its bad form to tell another programmer how "easy or hard" something is. I can't really speak to how hard or easy it is. Aaron added the ability for the gods, I will be happy if they added it for other stuff, but I also don't expect it to happen anytime soon either.
 
I'm working on a similar system for Languages, since those are another thing which commonly changes between campaign settings. Probably not going to make it into this month's release though.

How hard would it be? Not hard, but certainly a lot of trouble for big groups of content unless we could leverage existing categories. Think about feats, for example.

Say we wanted to add the ability for you to hide all the base pathfinder feats so that you could have a blank slate for adding your own feats. Adding a needtag to the various feat tables (on the class, and on the feats tab), would take a minute or two. Adding a pair of tag groups and defining the intersecting tags would be a few minutes more. But then how would we get it to all the feats that would need it?

It couldn't be assigned in an eval script in the feats component, because eval scripts don't run until the thing they are in is added to the hero. Even if we could make some script execute for a thing before it is added, component scripts can't distinguish between our content and fan made content, so any feats you created would also have whatever marker we defined.

The answer is that we'd have to individually add the marker tag to each and every feat. There are nearly 2000 feats defined in pathfinder currently, even with a find-replace, we'd have to go slow to make sure we didn't mess something up.

And it would add one more step in the future when we're creating new content.

"Got the feats from Book X done?"
"Yeah"
"You remember to mark them all so users won't see them if they blank-slate?"
"Damn. I better go back and do that."

Might seem like a small thing, but the burden adds up if we have to do it for each kind of thing we create.
 
Now, if I had my druthers, I would have a system which worked two different ways. Originally when I was thinking about how to do the "Deity hide" thing, I pictured it working more like the way Custom Class Specials do. Those have a candidate expression set into a text field, which determines what can be added and can be freely manipulated from outside scripts (not too hard, once you have a hang of how tag expressions work). I was going to set up a field on the hero to store the candidate expression. If I'd gone that route, you could, for your blank slate, define some custom tag to add to your created content, and then have a mechanic which alters the field so that only things with your new tag are shown. In effect, you could "Opt In" content, rather than only being able to "Opt Out" of it.

Unfortunately, the drawback to that was that it was computationally expensive (as in, it would slow the load of the deity selection window), and manipulating tag expressions is a more advanced concept than simply assigning a tag. Many folks are very intimidated by the editor already, and we wanted to keep things simple as possible. I am glad that you are making such a concerted effort to learn, that always makes me happy to see.
 
Programming is a love of mine, Still a novice at best but I have taken 2 programming classing thus far and will be taking 2 more in fall quarter pluss doing my best to learn hero lab coding.

What I wondered is how hard would it be to hide material based on the source tag. Since pretty much everything in each category has a source tag couldn't it be set so that to hide all say base pathfinder feats you would simply tell it to hide every feat with the source PathfinderCore or whatever it's actually called.

So instead of searching for the category it would search for the source, Or is the source not assigned after the type.

something like

If thing does not have source feat ignore
If thing does not have source XXX ignore
If thing has source XXX Hide thing

Far from familiar enough with hero lab code YET but something of the sort. Which if I understand it correctly is basically what the hide deity is doing, doesn't that basically says go to deities, if it has cat XX hide if not ignore?
 
I think what I am asking is what is the "group.tag" for Faction, traits, & languages. I think that is the correct specific thing I need.

Still reading threw every site I can find that has information about hero lab coding. Really the coding is kind of scattered across a large number of sites with each having just a little bit and not in any specific order makes it hard to learn but at least slowly possible

>>
also when a source is not selected (not clicked but still purchased) I believe that it isn't hidden persay it just isn't displayed so that things that are bootstrapped to those sources will still operate. Would it then be possible to make a code that displayed such material?

In effect instead of hiding specific stuff would it be possible to make a eval script that said in feats go threw and find all feats that had source X and populate them as if that source had been checked in the config hero section. But without turning anything other then the feats part of that source on? Kind of like selectively choosing which parts tabs of a data pack where checked and which ones weren't?

So for instance instead of hiding all factions from Book X and X and X ect I could unchecked those source in hero config but include a mechanic that showed all the feats from the unchecked data sources still


>>>>
Would something like this be possible??
Code:
~ Find all  VLK Factions
foreach thing in Faction where "!Sources.VLK"

  ~ If no Source then pull the thingid
  If (eachthing.tagcount[Sources.?] = 0) Then
    perform eachthing.pulltags[thingid.?,**Note sure of what might go here**]

Basically have it search factions and find all factions that do not have Sources VLK, Then check for all things without a Source and Assign a Source to them, Then pull all thing ID without VLK sources and do not display that object in the factions list.
 
Last edited:
also is there a way to force a deity cat to the second spot. Priority top moves it to the very top but what about the other spots so it gets organized how I desire?
 
also is there a way to force a deity cat to the second spot. Priority top moves it to the very top but what about the other spots so it gets organized how I desire?

Hmm. I can probably modify the SortSet we have for deities so you can assign "explicit.1" or whatever to group certain deities or categories of deities together in violation of the normal way... Not before today's release though, sorry. Hopefully next release.
 
Back
Top