DICE PACKS BUNDLE
Page 1 of 2 12 Last
  1. #1

    Custom Character Sheet help...

    I'm going to be using FG to run several non-d20 games in the future. I'm attempting to create some custom character sheets but i have no idea where to start.

    I can handle the graphics themselve with no problem. I just have no clue where to start. I've only played with XML on a occasion (I am a quick learn and am fairly intelligent when it comes to these things, however).

    I guess I'm just looking for a guiding hand to get me started in the right direction.

  2. #2
    Look in the charsheet.xml file. See how they map a pixel by pixel square. Basically yuou are going to have to map out the 'box' locations on your new charsheet pixel by pixel. For smaller sheets this is not a big deal but if you are listing a ton of skills and whatnot be ready for a few nights of mindnumbing pain.

    For a 4 sheet character sheet I wrote close to 3000 lines of xml but it was well worth it.
    Play? Yes DM? Yes Days: Sa Time: 9pm ESTGames:Starwars

  3. #3
    Quote Originally Posted by SalmonElla
    Look in the charsheet.xml file. See how they map a pixel by pixel square. Basically yuou are going to have to map out the 'box' locations on your new charsheet pixel by pixel. For smaller sheets this is not a big deal but if you are listing a ton of skills and whatnot be ready for a few nights of mindnumbing pain.

    For a 4 sheet character sheet I wrote close to 3000 lines of xml but it was well worth it.
    any pointers or guides on how to map them out?

  4. #4

    Mapping out a square

    Mapping out a square:
    You will need to find the upper leftmost corner of the quare you are mapping out. Lets call it 98,160. Count pixels right until you get to the upper right corner, lets call it 16 pixels. Count down until you find the bottom right corner, lets call it 12.

    For a stat block, Dexterity, it would be:
    Code:
    - <numbercontrol name="dexterity">
      <bounds rect="98,160,16,12" /> 
      <nodrag /> 
      <nodrop /> 
      <noreset /> 
      <description text="Dexterity" /> 
      <limits minimum="0" maximum="30" /> 
      <tabtarget next="constitution" prev="strength" /> 
      </numbercontrol>
    Play? Yes DM? Yes Days: Sa Time: 9pm ESTGames:Starwars

  5. #5
    Here's a few quick things to get you started at least. It's far from a complete guide but at least I hope it tells you what to look for:

    First of all, the images that is in the background of the sheet needs to be defined as a frame. Using the d20-rulesystem as an example we first take a look at the d20_graphics.xml and look at the following entry:

    Code:
    	<framedef name="charsheet_main">
    		<bitmap file="rulesets\d20\frames\charsheet_main.png" />
    		<topleft rect="0,0,0,0" />
    		<top rect="0,0,0,0" />
    		<topright rect="0,0,0,0" />
    		<left rect="0,0,0,0" />
    		<middle rect="0,0,550,685" />
    		<right rect="0,0,0,0" />
    		<bottomleft rect="0,0,0,0" />
    		<bottom rect="0,0,0,0" />
    		<bottomright rect="0,0,0,0" />
    	</framedef>
    Here we define that the frame is called charsheet_main. This is the name we are going to use later on when we define how this page is giong to look. We also define the path to the image file. Last of all, we define what parts of the image is going to be used for the different parts of the character sheet. In this case we don't need a sheet that is resizable so that is why we only need to use the 'middle rect' since this makes up the entire sheet and it starts at pixel coordinate 0,0 and it is 550 pixels wide and 685 pixels high.

    After we have defined all the frames in the character sheet we could go on to define what should be on them. If you open the charsheet.xml you'll see the following:

    Code:
    <root>
    	<windowclass name="charsheet_main">
    		<frame name="charsheet_main" />
    		<datasource name="charsheet" />
    		<defaultsize width="550" height="685" />
    		<sheetdata>
    			<numbercontrol name="strength">
    				<bounds rect="73,189,34,23" />
    				<nodrag />
    				<nodrop />
    				<noreset />
    				<description text="Strength" />
    				<limits minimum="0" maximum="30" />
    				<tabtarget next="dexterity" prev="appearance" />
    			</numbercontrol>
    			...
    The root-entry must be present at the start of all XML-files and must be closed at the end. Then comes the definition of the first page of the character sheet. You'll notice that the frame used is the same as defined in the graphics above. For convenience the windowclass name is the same. The datasource name is under what node-name the characters will be stored in the campaign and could be left as it is.

    Under sheetdata comes the field definitions. I've only included one field here, strength. The field is a numbercontrol which means that it stores integer values. The name-value is an identifier of your own choosing. You'll see that there is a definition that shows where this field is located on the image. First comes the starting coordinates. This could be found with any good image editor. Here's a screenshot from The GIMP for instance:



    (The screenshot doesn't show the pointer, but I'm holding it in the top left corner of the rectangle that should be used for the strength-value.)

    The area marked with the red rectangle shows the coordinates that should be used in the definition. Then comes the width and height of the field and this could be found by using the selection tool:



    Here I have selected the rectangle that should be used for the strength-value. As you can see these number corresponds to the values entered in the bounds-definition.

    Apart from numbercontrols there's also stringcontrols that stores strings rather than integers. There's also the multistatecontrol, but start out with strings and numbers.

    The individual pages of the character sheet must be closed with:

    Code:
    		</sheetdata>
    	</windowclass>
    Hopefully, this will at least get you started, but ask if you have any questions.

  6. #6
    Wow, Crusader. That is very helpful. Thank you.

    I'm also going to end up need to do something similar to what the guy who did the Adventure! (White Wolf) character sheet did and have boxes that can be checked and unchecked. Would I need to learn the multistate functions to do that? Any tips there?

  7. #7
    Quote Originally Posted by Grymn
    I'm also going to end up need to do something similar to what the guy who did the Adventure! (White Wolf) character sheet did and have boxes that can be checked and unchecked. Would I need to learn the multistate functions to do that? Any tips there?
    It is very easy, see the sample below I used for armor selection (this would go in your charsheet.xml file:
    Code:
    			<multistate name="armor">
    			<bounds rect="339,127,120,20" />
    			<state value="0" icon="Blank" />
    			<state value="1" icon="Leather" />
    			<state value="2" icon="Padded" />
    			<state value="3" icon="StuddedLeather" />
    			<state value="4" icon="RingMail" />
    			<state value="5" icon="ScaleMail" />
    			<state value="6" icon="ChainMail" />
    			<state value="7" icon="ElfinChain" />
    			<state value="8" icon="SplintMail" />
    			<state value="9" icon="BandedMail" />
    			<state value="10" icon="BronzePlateMail" />
    			<state value="11" icon="PlateMail" />
    			<state value="12" icon="FieldPlateMail" />
    			<state value="13" icon="FullPlateMail" />
    			</multistate>
    Then in the graphics.xml file put the path where the graphics for this is located:
    Code:
    	<icon name="Blank" file = "rulesets/AD&D_UA/icons/Blank.png" />
    	<icon name="Leather" file = "rulesets/AD&D_UA/icons/Leather.png" />
    	<icon name="Padded" file = "rulesets/AD&D_UA/icons/Padded.png" />
    	<icon name="StuddedLeather" file = "rulesets/AD&D_UA/icons/StuddedLeather.png" />
    	<icon name="RingMail" file = "rulesets/AD&D_UA/icons/RingMail.png" />
    	<icon name="ScaleMail" file = "rulesets/AD&D_UA/icons/ScaleMail.png" />
    	<icon name="ChainMail" file = "rulesets/AD&D_UA/icons/ChainMail.png" />
    	<icon name="ElfinChain" file = "rulesets/AD&D_UA/icons/ElfinChain.png" />
    	<icon name="SplintMail" file = "rulesets/AD&D_UA/icons/SplintMail.png" />
    	<icon name="BandedMail" file = "rulesets/AD&D_UA/icons/BandedMail.png" />
    	<icon name="BronzePlateMail" file = "rulesets/AD&D_UA/icons/BronzePlateMail.png" />
    	<icon name="PlateMail" file = "rulesets/AD&D_UA/icons/PlateMail.png" />
    	<icon name="FieldPlateMail" file = "rulesets/AD&D_UA/icons/FieldPlateMail.png" />
    	<icon name="FullPlateMail" file = "rulesets/AD&D_UA/icons/FullPlateMail.png" />
    This is an over eleborate example but wanted to show you that it can be used for more than just checkboxes. If you wanted to use it for checkboxes you would only have two entries, one for the checked state and one for the unchecked state. You would have two graphic files, one box with a check and another box without.

  8. #8
    Rock on. That does seem easy enough. I'll just need to jump in and give it a go.

  9. #9
    I've tried it out....and the quick tutorials given above did the job. I'm on my way to finishing up my first custom character sheet. Thank you guys! I'll post some screenshots once I've finished them. (They're for Weapons of the Gods by Eos Press)

  10. #10
    Cool, I'm glad I could be of service!

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
5E Product Walkthrough Playlist

Log in

Log in