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

Change avatar depending who is talking

In my last session, I was narrating 3 characters. Because of my poor ability to change voice they have problems with knowing who is talking which made some problems. So, I was thinking if there is any way to change the avatar on the button. One way is to change my character on the list but there are too many NPCs to choose and when I want to make a fast conversation it's not so easy. I am looking for some API or macro that I can clip characters and simply change avatar by clicking on the button. I don't want to show players with shift+z because if they will be taking notes on the roll, I will distribute them. I want to know if there is some API or tricks that help with that.
1660164849
Gold
Forum Champion
Good question! I hope there's an API "Mod" script to help with this. There is a standard roll20 chat command called /emas That's almost what you want, it's related, but not quite there.  Emas command works for the Text Chat to make it appear as that Character acting/typing. It's an easy way speak as Bob: /emas Bob Hello my name is bob Unfortunately this does not change your Avatar Display like the Speaking As drop-down box does. It'd be nice to have either a "Mod" Script (API), or a standard Roll20 button/macro/chat command that could do this.
1660165555
The Aaron
Roll20 Production Team
API Scripter
Here's one I wrote at some point.  Call it like this: !switch @{Bob the Slayer|character_id} and it will switch your speakingas setting to that character, and likewise your avatar image.  When you want to switch back to you, you can just call: !switch Code: on('ready',()=>{ on('chat:message',(msg)=>{ if('api' === msg.type && /^!switch/i.test(msg.content)){ let p = getObj('player',msg.playerid); if(p){ let a = msg.content.split(/\s+/); if(a.length>1) { let c = findObjs({ type: 'character', id: a[1] })[0]; if(c){ p.set({ speakingas:`character|${a[1]}` }); sendChat('',`/w "${p.get('displayname')}" Switching to <b>${c.get('name')}</b>.`); } else { sendChat('',`/w "${p.get('displayname')}" No character found for ID <b>${a[1]}</b>!`); } } else { p.set({ speakingas: '' }); sendChat('',`/w "${p.get('displayname')}" Switching to self.`); } } } }); });
1660165650
The Aaron
Roll20 Production Team
API Scripter
Original thread:&nbsp; <a href="https://app.roll20.net/forum/post/7565888/script-snippet-switch-swap-your-speaking-as-and-avatar-easily" rel="nofollow">https://app.roll20.net/forum/post/7565888/script-snippet-switch-swap-your-speaking-as-and-avatar-easily</a> Looks like there are some enhancements I talked about making, I should look at doing that...
1660186961
Gauss
Forum Champion
The Aaron said: Original thread:&nbsp; <a href="https://app.roll20.net/forum/post/7565888/script-snippet-switch-swap-your-speaking-as-and-avatar-easily" rel="nofollow">https://app.roll20.net/forum/post/7565888/script-snippet-switch-swap-your-speaking-as-and-avatar-easily</a> Looks like there are some enhancements I talked about making, I should look at doing that... You need to clone yourself first....maybe a half dozen of "The Aarons" will get everything you ever envision done, done.&nbsp;
1660187448
The Aaron
Roll20 Production Team
API Scripter
I mean, technically... =D
The Aaron said: Here's one I wrote at some point.&nbsp; Call it like this: !switch @{Bob the Slayer|character_id} and it will switch your speakingas setting to that character, and likewise your avatar image.&nbsp; When you want to switch back to you, you can just call: !switch Code: on('ready',()=&gt;{ on('chat:message',(msg)=&gt;{ if('api' === msg.type &amp;&amp; /^!switch/i.test(msg.content)){ let p = getObj('player',msg.playerid); if(p){ let a = msg.content.split(/\s+/); if(a.length&gt;1) { let c = findObjs({ type: 'character', id: a[1] })[0]; if(c){ p.set({ speakingas:`character|${a[1]}` }); sendChat('',`/w "${p.get('displayname')}" Switching to &lt;b&gt;${c.get('name')}&lt;/b&gt;.`); } else { sendChat('',`/w "${p.get('displayname')}" No character found for ID &lt;b&gt;${a[1]}&lt;/b&gt;!`); } } else { p.set({ speakingas: '' }); sendChat('',`/w "${p.get('displayname')}" Switching to self.`); } } } }); }); Thank you, a lot. That will be a lot of help!