What is unique above is the ListBoxNames, note that in many cases the same listboxname is used in several other xml files. For example the listbox AVAILABLE_FEAT_LIST is also used in chargen_nfeats**.xml, and the equivalent versions of ig_chargen bfeat/nfeat, & levelup_bfeat/nfeat xml files.
What I want to know (which would be useful to all to know) is what are the row names for all these listboxes? Knowing the row names will allow us to manipulate these listboxes via the ListBox Gui script functions.
Currently Classes and spells can (should) be obtainable via the following method: (classes used as an example)
This accomplishes IDing the rownames for CLASS_LIST. AVAILABLE_SPELL_LIST works in a similar manner.
However, the above technique does not work for all cases. I tried using it to determine the rownames for AVAILABLE_FEAT_LIST but it did not work.
Determining if you have the right row name can be tested by using RemoveListBoxRow in an OnAdd execute gui script callback of the GUI screen you are testing. If you successfully found the row name the listbox for the specified row, it should not be visible. Do this for a screen and a scenario where you know that row should show up, so that you know the only way it was removed was through your intervention via the callback script.
If you find out what works for a given listbox name above, please post your. Please do not post mere guesses, but only proven results. (or things you have proved do NOT work to ID the row name)
Obs devs, it would be really really helpful if you could just lookup this information and tell us. Better yet give us a GetListBoxRowName(oPC, sScreen, sListBoxName, iRowNumber) function.
In the meantime with lack of info from above, we have to experiment and find out for ourselves.
I have been struggling with this as well, with the hope of recreating the chat selection ui features. Probably just going to do it the hard way.
I set up the following chat command to help me find it, and after a lot of trial and error, and a very simple name found no luck in getting any response.
The following is part of my chat system.
By typing the filename followed by a parameter it runs the parameter.
or in my case i typed in dm_pldelete Pain
But that would only delete the row if the listbox row name is Pain which is a bit too obvious, i tried various syntax, combination, row1, it's pretty easy to test that way. About the only thing i can't test with this is a trailing space. ( hmm just thought i could try object to string as well, and see if it's related to that )
It seems like something both the nwnx crowd who have symbols, and the devs, can easily look up. Once we know this information there is a lot more we can do in improving the interface and merging features.
If i can find this one, i can default the ui elements to hidden, then make them visible if the person is not an invisible dm, thus making dms able to hide. Or i can just recreate the UI myself, and since it has the same names the engine will treat it like the one it creates itself.
We just need a little documentation, not knowing this is using up time in trial and error that could be going into new cool things on the vault.
I'll see if a programmer might know the answer to this...no guarantees I'll get any replies, though. _________________ Matthew Rorie Marketing/PR Producer, Obsidian Entertainment
The 2da string look-up technique described above also works for Listboxes SKILLPANE_LIST and AVAILABLE_DOMAIN_LIST. _________________ HCR2 Scripting Framework
I managed to conquer chat select, if you create a pane OR button, replacing the button with the players name AS it's name, it works with the left click function. I am pretty sure the player name is the list box row name, but sidestepped the question by seeing if recreating it could be made to work.
I merged kemo scry. Now working on merging the actual player list and making a cache of who's playing, and adjusting it's functionality since i need all names to always be there unless its a dm. Really kemo scry did all i needed mainly, this lets me remove quite a bit of what was in the default game and control the features in this.
( Kemo if you see me on IRC i'll give you what i did so far, you probably can do quite a bit once you see what i did )
For those who don't know why i am doing this, it's to get the DM's out of all the player list's in the game. _________________ DungeonEternal PVP PW | Joining a PW
Edited By BrianMeyer on 11/03/09 06:54
Matthew Rorie Marketing/PR Producer
Joined: 01 May 2008
Posted: Tuesday, 03 November 2009 07:31PM
I found a programmer who would know the answer to this, but he's a little slammed at the moment. If I can free some of his time this week I'll try to press him on it. Feel free to ping me via message if I lose track of it... _________________ Matthew Rorie Marketing/PR Producer, Obsidian Entertainment
This is the response I got (I apologize if some of this wraps weirdly):
"Keep in mind, we didn't always name listbox rows. The listbox row names were almost never actually used in-code but rather were specified mostly as debugging aids. The listbox manipulating script functions came along well after NWN2 had shipped, and as a result, many of the old list boxes from the original game were not implemented in a way that followed a convention compatible with the list box script functions.
That said, these seem to be the names that I was able to determine.: characterscreen.xml ListBoxName=SKILLPANE_LIST - Name of skill (from the strref in the skills 2da) characterscreen.xml ListBoxName=FEAT_LIST - Name of feat (from the strref in the feats 2da) characterselection.xml ListBoxName=CharacterListBox - no names chargen_align.xml ListBoxName=ALIGNMENT_LIST - Names of the rows are in the XML chargen_animal.xml ListBoxName=COMPANION_LIST - Resref of the familiar chargen_appearance.xml ListBoxName=APPEARANCE_LIST - The rows are defined in the XML chargen_background.xml ListBoxName=BACKGROUND_LIST - Do not appear to be named chargen_bfeats.xml ListBoxName=ADDED_FEAT_LIST - Name of the Feat (from the strref in the feats 2da) chargen_bfeats.xml ListBoxName=AVAILABLE_FEAT_LIST - Name of the feat (from the strref in the feats 2da) chargen_class.xml ListBoxName=CLASS_LIST - Name of the class (from the strref in the classes 2da) chargen_complex.xml ListBoxName=BACKGROUND_LIST - Do not appear to be named chargen_deity.xml ListBoxName=DEITY_LIST - Do not appear to be named chargen_domain.xml ListBoxName=ADDED_DOMAIN_LIST - Name of domain (from the strref for that domain) chargen_domain.xml ListBoxName=AVAILABLE_DOMAIN_LIST - Name of domain (from the strref for that domain) chargen_familiar.xml ListBoxName=FAMILIAR_LIST - Resref of the familiar chargen_finish.xml ListBoxName=SOUNDSET_LISTBOX - Do not appear to be named chargen_packages.xml ListBoxName=PACKAGE_LIST - Do not appear to be named chargen_race.xml ListBoxName=RACE_LIST - RaceConstant from races 2da levelup_ranger.xml ListBoxName=STYLE_LIST - The rows are defined in the XML chargen_school.xml ListBoxName=SCHOOL_LIST - Do not appear to be named chargen_skills.xml ListBoxName=SKILLPANE_LIST - Name of skill (from the strref in the skills 2da) chargen_spells.xml ListBoxName=ADDED_SPELL_LIST - Name of spell (from the strref in the spells 2da) chargen_spells.xml ListBoxName=AVAILABLE_SPELL_LIST - Name of spell (from the strref in the spells 2da) chargen_subrace.xml ListBoxName=SUBRACE_LIST - SubraceConstant from 2da cutscene.xml ListBoxName=toplistbox - Not named cutscene.xml ListBoxName=bottomlistbox - Not named cutscene.xml ListBoxName=replieslistbox - Not named journal.xml ListBoxName=JournalEntryList - Do not appear to be named module.xml ListBoxName=ModuleListBox - Do not appear to be named partybar.xml ListBoxName=PARTY_LIST - CHAR_BOX #, where # is the index in the list partychat.xml ListBoxName=npclistbox - Not named partychat.xml ListBoxName=replieslistbox - Not named quickspell.xml ListBoxName=QuickSpellListbox - Name of class (from the strref in classes 2da) spells_memorized.xml ListBoxName=SpellList - SPELL_LEVEL_0 through SPELL_LEVEL_9 spells_known.xml ListBoxName=AVAILABLE_SPELL_LIST - KNOWN_LIST EMPOWERED_LIST EXTENDED_LIST MAXIMIZED_LIST QUICKENED_LIST SILENT_LIST STILL_LIST PERSISTENT_LIST PERMANENT_LIST ELDRITCH_ESSENCE_LIST ELDRITCH_SHAPE_LIST _________________ Matthew Rorie Marketing/PR Producer, Obsidian Entertainment
Thank you very much, tell that programmer that this was much appreciated. Eliminates a lot of guess work, especially since we'd be hitting our heads up against the wall on the unnamed ones. _________________ DungeonEternal PVP PW | Joining a PW
Quote: I merged kemo scry. Now working on merging the actual player list and making a cache of who's playing, and adjusting it's functionality since i need all names to always be there unless its a dm. Really kemo scry did all i needed mainly, this lets me remove quite a bit of what was in the default game and control the features in this.
( Kemo if you see me on IRC i'll give you what i did so far, you probably can do quite a bit once you see what i did )
I've done something of this sort that basically incorporates KEMO and the player chat screen I was also motivated to give DM's the ability to be hidden on entering the game. I also added some extra options to tell others what the player was doing, such as Roleplaying, Hack'n Slash, Relaxing, Exploring, Join up, etc.
I could get you a copy of my work if your interested. _________________ Forgotten Realms:Starmantle
Very awesome, thank you. Although I've tried using the strref featname to manipulate the feat listbox rows (for character screen and levelup screens) and it didn't work. _________________ HCR2 Scripting Framework
I am actually interested in fixing the domain list to restrict domains for the specific gods, but it looks like from the above response I am going to not be able to do that. If they didn't use the listbox names in the code then changing how it works probably will not work.
Oh well I'm going to test it anyway and see if I can't get something to work. _________________ Forgotten Realms:Starmantle
I am actually interested in fixing the domain list to restrict domains for the specific gods, but it looks like from the above response I am going to not be able to do that. If they didn't use the listbox names in the code then changing how it works probably will not work.
Oh well I'm going to test it anyway and see if I can't get something to work.
It is possible to restrict domains during levelup, but not during character gen (at least not in a way I can think of right now)
In levelup you can use a OnAdd callback for the levelup_domian screen and use the ListBox functions to remove domains you dont want.
In character gen, even though you might save off knowledge of which deity was selected via a callback the main problem is. In any gui callback from a char gen screen, they do fire, but the OBJECT_SELF is an Invalid object. Therefore you cannot use it as a valid PC object in which to use as a parameter for the various GUI manipulation script functions. _________________ HCR2 Scripting Framework
During chargen, can you put a call back on the deity selection that will store the selection somewhere other than the PC for the domain callback to access? _________________
Quote: Posted 11/07/08 06:38 (GMT) by Rob McGinnis We know nicethugbert loves us. He's president of our fan club.