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 Update] Ammo - Automated ammunition management script

1485324716

Edited 1486755471
The Aaron
Pro
API Scripter
Ammo Update v0.3.6 &nbsp;-- Made attribute lookups case insensitive. (Thanks Black Falcon!) Update v0.3.5 -- Added !wammo command which whispers the output instead of sending it to chat (Thanks Elena S.!) Update v0.3.4 -- Added resource name and indexed repeating row support (thanks Elena S.!) Commands !ammo &lt;character_id&gt; &lt;attribute name&gt; &lt;amount&gt; [resource name] character_id -- Usually gotten with @{character_id} while in the character sheet, or could be hard coded, or used with @{selected} attribute name -- This is the name of the attribute, no @{ }. amount -- usually -1, for using one charge. &nbsp;Can use inline rolls or roll queries to determine it. resource name -- Anything else on the command line is used as the name of the resource. &nbsp;Omitting it will use "ammo" instead. !wammo &lt;character_id&gt; &lt;attribute name&gt; &lt;amount&gt; [resource name] Identical to !ammo, but whispers output Examples Use one resource from the attribute arrows: !ammo @{character_id} arrows -1 The same thing, but call it an arrow: !ammo @{character_id} arrows -1 arrow Recover an arrow: !ammo @{character_id} arrows 1 arrow Multi-word resource types are also usable: !ammo @{character_id} special_magic -3 Vince's mythical flying cat rocket Inline rolls work: !ammo @{character_id} variable_stuff -[[1d3]] variable shot Now with support for repeating rows via index: !ammo @{character_id} repeating_weapons_$3_weapon_ammo -1 @{repeating_weapons_$3_weapon_ammo_name} Show the help !ammo --help GitHub:&nbsp; <a href="https://github.com/shdwjk/Roll20API/blob/master/Am" rel="nofollow">https://github.com/shdwjk/Roll20API/blob/master/Am</a>... Old Thread: <a href="https://app.roll20.net/forum/permalink/1034829/" rel="nofollow">https://app.roll20.net/forum/permalink/1034829/</a> Support my work on If you use my scripts, want to contribute, and have the spare bucks to do so , go right ahead. However, please don't feel like you must contribute just to use them! I'd much rather have happy Roll20 users armed with my scripts than people not using them out of some sense of shame. Use them and be happy, completely guilt-free! Disclaimer: This Patreon campaign is not affiliated with Roll20; as such, contributions are voluntary and Roll20 cannot provide support or refunds for contributions.
1485337191
Andrew C
Marketplace Creator
1485352320
The Aaron
Pro
API Scripter
Hehehehehe.&nbsp;
Love it! :D
Question/Request Could you add a config option to this so we can set whether the messages are broadcast or whispered only to the player initiating the script?
1485385231
The Aaron
Pro
API Scripter
hmm... probably... =D
1485388902
The Aaron
Pro
API Scripter
Update v0.3.5 -- Added !wammo command which whispers the output instead of sending it to chat (Thanks Elena S.!)
coolness! One of my players brought this up, wondering why he seemed to have omniscient knowledge of how much ammo was in everyone else's quivers Very nice to have the option! Thank You!
1485411203
The Aaron
Pro
API Scripter
no worries. =D
!ammo @{character_id} special_magic -3 Vince's mythical flying cat rocket Any way you could add in a quick check for multiple uses of ammo and pluralize the output? So it would say ... rockets instead of rocket?
1485412724
The Aaron
Pro
API Scripter
I thought about it. The major problem is that it isn't always as simple as adding an s. &nbsp;Some words being their own plural, others adding es &nbsp;or even changing entirely. &nbsp;It might be better to change the structure of the messages to only use the singular form. &nbsp;hmm...
1485413004

Edited 1485413279
vÍnce
Pro
Sheet Author
(click me, I'm animated!)
1485413291
The Aaron
Pro
API Scripter
That is awesome. =D
1485414066

Edited 1485414117
Andrew C
Marketplace Creator
Make "ammo" the final noun and other stuff adnouns ((Name)) used/fired ((count)) ((munition singular)) ammo from the ((weapon descriptor)) "Jimbo fired 4 bolt ammo from the fully automatic demonic crossbow of hamsters"
Maybe I missed it, but is there a way to reset ammo counts to their max value with one command? I have created a macro&nbsp;with a roll query that&nbsp;prompts for "how many arrows did you recover?" but I was looking to use this for X uses per day special abilities and it would be nice to have a sheet button or macro that could reset daily ability counts with one click. Thanks again, TheAaron!
1485441123
The Aaron
Pro
API Scripter
There isn't a special way built in, but you can do: !ammo @{character_id} stuff [[ @{stuff|max}-@{stuff} ]]
1485442065
Ziechael
Forum Champion
Sheet Author
API Scripter
Very exciting to try this but haven't the time so i'll throw this out here instead. Will: !ammo @{character_id} repeating_weapons_$3_weapon_ammo -1 Work as: !ammo @{character_id} repeating_weapons_$?{Ammo|0}_weapon_ammo -1 I have a complicated ranged attack macro that allows my players to select which row of a repeating section they take their ammo information from and it would be awesome to automate the ammo change :)
1485442277
The Aaron
Pro
API Scripter
Yes, because at the point it's passed the the API, the Roll Query will have been resolved and only its result will remain. =D
1485444146
Ziechael
Forum Champion
Sheet Author
API Scripter
Thought as much... CAN'T WAIT to roll this out, especially since i've just completed my combat system overhaul :) Thank you!!
The Aaron said: There isn't a special way built in, but you can do: !ammo @{character_id} stuff [[ @{stuff|max}-@{stuff} ]] Still seems pretty special to me. :-) Thanks for the logic!
1485448356
The Aaron
Pro
API Scripter
No worries. =D
1485449826
Ziechael
Forum Champion
Sheet Author
API Scripter
Rabulias said: reset daily ability counts with one click. *sigh* now I simply HAVE to have this in my game too...
Looking through the script trying to understand more how it all works. What do lines 52-53 and 60-61 do? I don't see them in the output in chat, either for a player or GM.
Ziechael said: I have a complicated ranged attack macro that allows my players to select which row of a repeating section they take their ammo information from and it would be awesome to automate the ammo change :) Sounds cool. I would be interested in seeing this!
1485454876
The Aaron
Pro
API Scripter
Which version are you looking at? &nbsp; My 52-53 are in the middle of the message you get when you try to take the total of the ammo below 0. &nbsp; !ammo @{selected|character_id} ammoattr -100000 My 60-61 are in the middle of the message that you get if you try to take the total above the max for the attribute. !ammo @{selected|character_id ammoattr 100000
1485455421

Edited 1485456199
Sorry for the confusion. I am looking at version 0.3.5 on GitHub and referring to line numbers there Lines 52 -53 are: '&lt;span style="font-weight:normal;color:#708090;&gt;'+ch('[')+'Attribute: '+attr.get('name')+ch(']')+'&lt;/span&gt;', who Looks like it was intended to display the name of the character ammo again at the end of the chat message?
1485455831
The Aaron
Pro
API Scripter
Funny! &nbsp;Looks like a bug I introduced in March last year, possibly earlier. &nbsp;It's missing the closing quote on the style tag, so would just get eaten by the html parser. &nbsp;Wonder if people want that displayed. &nbsp;The who parameter just tells it who to whisper to or to show it public if it's blank. Change it to : '&lt;span style="font-weight:normal;color:#708090; " &gt;'+ch('[')+'Attribute: '+attr.get('name')+ch(']')+'&lt;/span&gt;', who
1485523155
Ziechael
Forum Champion
Sheet Author
API Scripter
Rabulias said: Ziechael said: I have a complicated ranged attack macro that allows my players to select which row of a repeating section they take their ammo information from and it would be awesome to automate the ammo change :) Sounds cool. I would be interested in seeing this! Don't say I didn't warn you! Note: Requires Powercards script, Ammo script, my very basic sound playing script and my customised (improved, to me anyway, inventory management with repeating sections for consumable/ammunition and slotted item list) version of Diana's 3.5e character sheet ;) Also bear in mind that the forums will eat the html replacements... !power {{ --format|attack --emote|@{selected|token_name} attacks @{target|token_name} --charid|@{selected|character_id} --name|@{selected|weapon2name} --leftsub|@{selected|weapon7type} --rightsub|Crit: x@{selected|weapon2critmult} --hroll|[[ [$ammo] ?{Ammo Type?|@{selected|repeating_ammunition_$0_ammoname},0|@{selected|repeating_ammunition_$1_ammoname},1|@{selected|repeating_ammunition_$2_ammoname},2|@{selected|repeating_ammunition_$3_ammoname},3|@{selected|repeating_ammunition_$4_ammoname},4|@{selected|repeating_ammunition_$5_ammoname},5|@{selected|repeating_ammunition_$6_ammoname},6} + 0d0]] --?? $ammo.base == 0 ?? !ammo0|**Ammunition used:** @{selected|repeating_ammunition_$0_ammoname} ^^ **Notes:** @{selected|repeating_ammunition_$0_ammonotes} --?? $ammo.base == 1 ?? !ammo1|**Ammunition used:** @{selected|repeating_ammunition_$1_ammoname} ^^ **Notes:** @{selected|repeating_ammunition_$1_ammonotes} --?? $ammo.base == 2 ?? !ammo2|**Ammunition used:** @{selected|repeating_ammunition_$2_ammoname} ^^ **Notes:** @{selected|repeating_ammunition_$2_ammonotes} --?? $ammo.base == 3 ?? !ammo3|**Ammunition used:** @{selected|repeating_ammunition_$3_ammoname} ^^ **Notes:** @{selected|repeating_ammunition_$3_ammonotes} --?? $ammo.base == 4 ?? !ammo4|**Ammunition used:** @{selected|repeating_ammunition_$4_ammoname} ^^ **Notes:** @{selected|repeating_ammunition_$4_ammonotes} --?? $ammo.base == 5 ?? !ammo5|**Ammunition used:** @{selected|repeating_ammunition_$5_ammoname} ^^ **Notes:** @{selected|repeating_ammunition_$5_ammonotes} --?? $ammo.base == 6 ?? !ammo6|**Ammunition used:** @{selected|repeating_ammunition_$6_ammoname} ^^ **Notes:** @{selected|repeating_ammunition_$6_ammonotes} ?{Attack Type?| Standard, --Standard Attack:&#124;[[ [$att] 1d20 + @{selected|bab} + @{selected|size} + @{selected|weapon2stat} + @{selected|weapon2enh} + @{selected|bar3} + @{selected|weapon2focus} + @{Buff|attbuff} ]] vs [[ [$tac] @{target|armorclass} +0d0 ]] AC --?? $att.base == 1 ?? !fumble&#124;[[ 1t[misstable] ]] ^^ **Fumble Check:** [[ [$fbl] 1d20 ]] --?? $att.base == 1 AND $fbl.base == 1 ?? !fumbled&#124;[[ 1t[Fumble] ]] --?? $att.base &lt;&gt; 1 AND $att.total &lt; $tac.total ?? !miss&#124;[[ 1t[misstable] ]] --?? $att.base &lt;&gt; 1 AND $att.total &gt;= $tac.total OR $att.base == 20 ?? !hit&#124;[[ 1t[hittable] ]] ^^ [[ 1@{selected|weapon2damage} + @{selected|bar2} + @{selected|weapon2damagestat} + @{selected|weapon2enh} + @{selected|weapon2specialize} + @{Buff|dambuff} ]] @{selected|weapon2type} damage! --?? $att.base &gt;= @{selected|weapon2critmin} ?? Critical Threat:&#124; [[ [$crit] 1d20 + @{selected|bab} + @{selected|bar3} + @{selected|size} + @{selected|weapon2stat} + @{selected|weapon2enh} + @{selected|weapon2focus} + @{Buff|attbuff} ]] --?? $att.base &gt;= @{selected|weapon2critmin} AND $crit.total &gt;= $tac.total ?? Critical Hit:&#124;Additional [[ [[ @{selected|weapon2critmult} -1 ]]@{selected|weapon2damage} ]] @{selected|weapon2type} damage! | BAB2, --BAB2:&#124;[[ [$att] 1d20 + @{selected|bab2} + @{selected|size} + @{selected|weapon2stat} + @{selected|weapon2enh} + @{selected|bar3} + @{selected|weapon2focus} + @{Buff|attbuff} ]] vs [[ [$tac] @{target|armorclass} +0d0 ]] AC --?? $att.base == 1 ?? !fumble&#124;[[ 1t[misstable] ]] ^^ **Fumble Check:** [[ [$fbl] 1d20 ]] --?? $att.base == 1 AND $fbl.base == 1 ?? !fumbled&#124;[[ 1t[Fumble] ]] --?? $att.base &lt;&gt; 1 AND $att.total &lt; $tac.total ?? !miss&#124;[[ 1t[misstable] ]] --?? $att.base &lt;&gt; 1 AND $att.total &gt;= $tac.total OR $att.base == 20 ?? !hit&#124;[[ 1t[hittable] ]] ^^ [[ 1@{selected|weapon2damage} + @{selected|weapon2damagestat} + @{selected|weapon2enh} + @{selected|bar2} + @{selected|weapon2specialize} + @{Buff|dambuff} ]] @{selected|weapon2type} damage! --?? $att.base &gt;= @{selected|weapon2critmin} ?? Critical Threat:&#124; [[ [$crit] 1d20 + @{selected|bab2} + @{selected|size} + @{selected|weapon2stat} + @{selected|weapon2enh} + @{selected|bar3} + @{selected|weapon2focus} + @{Buff|attbuff} ]] --?? $att.base &gt;= @{selected|weapon2critmin} AND $crit.total &gt;= $tac.total ?? Critical Hit:&#124;Additional [[ [[ @{selected|weapon2critmult} -1 ]]@{selected|weapon2damage} ]] @{selected|weapon2type} damage! | Sneak Attack, --Sneak Attack:&#124;[[ [$att] 1d20 + @{selected|bab} + @{selected|bar3} + @{selected|size} + @{selected|weapon2stat} + @{selected|weapon2enh} + @{selected|weapon2focus} + @{Buff|attbuff} ]] vs [[ [$tac] @{target|armorclass} +0d0 ]] AC --?? $att.base == 1 ?? !fumble&#124;[[ 1t[misstable] ]] ^^ **Fumble Check:** [[ [$fbl] 1d20 ]] --?? $att.base == 1 AND $fbl.base == 1 ?? !fumbled&#124;[[ 1t[Fumble] ]] --?? $att.base &lt;&gt; 1 AND $att.total &lt; $tac.total ?? !miss&#124;[[ 1t[misstable] ]] --?? $att.base &lt;&gt; 1 AND $att.total &gt;= $tac.total OR $att.base == 20 ?? !hit&#124;[[ 1t[hittable] ]] ^^ [[ 1@{selected|weapon2damage} + @{selected|bar2} + @{selected|weapon2damagestat} + @{selected|weapon2enh} + @{selected|weapon2specialize} + @{Buff|dambuff} + [[ ceil(@{selected|level}/2) ]]d6 ]] @{selected|weapon2type} damage! --?? $att.base &gt;= @{selected|weapon2critmin} ?? Critical Threat:&#124; [[ [$crit] 1d20 + @{selected|bab} + @{selected|bar3} + @{selected|size} + @{selected|weapon2stat} + @{selected|weapon2enh} + @{selected|weapon2focus} + @{Buff|attbuff} ]] --?? $att.base &gt;= @{selected|weapon2critmin} AND $crit.total &gt;= $tac.total ?? Critical Hit:&#124;Additional [[ [[ @{selected|weapon2critmult} -1 ]]@{selected|weapon2damage} ]] @{selected|weapon2type} damage! } --Notes|@{selected|weapon2specialproperties} }} !power --name|SR: @{target|spellresistance} DR: @{target|damagereduction} --whisper|GM !playsound Arrow !ammo @{selected|token_id} repeating_ammunition_$?{Ammo Type?}_ammoquantity -1
1485526847
The Aaron
Pro
API Scripter
Woot!
How would I make the Ammo script send the chat message from the Player instead of from "Ammo"? I tried editing the sendchat command (line 34) to use who instead of 'Ammo', but it crashes when I try to use it.
1485726779

Edited 1485726938
The Aaron
Pro
API Scripter
Hmmm. That should work. I'll see about adding that as an option.&nbsp;
The Aaron said: I thought about it. The major problem is that it isn't always as simple as adding an s. &nbsp;Some words being their own plural, others adding es &nbsp;or even changing entirely. &nbsp;It might be better to change the structure of the messages to only use the singular form. &nbsp;hmm... How about a delimiter that lets you specify both the singular and the plural? For instance, suppose the delimiter is ^ !ammo &lt;id&gt; &lt;attribute&gt; &lt;amount&gt; [resource name[^resource name plural]]
1485808803
The Aaron
Pro
API Scripter
Yeah, I was thinking about using that. Would probably use | (pipe) as it is a bit more of a standard in Roll20 stuff.&nbsp;
1485810610
Jakob
Sheet Author
API Scripter
The Aaron said: Yeah, I was thinking about using that. Would probably use | (pipe) as it is a bit more of a standard in Roll20 stuff.&nbsp; What you are not saying about it is that you're probably the one who made it standard :D.
1485811912
Scott C.
Forum Champion
Sheet Author
API Scripter
Compendium Curator
Jakob said: The Aaron said: Yeah, I was thinking about using that. Would probably use | (pipe) as it is a bit more of a standard in Roll20 stuff.&nbsp; What you are not saying about it is that you're probably the one who made it standard :D. Heh, my thought when I saw this as well.
1485812053
vÍnce
Pro
Sheet Author
Everyone else is a poser... ;-p
1485812411
The Aaron
Pro
API Scripter
Actually, I drew my command line style for Roll20 from HoneyBadger. :)
1485823085
vÍnce
Pro
Sheet Author
The Aaron said: Actually, I drew my command line style for Roll20 from HoneyBadger. :) HB. &nbsp;That's whom I'm speaking of. "You're so vain... You probably think this song is about you, don't you, don't you?" ;-P
1486755480
The Aaron
Pro
API Scripter
Update v0.3.6 -- Made attribute lookups case insensitive. (Thanks Black Falcon!)
1487218242

Edited 1487218285
John D.
Sheet Author
API Scripter
Hi Aaron, I'm now trying to implement your ammo script in my Dark Heresy sheet The sheet has a repeating Ranged Weapon field with a repeating attribute @{rangedweaponclip} for total ammo in the&nbsp;clip ,&nbsp;@{rangedweaponsemi} for ammo use in Semi-Auto shots,&nbsp;@{rangedweaponfull} for Full Auto shots I tried to add this line in the hit button so when my players roll for hit the amount in that field automatically reduce depend on the fire mode: !ammo @{character_id} rangedweaponclip (?{RoF | Single,-1| Semi-Auto,@{rangedweaponsemi}|Full Auto,@{rangedweaponfull}}) but the game say&nbsp; Attribute [rangedweaponclip] was not found. Please verify that you have the right name. I assume it's because it's a repeating attribute? Please help.
1487219379

Edited 1487219516
When you reference repeating attributes outside the repeating section, you need to include the name of the repeating section as well as an identifier for the specific instance of the repeating section. Assuming the repeating section is named "repeating_weapon" you should use something like @{repeating_weapon_$2_rangedweaponclip} or @{repeating_weapon_$4_rangedweaponsemi}. The numbers in the above examples ($2 and $4) refer to the Row Indexes of the repeating sections. Row Indexes start with $0, so the above indicate the third and fifth items in the repeating section. Hope this helps.
1487219729

Edited 1487219893
John D.
Sheet Author
API Scripter
Thanks for quick reply Rabulias, how do I reference repeating attributes&nbsp; inside the repeating section then? The code was meant to each @{rangedweaponclip} in each&nbsp;repeating section anyway.
Within the repeating section you can use @{AttributeName} (so @{rangedweaponclip}), but the API may execute outside the sheet and outside the repeating section, if I understand things correctly. Try this and see if it works in your sheet: !ammo @{character_id} @{rangedweaponclip} (?{RoF | Single,-1|Semi-Auto,@{rangedweaponsemi}|Full Auto,@{rangedweaponfull}})
1487221881
The Aaron
Pro
API Scripter
So, assuming you have a repeating section named Weapons, and you want to use the clip in the 2nd row, it would look like this: !ammo @{character_id} repeating_Weapons_$2_rangedweaponclip ?{RoF | Single,-1|Semi-Auto,@{rangedweaponsemi}|Full Auto,@{rangedweaponfull}}
From my brief experimentation, I don't think what I suggested for you will work in a sheet. The attribute values are parsed and replaced before it gets sent to the chat. So, if your rangedweaponclip is 20, it is sending that value, and the API tries to find an attribute named "20". We need to pass the unprocessed, literal name of the attribute to the chat so the API can evaluate it. I don't know of a way to do that, but I hope there is a way to do so.
1487225300
John D.
Sheet Author
API Scripter
The Aaron said: So, assuming you have a repeating section named Weapons, and you want to use the clip in the 2nd row, it would look like this: !ammo @{character_id} repeating_Weapons_$2_rangedweaponclip ?{RoF | Single,-1|Semi-Auto,@{rangedweaponsemi}|Full Auto,@{rangedweaponfull}} yes this does work but this mean i have to add a macro or something for the players, is there a way to add the API in the repeating section button so that it can reference its own section value? Rabulias said: We need to pass the unprocessed, literal name of the attribute to the chat so the API can evaluate it. I don't know of a way to do that, but I hope there is a way to do so. my point exactly
1487226590
The Aaron
Pro
API Scripter
AH, I see. I had this same discussion with Black Falcon. &nbsp;The best option we came up with was to write a Sheet Worker that would populate a hidden attribute in the row with a rowid, then use that attribute in your command and let locality of reference expand the attribute for you: !ammo @{character_id} repeating_Weapon_@{my_hidden_row_id}_rangedweaponclip ?{RoF | Single,-1|Semi-Auto,@{rangedweaponsemi}|Full Auto,@{rangedweaponfull}} In the above, the @{my_hidden_row_id} would be the attr_my_hidden_row_id field in the repeating row that is filled with row id by a sheet worker.
1487229365

Edited 1487229559
John D.
Sheet Author
API Scripter
Somehow I'm learning more about coding than when I was still in school I digging the wiki page for Sheet Worker, is this what you mean: on("change:repeating_rangedweapons", function() { getSectionIDs("repeating_rangedweapons", function(idarray) { for(var i=0; i &lt; idarray.length; i++) { //Do something with the IDs } }); }); So I add this somewhere in the Character Sheet HTML, then change the command in the button to !ammo @{character_id} repeating_rangedweapons_@{my_hidden_row_id}_rangedweaponclip ?{RoF | Single,-1|Semi-Auto,@{rangedweaponsemi}|Full Auto,@{rangedweaponfull}} ?&nbsp;Sorry but you'd have to walk me step by step here, I'm new at this
1487230840
The Aaron
Pro
API Scripter
That's the gist of it. The repeating row would need an attribute something like this (my character sheet-fu is a bit rusty): &lt;input type="text" style="display:hidden" name="attr_my_hidden_row_id" /&gt; Then sheet workers would be something like this: on("change:repeating_rangedweapons", function() { getSectionIDs("repeating_rangedweapons", function(idarray) { let setOps={}; for(var i=0; i &lt; idarray.length; i++) { setOps['repeating_rangedweapons_'+idarray[i]+'_my_hidden_row_id']=idarray[i]; } setAttrs(setOps); }); }); Then this ought to work: !ammo @{character_id} repeating_rangedweapons_@{my_hidden_row_id}_rangedweaponclip ?{RoF | Single,-1|Semi-Auto,@{rangedweaponsemi}|Full Auto,@{rangedweaponfull}}
1487233406
John D.
Sheet Author
API Scripter
So I added &lt;input type="text" style="display:hidden" name="attr_my_hidden_row_id" /&gt; &lt;script type="text/worker"&gt; on("change:repeating_rangedweapons", function() { getSectionIDs("repeating_rangedweapons", function(idarray) { let setOps={}; for(var i=0; i &lt; idarray.length; i++) { setOps['repeating_rangedweapons_'+idarray[i]+'_my_hidden_row_id']=idarray[i]; } setAttrs(setOps); }); }); &lt;/script&gt; To the top of the HTML and added to the roll button !ammo @{character_id} repeating_rangedweapons_@{my_hidden_row_id}_rangedweaponclip ?{RoF | Single,-1|Semi-Auto,@{rangedweaponsemi}|Full Auto,@{rangedweaponfull}} Still it say&nbsp; Attribute [repeating_rangedweapons__rangedweaponclip] was not found. Please verify that you have the right name What did I do wrong here? is it the position or the order of the script?
1487233840
The Aaron
Pro
API Scripter
The attr_my_hidden_row_id part needs to go in the repeating section.&nbsp;