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

Making small creature tokens for Roll20

I was trying to find a way to make a token for a small creature (ie Goblin) but each time I tried changing the token from 70 x 70 to 35 x 35 the token would show in the upper left corner.  So I found a way to make your token to show the image right in the center.  I used GIMP 2.0 to do the image editing. 1. Open GIMP, then create a new canvas and set the dimensions to 141 x 139.  The reason I set this is because when you zoom in on Roll20 to 200% this is the size of the token. 2. Open the image you want to use for your small creature token. 3. Go up to IMAGE - SCALE IMAGE, under the section IMAGE SIZE you will want to click on the chain next to the width and height so they don't link.  Then change the width to 71 and the height to 70.  Click on SCALE button. 4. Copy the image that you just scaled then paste it into your new canvas.  When you paste the image it should automatically show up in the middle.  Save your image. 5. Then go to FILE - EXPORT AS, this will allow you to save the image as a png or jpg.  I'd recommend leaving it as a png.  Then upload your image into Roll20. I thought I would share what I found, if you have an easier way than this I would like to hear about it.
You can also alt-drag a token, then it doesn't "snap" to the grid.
1485101180
Ziechael
Forum Champion
Sheet Author
API Scripter
Aaron also has a script that centres small than a single unit tokens... but your solution is a great way to do that without needing the API or having to alt-move tokens... Thanks for sharing!! :)
I went through all of the Free tokens from Devin and fixed the sizes for the small creatures, the tiny ones too i.e. cat. You want to keep your canvas size square though because Roll20 defaults them to one square and it will skew if you have the token image at less than square. I found most of the free images are not square either, so I took the time fixed them all. Unfortunately to use them you have to drag them into your game and use your MB quota, but at least they are square and take up the right amount of space. 
1485103636
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Ziechael said: Aaron also has a script that centres small than a single unit tokens... but your solution is a great way to do that without needing the API or having to alt-move tokens... Thanks for sharing!! :) You have a link for that?
keithcurtis said: Ziechael said: Aaron also has a script that centres small than a single unit tokens... but your solution is a great way to do that without needing the API or having to alt-move tokens... Thanks for sharing!! :) You have a link for that? I found one snippet that TheAaron posted a while ago. Not sure if it does what I think it does - didn't try it out yet. <a href="https://app.roll20.net/forum/post/4142802/token-scaling-not-universal" rel="nofollow">https://app.roll20.net/forum/post/4142802/token-scaling-not-universal</a>
1485108452

Edited 1485151693
Ziechael
Forum Champion
Sheet Author
API Scripter
keithcurtis said: Ziechael said: Aaron also has a script that centres small than a single unit tokens... but your solution is a great way to do that without needing the API or having to alt-move tokens... Thanks for sharing!! :) You have a link for that? It was more a code snippet from a bunch of them that Vince posted a while back (I think) too poorly to hunt it down specifically but here is the full code for it: (stupid editor won't let me put it in a code block lol ( The Aaron to the rescue! ) ) on('ready', function(){ &nbsp; &nbsp; "use strict"; &nbsp; &nbsp; on('change:graphic',function(obj,prev){ &nbsp; &nbsp; &nbsp; &nbsp; if( ( _.contains(['gmlayer','objects'],obj.get('layer')) ) && &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ( !obj.get('isdrawing') ) && &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ( obj.get('left') !== prev.left || obj.get('top') !== prev.top) && &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ( obj.get('width') &lt; 70 || obj.get('height') &lt; 70) ){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj.set( { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; left: obj.get('left')+35-(obj.get('width')/2), &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; top: &nbsp;obj.get('top')+35-(obj.get('height')/2) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }); &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; }); });
1485114464
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Thanks! I just tried it out. It certainly works as advertised, but now that I actually see how that would function in play, I think it would be less annoying to alt-drag. Sometimes I want that fine placement.
1485152929
The Aaron
Pro
API Scripter
I could probably make a version that would only center if the position was perfectly at the top left... on('ready', function(){ &nbsp; &nbsp; "use strict"; &nbsp; &nbsp; const precise = true, &nbsp; &nbsp; &nbsp; &nbsp; sigma=1; &nbsp; &nbsp; on('change:graphic',function(obj,prev){ &nbsp; &nbsp; &nbsp; &nbsp; if( ( _.contains(['gmlayer','objects'],obj.get('layer')) ) && &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ( !obj.get('isdrawing') ) && &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ( obj.get('left') !== prev.left || obj.get('top') !== prev.top) && &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ( obj.get('width') &lt; 70 || obj.get('height') &lt; 70) ){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let w=obj.get('width'), &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h=obj.get('height'), &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t=obj.get('top')-(h/2), &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; l=obj.get('left')-(w/2); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( !precise || ((t%70)&lt;=sigma && (l%70)&lt;=sigma) ){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj.set( { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; left: obj.get('left')+35-(obj.get('width')/2), &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; top: &nbsp;obj.get('top')+35-(obj.get('height')/2) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; }); });
1485166684

Edited 1485166760
Andrew C
Marketplace Creator
There is a simple solution as well... you make the 'grid' suit Small Tokens and then make your Medium Tokens double-dimensions. &nbsp;Then you don't need the API solution... if you dont' want to use it. Have a map with 'grids' printed on it (optional), and then you edit your map settings. To do the following: (Shameless plug, this is the module I have on the MP used as the example)