Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

[Script, Call For Testers] Universal Chat Menus

1587151718
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Probably not, since I've been unwittingly working under this code difference for nearly a year.
1587152954
GiGs
Pro
Sheet Author
API Scripter
Its worth a try! hehe There's an issue with certain strings that i need to fix, I'm not sure if that affects the macro buttons.
1587154533
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
I would dearly love the ability to insert regular old macro buttons into a !chatmenu.
1587157674
Davemania
KS Backer
Sheet Author
API Scripter
Apologies all, TheAaron made me aware of this issue awhile back, and I just forgot to ever submit the change. I've made the  pull request ! I'm pleased to see tokenFate getting used!
1587162024
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Davemania said: Apologies all, TheAaron made me aware of this issue awhile back, and I just forgot to ever submit the change. I've made the  pull request ! I'm pleased to see tokenFate getting used! OMG, it's one of my must-have scripts and I must use it at least half a dozen times per game. My players love it.
Same here! Thanks for looking into the change!
1587162958

Edited 1587162974
GiGs, both fixes seem to be working! and something interesting to note, if you do an in-line roll normally with double brackets [[ ]], it prints it as normal text. If you do single brackets [ ], it does a normal in-line roll with the hover text and everything.
Unfortunately, macro buttons still cause a crash :/ It was worth a try lol. Here's the error it produces, in case you get the chance to look into modifying that.
1587163344
GiGs
Pro
Sheet Author
API Scripter
That reminds me - I think I did have the single inline bracket syntax as a workaround for inline rolls, but had completely forgot about it.
omg I never even thought to try that
1587163502
GiGs
Pro
Sheet Author
API Scripter
Having the two options is better!
1587163709
GiGs
Pro
Sheet Author
API Scripter
I've updated the second post of this thread (and fixed the lastupdate date too, that wasnt done in the gist).
1587394294
GiGs
Pro
Sheet Author
API Scripter
Very minor update: i just added the noarchive:true  suggested by keith months ago, so that chat menus dont get added to chat history. I might go through and add that to other messages/warnings it prints out.
Oh awesome!
Sorry total novice here.. I am curious if I can use, with Chat Menu, token_id instead of character_id.  "target" instead of "selected" Is there a way to have specific buttons are visible to GM but not the players (in the same chat menu) Thank you!
I don't think token_id would work at all, since the script only uses information found in a character sheet, not in the token values. Using "target" values might work, but the menus were intended to be set up as token actions, so that a token is already selected in order to call the menu to chat. You could make two separate menus in one macro, with one of them whispered to the GM, but I think that's the closest you could get. Hope that helps clarify things :)
Hi everyone, Quick question about the Chatmenu script: It looks like by default all the chat menu's are whispered. Is there a way to make this optional on a case by case basis? In my game, my players would like to see the menu's of the other players and I'm supporting this, but obviously I'd like to keep the NPCs' menus hidden from them. Thanks for the help /K
1589547592
GiGs
Pro
Sheet Author
API Scripter
Making it optional is on my list of things to add. Bear in mind the menus are whispered, but the buttons are not. Chat menus could clutter the chat very quickly.
GiGs said: Making it optional is on my list of things to add. Bear in mind the menus are whispered, but the buttons are not. Chat menus could clutter the chat very quickly. Awesome! Thanks for the quick reply! /K
So I have been working with this for a little while and I almost have what I want down. But I wanted to be able to show the global attack modifier and the global damage modifier on to the menu. To simply show the attack modifier information but to actually roll the damage modifier. I can't figure out the way to get that done. I have some success with the damage modifier but I am unable to get the attack modifier to show up at all.   --title:Damage Modifiers --repeating_damagemod|global_damage_name|test    The word test is where it stops working, and actually I'm not even sure if what I have is correct but I can get the names to show up properly. I was hoping some one could let me know what code actually is needed to get these working. I'll post all my menus that I am using in my next post. I had just started to switch to a menu system with something kieth put out, but this menu is actually awesome as it makes some of the things kieth did even more streamlined. It limits my macros and my player macros greatly. Thanks for working this out.
1589984089

Edited 1590001491
I have my menus separated out in ways that make sense to me. I did it to save space for my players. Let me know if anyone has any advice please.  This menu is for player traits !chatmenu @{selected|character_id} {template:atk}{{rname=@{selected|character_name}}}{{range=**@{selected|character_name}**}}{{charname=}}{{desc=**Race:** @{selected|subrace} **Class:** @{selected|class_display} **Background:** @{selected|background} **Alignment:** @{selected|alignment} **XP:** @{selected|experience} / @{selected|experience|max} **HP:** @{selected|bar1} / @{selected|hp|max} | **Temporary:** @{selected|hp_temp} **AC: ** @{selected|bar3} | **Init:** @{selected|initiative_bonus} | **Spd: ** @{selected|speed} **Jump Distance:** [[(@{selected|strength}/2)]] / [[@{selected|strength}]]ft. **Jump Height:** [[((@{selected|strength_mod}+2)/2)]] / [[@{selected|strength_mod}+2]] ft. **Passive Perception:** @{selected|passive_wisdom} CHATMENU }} --separator: | : --title:Languages --repeating_proficiencies|name|output|prof_type=Language --title:Tools --repeating_tool|toolname|tool --title:Traits --repeating_traits|name|output|name!Invocation: Spell Menu's. I have three, the first is to sort all the spells out, the second is their prepared spells, and the last is just for descriptions. Sort !chatmenu @{selected|character_id} {template:atk}{{rname=@{selected|character_name}}}{{range=**@{selected|character_name}**}}{{charname=}}{{desc=**Filters** Casting Time = ?{Casting time|any, |Action,1 action|Reaction,reaction|Bonus Action,bonus} Ritual = ?{Ritual|any,<2|no, |yes,1} Concentration = ?{Concentration|any,<2|no, |yes,1} Range = ?{Range|any,<2|ranged,feet|self,self|touch,touch} School = ?{School|any, |Abjuration,Abjuration|Conjuration,Conjuration|Divination,Divination|Enchantment,Enchantment|Evocation,Evocation|Illusion,Illusion|Necromancy,Necromancy|Transmutation,Transmutation} CHATMENU}} --separator: | : --title:Cantrips --repeating_spell-cantrip|spellname|spell|spellcastingtime=?{Casting time},spellrange=?{Range},spellritual=?{Ritual},spellconcentration=?{Concentration},spellschool=?{School} --title:Lvl-1 *(@{selected|lvl1_slots_expended}/@{selected|lvl1_slots_total})* --repeating_spell-1|spellname|spell|spellcastingtime=?{Casting time},spellrange=?{Range},spellritual=?{Ritual},spellconcentration=?{Concentration},spellschool=?{School} --title:Lvl 2 *(@{selected|lvl2_slots_expended}/@{selected|lvl2_slots_total})* --repeating_spell-2|spellname|spell|spellcastingtime=?{Casting time},spellrange=?{Range},spellritual=?{Ritual},spellconcentration=?{Concentration},spellschool=?{School} --title:Lvl 3 *(@{selected|lvl3_slots_expended}/@{selected|lvl3_slots_total})* --repeating_spell-3|spellname|spell|spellcastingtime=?{Casting time},spellrange=?{Range},spellritual=?{Ritual},spellconcentration=?{Concentration},spellschool=?{School} --title:Lvl 4 *(@{selected|lvl4_slots_expended}/@{selected|lvl4_slots_total})* --repeating_spell-4|spellname|spell|spellcastingtime=?{Casting time},spellrange=?{Range},spellritual=?{Ritual},spellconcentration=?{Concentration},spellschool=?{School} --title:Lvl 5 *(@{selected|lvl5_slots_expended}/@{selected|lvl5_slots_total})* --repeating_spell-5|spellname|spell|spellcastingtime=?{Casting time},spellrange=?{Range},spellritual=?{Ritual},spellconcentration=?{Concentration},spellschool=?{School} --title:Lvl 6 *(@{selected|lvl6_slots_expended}/@{selected|lvl6_slots_total})* --repeating_spell-6|spellname|spell|spellcastingtime=?{Casting time},spellrange=?{Range},spellritual=?{Ritual},spellconcentration=?{Concentration},spellschool=?{School} --title:Lvl 7 *(@{selected|lvl7_slots_expended}/@{selected|lvl7_slots_total})* --repeating_spell-7|spellname|spell|spellcastingtime=?{Casting time},spellrange=?{Range},spellritual=?{Ritual},spellconcentration=?{Concentration},spellschool=?{School} --title:Lvl 8 *(@{selected|lvl8_slots_expended}/@{selected|lvl8_slots_total})* --repeating_spell-8|spellname|spell|spellcastingtime=?{Casting time},spellrange=?{Range},spellritual=?{Ritual},spellconcentration=?{Concentration},spellschool=?{School} --title:Lvl 9 *(@{selected|lvl9_slots_expended}/@{selected|lvl9_slots_total})* --repeating_spell-9|spellname|spell|spellcastingtime=?{Casting time},spellrange=?{Range},spellritual=?{Ritual},spellconcentration=?{Concentration},spellschool=?{School} Prepared !chatmenu @{selected|character_id} {template:atk}{{rname=@{selected|character_name}}}{{range=**@{selected|character_name}**}}{{charname=}}{{desc=**Spell Attack Modifier:** @{selected|spell_attack_mod} **Spell Save DC:** @{selected|spell_save_dc} CHATMENU}} --separator: | : --title:Cantrips --repeating_spell-cantrip|spellname|spell --title:Lvl-1 *(@{selected|lvl1_slots_expended}/@{selected|lvl1_slots_total})* --repeating_spell-1|spellname|spell|spellprepared --title:Lvl 2 *(@{selected|lvl2_slots_expended}/@{selected|lvl2_slots_total})* --repeating_spell-2|spellname|spell|spellprepared --title:Lvl 3 *(@{selected|lvl3_slots_expended}/@{selected|lvl3_slots_total})* --repeating_spell-3|spellname|spell|spellprepared --title:Lvl 4 *(@{selected|lvl4_slots_expended}/@{selected|lvl4_slots_total})* --repeating_spell-4|spellname|spell|spellprepared --title:Lvl 5 *(@{selected|lvl5_slots_expended}/@{selected|lvl5_slots_total})* --repeating_spell-5|spellname|spell|spellprepared --title:Lvl 6 *(@{selected|lvl6_slots_expended}/@{selected|lvl6_slots_total})* --repeating_spell-6|spellname|spell|spellprepared --title:Lvl 7 *(@{selected|lvl7_slots_expended}/@{selected|lvl7_slots_total})* --repeating_spell-7|spellname|spell|spellprepared --title:Lvl 8 *(@{selected|lvl8_slots_expended}/@{selected|lvl8_slots_total})* --repeating_spell-8|spellname|spell|spellprepared --title:Lvl 9 *(@{selected|lvl9_slots_expended}/@{selected|lvl9_slots_total})* --repeating_spell-9|spellname|spell|spellprepared Descriptions !chatmenu @{selected|character_id} {template:atk}{{rname=@{selected|character_name}}}{{range=**@{selected|character_name}**}}{{charname=}}{{desc=**Spell Attack Modifier:** @{selected|spell_attack_mod} **Spell Save DC:** @{selected|spell_save_dc} CHATMENU}} --separator: | : --title:Cantrips --repeating_spell-cantrip|spellname|spell --title:Lvl-1 *(@{selected|lvl1_slots_expended}/@{selected|lvl1_slots_total})* --repeating_spell-1|spellname|spelldescription! --title:Lvl 2 *(@{selected|lvl2_slots_expended}/@{selected|lvl2_slots_total})* --repeating_spell-2|spellname|spelldescription! --title:Lvl 3 *(@{selected|lvl3_slots_expended}/@{selected|lvl3_slots_total})* --repeating_spell-3|spellname|spelldescription! --title:Lvl 4 *(@{selected|lvl4_slots_expended}/@{selected|lvl4_slots_total})* --repeating_spell-4|spellname|spelldescription! --title:Lvl 5 *(@{selected|lvl5_slots_expended}/@{selected|lvl5_slots_total})* --repeating_spell-5|spellname|spelldescription! --title:Lvl 6 *(@{selected|lvl6_slots_expended}/@{selected|lvl6_slots_total})* --repeating_spell-6|spellname|spelldescription! --title:Lvl 7 *(@{selected|lvl7_slots_expended}/@{selected|lvl7_slots_total})* --repeating_spell-7|spellname|spelldescription! --title:Lvl 8 *(@{selected|lvl8_slots_expended}/@{selected|lvl8_slots_total})* --repeating_spell-8|spellname|spelldescription! --title:Lvl 9 *(@{selected|lvl9_slots_expended}/@{selected|lvl9_slots_total})* --repeating_spell-9|spellname|spelldescription! This menu is for Abilities and Skills !chatmenu @{selected|character_id} {template:atk}{{rname=@{selected|character_name}}}{{range=**@{selected|character_name}**}}{{charname=}}{{desc=**HP:** @{selected|bar1} / @{selected|hp|max} | **Temporary:** @{selected|hp_temp} **AC: ** @{selected|bar3} | **Init:** @{selected|initiative_bonus} | **Spd: ** @{selected|speed} **Jump** - Distance [[(@{selected|strength}/2)]] / [[@{selected|strength}]]ft. **Jump** - Height [[((@{selected|strength_mod}+2)/2)]] / [[@{selected|strength_mod}+2]] ft. **Passive Perception:** @{selected|passive_wisdom} CHATMENU }} --separator: | : --title:Ability Rolls --**Str @{selected|strength}** *(@{selected|strength_mod})* ,strength|**Dex @{selected|dexterity}** *(@{selected|dexterity_mod})*,dexterity|**Con @{selected|constitution}** *(@{selected|constitution_mod})* ,constitution|**Int @{selected|intelligence}** *(@{selected|intelligence_mod})* ,intelligence|**Wis @{selected|wisdom}** *(@{selected|wisdom_mod})*,wisdom|**Cha @{selected|charisma}** *(@{selected|charisma_mod})*,charisma --title:Saving Throws --Str,strength_save|Dex,dexterity_save|Con,constitution_save|Int,intelligence_save|Wis,wisdom_save|Cha,charisma_save --title:Death Saving Throw --Death,death_save --title:Skills --Acrobatics,Acrobatics|Animal Handling,Animal_Handling|Arcana,Arcana|Athletics,Athletics|Deception,Deception|History,History|Insight,Insight|Intimidation,Intimidation|Investigation,Investigation|Medicine,Medicine|Nature,Nature|Perception,Perception|Performance,Performance|Persuasion,Persuasion|Religion,Religion|Sleight of Hand,Sleight_of_Hand|Stealth,Stealth|Survival,survival I added the Global Skill and Global Save options to this aswell. !chatmenu @{selected|character_id} {template:atk}{{rname=@{selected|character_name}}}{{range=**@{selected|character_name}**}}{{charname=}}{{desc=**HP:** @{selected|bar1} / @{selected|hp|max} | **Temporary:** @{selected|hp_temp} **AC: ** @{selected|bar3} | **Init:** @{selected|initiative_bonus} | **Spd: ** @{selected|speed} **Jump** - Distance [[(@{selected|strength}/2)]] / [[@{selected|strength}]]ft.  **Jump** - Height [[((@{selected|strength_mod}+2)/2)]] / [[@{selected|strength_mod}+2]] ft. **Passive Perception:** @{selected|passive_wisdom} CHATMENU }} --separator: | :   --title:Ability Rolls --**Str @{selected|strength}** *(@{selected|strength_mod})* ,strength|**Dex @{selected|dexterity}** *(@{selected|dexterity_mod})*,dexterity|**Con @{selected|constitution}** *(@{selected|constitution_mod})* ,constitution|**Int @{selected|intelligence}** *(@{selected|intelligence_mod})* ,intelligence|**Wis @{selected|wisdom}** *(@{selected|wisdom_mod})*,wisdom|**Cha @{selected|charisma}** *(@{selected|charisma_mod})*,charisma --title:Saving Throws --Str,strength_save|Dex,dexterity_save|Con,constitution_save|Int,intelligence_save|Wis,wisdom_save|Cha,charisma_save --title:Global Save --repeating_savemod|global_save_name|global_save --title:Death Saving Throw --Death,death_save --title:Skills --Acrobatics,Acrobatics|Animal Handling,Animal_Handling|Arcana,Arcana|Athletics,Athletics|Deception,Deception|History,History|Insight,Insight|Intimidation,Intimidation|Investigation,Investigation|Medicine,Medicine|Nature,Nature|Perception,Perception|Performance,Performance|Persuasion,Persuasion|Religion,Religion|Sleight of Hand,Sleight_of_Hand|Stealth,Stealth|Survival,survival --title:Global Skill --repeating_skillmod|global_skill_name|global_save Actions that the player can take !chatmenu @{selected|character_id} {template:atk}{{rname=@{selected|character_name}}}{{range=**@{selected|character_name}**}}{{charname=}}{{desc=**HP:** @{selected|bar1} / @{selected|hp|max} | **Temporary:** @{selected|hp_temp} **AC: ** @{selected|bar3} | **Init:** @{selected|initiative_bonus} | **Spd: ** @{selected|speed} **Jump Distance:** [[(@{selected|strength}/2)]] / [[@{selected|strength}]]ft. **Jump Height:** [[((@{selected|strength_mod}+2)/2)]] / [[@{selected|strength_mod}+2]] ft. **Passive Perception:** @{selected|passive_wisdom} CHATMENU }} --separator: | : --title:Attack Modifiers --repeating_attack|global_attack_name|global_attack_mod --title:Melee --repeating_attack|atkname|attack|atkrange<1 --title:Ranged --repeating_attack|atkname|attack|atkrange --title:Damage Modifiers --repeating_damagemod|global_damage_name|test --title:Eldritch Invocations --repeating_traits|name|output|name=Invocation: Inventory !chatmenu @{selected|character_id} {template:atk}{{rname=@{selected|character_name}}}{{range=**@{selected|character_name}**}}{{charname=}}{{desc=**Weight total:** @{selected|weighttotal} **Copper pieces:** @{selected|cp} **Silver pieces:** @{selected|sp} **electrum pieces:** @{selected|ep} **gold pieces:** @{selected|gp} **platinum pieces:** @{selected|pp} **Encumbrance:** @{selected|encumberance} CHATMENU}} --separator: | : --title:Equipment --repeating_inventory|itemname|itemcontent!
1589987668
GiGs
Pro
Sheet Author
API Scripter
RadioFlier said: So I have been working with this for a little while and I almost have what I want down. But I wanted to be able to show the global attack modifier and the global damage modifier on to the menu. To simply show the attack modifier information but to actually roll the damage modifier. I can't figure out the way to get that done. I have some success with the damage modifier but I am unable to get the attack modifier to show up at all.   --title:Damage Modifiers --repeating_damagemod|global_damage_name|test    The word test is where it stops working, and actually I'm not even sure if what I have is correct but I can get the names to show up properly. That;s a nice set of menus, and thanks for the kind words. Firstly, to get buttons to show up you need the repeating section name, the attribute name you want to use as the label, and the button name that triggers the roll, in this order: --repeating_weapons|label|button It looks like your code above might not have the proper button name. I doubt the button is called test. You can get it from the sheet's html, and it will be name="roll_SOMETHING" , with the SOMETHING being the button name. Or drag the button to your macro bar, and the part of the name we need will be right at the end, after the row id. That said, however, I don't think the script an do what you want it to (not yet anyway). It sounds like you want to display a bunch of damage buttons, with the damage value shown on the button. That is something that people have requested, and is definitely on my list of things to add (eventually...) but it doesnt do that right now.  Technically, you could do it if the attribute you choose as the label contains the damage value.
1589998972

Edited 1589999998
Thank you. I couldn't have done it without that advice about dragging it to the macro bar. I didn't even think about that. But it was what made the damage modifier to work. I'm adding these to my actions menu Here is a pic of the bar for both of them. It did work for one of them. I can got the damage modifiers to show up. This is a snip of the code. --title:Damage Modifiers --repeating_damagemod|global_damage_name|global_save The attack modifiers are still giving me trouble though. I don't think they are even working properly. It won't allow them to be automatically added to the attack rolls of a character. But I have the snip of the code below. --title:Attack Modifiers --repeating_tohitmod|global_tohit_name|global_save So here is the full macro that I am using now. !chatmenu @{selected|character_id} {template:atk}{{rname=@{selected|character_name}}}{{range=**@{selected|character_name}**}}{{charname=}}{{desc=**HP:** @{selected|bar1} / @{selected|hp|max} | **Temporary:** @{selected|hp_temp} **AC: ** @{selected|bar3} | **Init:** @{selected|initiative_bonus} | **Spd: ** @{selected|speed} **Jump Distance:** [[(@{selected|strength}/2)]] / [[@{selected|strength}]]ft.  **Jump Height:** [[((@{selected|strength_mod}+2)/2)]] / [[@{selected|strength_mod}+2]] ft. **Passive Perception:** @{selected|passive_wisdom}  CHATMENU }} --separator: | :   --title:Attack Modifiers --repeating_tohitmod|global_tohit_name|global_save --title:Melee --repeating_attack|atkname|attack|atkrange<1 --title:Ranged --repeating_attack|atkname|attack|atkrange --title:Damage Modifiers --repeating_damagemod|global_damage_name|global_save --title:Eldritch Invocations --repeating_traits|name|output|name=Invocation:  This script is amazing. I whittled what I was using down from like 20 macros to 1 menu that calls 8 others that has probably what amounts to 100 macros. Edit - Okay. So something weird happened to the character I was using. It was corrupted or something because the attack modifier and damage modifier were both unable to be modified or called. I deleted all of the damage modifiers and it was still appearing in the attacks. So I switched to a different character and the menu works perfect. Below is the code for the attack modifier now. And I also attached the code for the completed macro. Thank you so much. Global Attack Modifier --title:Attack Modifiers --repeating_tohitmod|global_attack_name|global_save Entire Macro !chatmenu @{selected|character_id} {template:atk}{{rname=@{selected|character_name}}}{{range=**@{selected|character_name}**}}{{charname=}}{{desc=**HP:** @{selected|bar1} / @{selected|hp|max} | **Temporary:** @{selected|hp_temp} **AC: ** @{selected|bar3} | **Init:** @{selected|initiative_bonus} | **Spd: ** @{selected|speed} **Jump Distance:** [[(@{selected|strength}/2)]] / [[@{selected|strength}]]ft. **Jump Height:** [[((@{selected|strength_mod}+2)/2)]] / [[@{selected|strength_mod}+2]] ft. **Passive Perception:** @{selected|passive_wisdom} CHATMENU }} --separator: | : --title:Attack Modifiers --repeating_tohitmod|global_attack_name|global_save --title:Melee --repeating_attack|atkname|attack|atkrange<1 --title:Ranged --repeating_attack|atkname|attack|atkrange --title:Damage Modifiers --repeating_damagemod|global_damage_name|global_save --title:Eldritch Invocations --repeating_traits|name|output|name=Invocation:
So I have a question. Is there a way to filter out spells in the melee and ranged attacks? It's just that I don't want the spells displayed in two places. For example if I play an eldritch knight I want to be able to view just my martial attacks and then if I want I can view my magical attacks with my spell list. 
1590035607
GiGs
Pro
Sheet Author
API Scripter
It looks like you've been very productive :) I cant tell from your posts - are there still outstanding issues you need help with? RadioFlier said: Edit - Okay. So something weird happened to the character I was using. It was corrupted or something because the attack modifier and damage modifier were both unable to be modified or called. I deleted all of the damage modifiers and it was still appearing in the attacks. So I switched to a different character and the menu works perfect.  It's unfortunate, but sometimes characters  do get corrupted. I can reassure you its nothing to do with this script: this doesnt make any changes in a character, it just reads information from them.  It's just something that happens from time time, regardless of whether you're using scripts or not. Its not common at all, but probably all of us long time users have experienced it more than once.
1590036002

Edited 1590036016
GiGs
Pro
Sheet Author
API Scripter
RadioFlier said: So I have a question. Is there a way to filter out spells in the melee and ranged attacks? It's just that I don't want the spells displayed in two places. For example if I play an eldritch knight I want to be able to view just my martial attacks and then if I want I can view my magical attacks with my spell list.  I almost missed this question. There is a way to filter out certain results, but there must be something distinctive you can use as a filter. There's a section in the first post of this thread that covers this, under the heading Filtering . Here's the first example from that post -title:Feats --repeating_feats|name|feat|type=combat The last entry there tells you its checking for a "type" stat in the repeating section, and only including them in the menu if that stat include the word combat. In your case, if there's an attribute called type, that has the word spell in it, you would just add |type!spell ! is the symbol for excluding. I dont play D&D, so I'm not familiar with the sheet, but that should tell you what you need to look for. 
Thanks for that. I see it now. And now I have some really clean menus. I have my stuff all situated now. I was able to cut back on about half of my macros and then cut back to about a quarter of those are now token actions or on my macro bar. I think a total of 10 for everywhere. My screen is finally clean. Thank you.
1590121078
GiGs
Pro
Sheet Author
API Scripter
You're welcome. This is the script I'm most proud of, because it is such a massive quality-of-life improvement.
GiGs...this stuff is so far over my head...I'm starting a Pathfinder game on Roll20 in about 10 days, and I need to figure out a way to make rolling for my GM controlled tokens easier than using the PDF and the dice roller...I was directed here, but I honestly get lost about  the end of the first paragraph...Any help would be appreciated..
1590782540
GiGs
Pro
Sheet Author
API Scripter
I think persephone posted some pathfinder menus earlier in the thread, not sure if it as PF1 or 2. I cant easily give game-specific help, as I dont play D&D or Pathfinder, but if you state the edition you are playing, and exactly what you want on the menu we can figure it out.
We are playing Pathfinder 1e...looking I see you can make the macros draw from the selected tokens, I just have no clue how to word a macro...I want to do Initiative, Attack roll, damage and a list of "traits" or special abilities and saves for pathfinder..I'm using the pathfinder by roll20 NPC sheet. I watched the Mastering the game-MSetting up a monster manual you tube channel and what he did was whiat I want, but I just do not know how to do it, and for me, learning by watching a video is difficult unless it's very step by step so I can stop and do it along the way...Any help would be appreciated as I'm thinking of just resorting to roll dice...I know I can be frustrating, not getting what people are telling me, but learning some things are more difficult for me than others...As far as macros/scripts etc...I am starting at square 1, not even understanding much of the verbiage. it's like technobabble from Next Generation to me... Thanks guys,  Much love Patrick C. 
1590805224
Kraynic
Pro
Sheet Author
Patrick C. said: We are playing Pathfinder 1e...looking I see you can make the macros draw from the selected tokens, I just have no clue how to word a macro...I want to do Initiative, Attack roll, damage and a list of "traits" or special abilities and saves for pathfinder..I'm using the pathfinder by roll20 NPC sheet. I watched the Mastering the game-MSetting up a monster manual you tube channel and what he did was whiat I want, but I just do not know how to do it, and for me, learning by watching a video is difficult unless it's very step by step so I can stop and do it along the way...Any help would be appreciated as I'm thinking of just resorting to roll dice...I know I can be frustrating, not getting what people are telling me, but learning some things are more difficult for me than others...As far as macros/scripts etc...I am starting at square 1, not even understanding much of the verbiage. it's like technobabble from Next Generation to me... Thanks guys,  Much love Patrick C.  If you haven't looked back at the thread you created, I think I gave you pretty much what you need (if you are using the Pathfinder by Roll20 sheet) in my post there . 
I did, then keithcurtis posted this That's specific to the D&D 5th Edition by Roll20 sheet, not Pathfinder
Patrick C. said: I did, then keithcurtis posted this That's specific to the D&D 5th Edition by Roll20 sheet, not Pathfinder I could be wrong but I think that's in reference to the  API token action maker, not the chat menus....but Keith could clarify perhaps?
1590810882
Kraynic
Pro
Sheet Author
Patrick C. said: I did, then keithcurtis posted this That's specific to the D&D 5th Edition by Roll20 sheet, not Pathfinder If you look back, kiethcurtis quoted who he was replying to.  It wasn't me.  I'm not going to twist your arm though.  Good luck with your game.
1590837766
GiGs
Pro
Sheet Author
API Scripter
I can tell from the look of the menus Kraynic posted there, that those are pathfinder menus. Give it a try Patrick.
1590848159

Edited 1590848343
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Mark (GM) said: Patrick C. said: I did, then keithcurtis posted this That's specific to the D&D 5th Edition by Roll20 sheet, not Pathfinder I could be wrong but I think that's in reference to the  API token action maker, not the chat menus....but Keith could clarify perhaps? That is correct. OP in the other thread had a Pathfinder problem. The Token Action Maker script was recommended by another user (also named Patrick), which only works on the D&D 5th Edition by Roll20 sheet. So I posted the advisory.
Hey gang, love this script, set up a whole bunch of stuff for my spell-casters in the party (using D&D3.5), they can pick and cast spells, replace them with healing spells (for clerics), yadda yadda yadda. A great tool to have in the toolkit. Ran into a bug with it today that took me a long time to diagnose. I copied the same script from one token's ability to another's and it just... stopped showing the text as buttons. Otherwise, the formatting was more or less the same. Turns out , if you name your monster something like "M: Hobgoblin" then... somewhere in the menu parsing it splits on that colon or something and the whole thing just dies. I renamed my monster "M Hobgoblin" and menus started working again. (I may finally settle on "M. Hobgoblin" because I like the idea of it standing in for Monsieur , but that's neither here nor there.) Too much of a JS n00b to recommend a solution, even though the code is pretty clean, I'm not sure at what point it's fouling up. I'm still getting my feet wet with Roll20, but for sure the strength of this site has so far been its community -- so many great ideas and tools to delve into.
1591555368
GiGs
Pro
Sheet Author
API Scripter
Yes, this is a known problem. I need to retool the script to properly handle problem characters (brackets are another one that can cause this issue, for example). Lol, I love Monsieur Hobgoblin.
Ah, cool, thanks. Sorry, I had read a page of comments and my eyes were starting to cross and I gotta get back to prep. Great script though, love it and so do my spellcasters. -M. Brett
I love the idea of this script, and for one character, the one I was originally testing with, it worked perfectly and I was all excited.  But then, for everyone else it didn't work.  For example, this is the output: ATTACKS Rapier |repeating_attacks_-MAXc30BIZUbdUb2jyMV_fullattack) | Sickle |repeating_attacks_-MAXcjdP6tus-kv54mvh_fullattack) | Sickle (Trip) |repeating_attacks_-MAXd5SqWmcWwh9arv4Z_fullattack) | Gauntlet |repeating_attacks_-MAXdTNod2Al650ckkm8_fullattack) | Light Crossbow |repeating_attacks_-MAXdbwSJpwl2-bVwdSy_fullattack) | Sling |repeating_attacks_-MAXeFWScGdskbpu7P-M_fullattack) | Bite (Grapple) |repeating_attacks_-MAYtRwMReJfKgdM1KPZ_fullattack) | Dagger |repeating_attacks_-MAYwiAsjbEcvvfqcjGS_fullattack) | Dagger (Thrown) |repeating_attacks_-MAYx1J2evyovoQZ8QU3_fullattack) This is the code: [code] !chatmenu @{selected|character_id} {template:pc}{{charname=@{selected|character_name}}} {{type=ability}} {{smallname=Attacks}} {{showchar=[1]}} {{descflag=1}} {{desc=CHATMENU}} --separator: | : --title:Attacks --repeating_attacks|atkname|fullattack [/code] Cany anyone tell me why it works for one and not the rest?
1594355088

Edited 1594355151
GiGs
Pro
Sheet Author
API Scripter
Do the characters it doesnt work for have any special characters in the names, like brackets, commas, colons? Anything that isnt a simple letter or number or space?
Awesome script!&nbsp; I'm using the D&amp;D 5e by Roll 20 template, and the Stylus tweak that Keith mentioned as well.&nbsp; I think my request is the same as Keith's here:&nbsp; <a href="https://app.roll20.net/forum/permalink/7657304/" rel="nofollow">https://app.roll20.net/forum/permalink/7657304/</a> &nbsp;- I currently have an Action Token macro that I modify for each NPC, and it would be awesome to just use the UCM instead.&nbsp; However, the listed actions only provide a button link to roll the action, but doesn't provide any info about the actions (such as range, tohit, onhit, etc.) My current macro: /w gm &amp;{template:npcaction} {{name=@{selected|npc_name}}} {{rname=Actions}} {{description=***[@{Selected|repeating_npcaction_$0_name}](~Selected|repeating_npcaction_$0_npc_action)*** *@{selected|repeating_npcaction_$0_attack_type} Weapon Attack:* @{selected|repeating_npcaction_$0_attack_tohitrange} *Hit:* @{selected|repeating_npcaction_$0_attack_onhit} ***[@{Selected|repeating_npcaction_$1_name}](~Selected|repeating_npcaction_$1_npc_action)*** *@{selected|repeating_npcaction_$1_attack_type} Weapon Attack:* @{selected|repeating_npcaction_$1_attack_tohitrange} *Hit:* @{selected|repeating_npcaction_$1_attack_onhit}}} And here is the macro I'm using for UCM: !chatmenu @{selected|character_id} {template:npcaction}{{rname=@{selected|npc_name} Actions &amp; Traits}}{{description=CHATMENU}} --separator: | : --title:Actions --repeating_npcaction|name|npc_action I'm trying to figure out how to get the UCM to output the info for each weapon, or if that's possible.&nbsp; I saw in your previous comment that it's possible to change the button output to be any of the attack roll fields (such as _attack_type) but it doesn't seem like I can get out an output of them under each named button.
Thank you.&nbsp; That was it.&nbsp; I was having difficulties reconciling character names with Discord names so I had put their Discord names in brackets.&nbsp; Changed that to just a dash and all is well.
One more request: the ability to add a carriage return as the separator. It seems that it's not possible to use &amp;#10; or &amp;#13; or &lt;br&gt; or /r. &nbsp; Looks like that would have to be something in the script itself. &nbsp;
If you have time, I have a request.&nbsp; Would it be possible to toggle buffs?&nbsp; I know there is a Chatsetattr api already but it looks like you need to know the name or ID of the buff in order to do that.&nbsp; I can use UCM to make a list of buffs but the ability to toggle is escaping me.
I'd like to contribute as well.&nbsp; Running Rise of the Runelords from here on Pathfinder and this is the NPC code it took to get goblins to use the UCM.&nbsp; I haven't tried anything with spells yet. !chatmenu @{selected|character_id} {template:pc}{{charname=@{selected|character_name}}} {{type=ability}} {{smallname=Attacks}} {{showchar=[1]}} {{descflag=1}} {{desc=CHATMENU}} --separator: | : --title:Melee Attacks --repeating_npcatk-melee|atkname|attack --title:Ranged Attacks --repeating_npcatk-ranged|atkname|attack
1594407915
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Dick Meatshield said: If you have time, I have a request.&nbsp; Would it be possible to toggle buffs?&nbsp; I know there is a Chatsetattr api already but it looks like you need to know the name or ID of the buff in order to do that.&nbsp; I can use UCM to make a list of buffs but the ability to toggle is escaping me. Not unless the sheet has toggling a buff as a built-in macro. Calling other macros is one of the upgrade requests.
1594407971
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Dick Meatshield said: I'd like to contribute as well.&nbsp; Running Rise of the Runelords from here on Pathfinder and this is the NPC code it took to get goblins to use the UCM.&nbsp; I haven't tried anything with spells yet. You should note which sheet this is for. There are a number of PF choices.
keithcurtis said: Dick Meatshield said: I'd like to contribute as well.&nbsp; Running Rise of the Runelords from here on Pathfinder and this is the NPC code it took to get goblins to use the UCM.&nbsp; I haven't tried anything with spells yet. You should note which sheet this is for. There are a number of PF choices. It's the sheet that comes with the package.&nbsp; It doesn't look like the other sheets which I realize will be useful to a very few, basically just those who bought it or possibly another package made by the same people.