D&D 3.5 (and misc D20) Digital Character Sheet

Links to gaming-related tools and external resources. Feel free to promote your (RPG-related) sites here.

Moderators: dorpond, trevor, Azhrei

User avatar
Frozen-Solid
Cave Troll
Posts: 84
Joined: Wed Sep 19, 2007 11:09 pm
Location: Springfield, IL
Contact:

Post by Frozen-Solid »

Yeah. Really it just comes down to 6 years ago when I first started playing D&D, there was NOTHING like this. Everything was ugly and I didn't like how they calculated stuff, and all I wanted was an "official" digital character sheet. I really hate "custom" designs of character sheets, hell I even hate the new extended 3.5 sheets. Yeah I'm weird, sue me.

There was some java character generator that a lot of people liked, but it didn't design sheets like the OFFICIAL sheet I'm used to when making a character from scratch. I don't want a tutorial to walk me through character generation. I just want to type in numbers and be done. Since there was nothing even remotely like that, I threw this together over an evening, stuck it on my website, and linked it on... DnDAdventure.com I think.

Next thing I know I'm getting a lot of e-mails about it and things kinda took off from there. In the end, I'm coding it because I want to use it and I'm not happy with other D&D character sheets, and the features I'm including are ones I think I would use or that would be helpful in the games I'm a part of. Since D20 is all I play regularly enough to bother coding something, that's what it can do. I know that probably sounds selfish, but I don't have the spare time to make a version that can work with 20 different character sheets.

User avatar
patoace
Dragon
Posts: 313
Joined: Mon Sep 24, 2007 6:10 pm
Location: Rancagua - Chile

Post by patoace »

Just to mention: the link in your signature is wrong.

Is it hard to issue a translated version?

User avatar
Frozen-Solid
Cave Troll
Posts: 84
Joined: Wed Sep 19, 2007 11:09 pm
Location: Springfield, IL
Contact:

Post by Frozen-Solid »

patoace wrote:Just to mention: the link in your signature is wrong.

Is it hard to issue a translated version?
Ack. Man I suck :')

Uh... depends on what you mean by translated. The only language I know is English. If the only thing you're looking to change is the background image (the sheet itself) that might not be too hard, assuming I get a translated PDF sheet to make it from that's the same format and wouldn't require me to resize/move anything. Fitting the text boxes to the sheet was the most time consuming thing ever and I don't look forward to doing it again.

If you want the menus, dice roller, and about box all translated too, that's a bit more work, but it's doable... once again I'd actually need someone to translate it and spend the time to redo all the text on the Menus and Dice Roller.

Assuming someone wants a translated binary and sends me what I need to know, that wouldn't even remotely be on the time table until I finally get around to finishing v3.0.

User avatar
Terame
Kobold
Posts: 3
Joined: Tue Oct 02, 2007 9:53 pm

Post by Terame »

Great link and discussion :) Subscribing to this one :D

User avatar
Frozen-Solid
Cave Troll
Posts: 84
Joined: Wed Sep 19, 2007 11:09 pm
Location: Springfield, IL
Contact:

Post by Frozen-Solid »

Small update: I've started coding a MapTools Macro XML export function. When done, all the rolls that are available in my built-in DiceRoller will be added to an XML file that can be copied into the context.xml file of an rptok. This, theoretically, should work in b16 and b17, and in b18's upcoming macro import feature.

I'm having a slight problem modifying and rezipping a token file, but hopefully that won't be an issue come b18, which will probably be out by the time I'm done coding all of this.

I've gotten up to the attack rolls, which I'm going to have to write a parser to separate the multiple die rolls. Hopefully won't be too difficult, and the hard part is already coded from the DiceRoller... I just have to figure out how to modify it to work with an fout rather than simply adding to a TListBox.

I skipped finishing the text export, as to me this one's a bit more useful and a tad less mind numbingly repetative coding and less math work. :3

User avatar
Frozen-Solid
Cave Troll
Posts: 84
Joined: Wed Sep 19, 2007 11:09 pm
Location: Springfield, IL
Contact:

Post by Frozen-Solid »

Parser works! That was easier than I thought it would be :3

Code: Select all

  <macroMap>
    <entry>
      <string>Strength Check</string>
      <string>Viseriontests his strength and gets a [d20+2]</string>
    </entry>
    <entry>
      <string>Dexterity Check</string>
      <string>Viseriontests his dexterity and gets a [d20+0]</string>
    </entry>
    <entry>
      <string>Constitution Check</string>
      <string>Viseriontests his constitution and gets a [d20+3]</string>
    </entry>
    <entry>
      <string>Intelligence Check</string>
      <string>Viseriontests his intelligence and gets a [d20+1]</string>
    </entry>
    <entry>
      <string>Wisdom Check</string>
      <string>Viseriontests his wisdom and gets a [d20+4]</string>
    </entry>
    <entry>
      <string>Charisma Check</string>
      <string>Viseriontests his charisma and gets a [d20+3]</string>
    </entry>
    <entry>
      <string>Grapple Check</string>
      <string>Viseriongrapples with his opponent and gets a [d20+4]</string>
    </entry>
    <entry>
      <string>Initiative Roll</string>
      <string>Viserion rolls his initiative and gets a [d20+0]</string>
    </entry>
    <entry>
      <string>Fortitude Save</string>
      <string>Viserion's body attempts to fend off a harmful effect and gets a [d20+8]</string>
    </entry>
    <entry>
      <string>Reflex Save</string>
      <string>Viserion attempts to dodge out of the way and gets a [d20+2]</string>
    </entry>
    <entry>
      <string>Will Save</string>
      <string>Viserion attemps to resist a trick of the mind and gets a [d20+8]</string>
    </entry>
    <entry>
      <string>Melee Attack</string>
      <string>Viserion makes a melee attack and gets a [d20+2+20]</string>
    </entry>
    <entry>
      <string>Masterwork Greatsword Attack</string>
      <string>Viserion attacks with his Masterwork Greatswordand gets:<br>Attack 5: [d20-2]<br>Attack 3: [d20+3]<br>Attack 1: [d20+8]</string>
    </entry>

User avatar
trevor
Codeum Arcanum (RPTools Founder)
Posts: 11311
Joined: Mon Jan 09, 2006 4:16 pm
Location: Austin, Tx
Contact:

Post by trevor »

Super cool. You know, with b17 you can replace all of those +# with +<prop> where <prop> is a property name, just add the <prop> to the property map in the token property map xml section, then add it to the campaign properties if you need to (although, technically speaking, you the roll will still work even if it's not in the campaign properties)
Dreaming of a 1.3 release

User avatar
Hawke
Great Wyrm
Posts: 2261
Joined: Sat Apr 21, 2007 12:12 am
Location: Albuquerque, NM

Post by Hawke »

Frozen-Soild, Make sure you account for this in your generation: If you set your Strength to 12 and then do "Strength Check [1d20+Strength]" you'll get [1d20+12]. I think I'm going to standardize the modifiers there instead of the actual values.

Looks very cool... I'll have to give it a shot. Once we get changing tokens-midgame do you think you'll push it to create a full token format complete with stats?

User avatar
Frozen-Solid
Cave Troll
Posts: 84
Joined: Wed Sep 19, 2007 11:09 pm
Location: Springfield, IL
Contact:

Post by Frozen-Solid »

I do know about b17's modifiers too, but stats in MapTool itself doesn't make a huge difference to me right now. How much I add to it depends on how detailed the XML import will be in MapTool itself. If the importer will import all of the stats I use to calculate as well, then I can easily add statistics as well as macros and redo the macros.

However, I'm not sure exactly how the stat blocks work in MapTool. Can each token have it's own list of very different stats or does the campaign file itself designate what stats are available to a token? I know the campaign file by default only has really basic stats and not near the information calculated for a lot of the things needed for rolls in CharSheet. If each token's stats are independant of the campaign then I can very very easily modify this to output stat blocks as well, once again this depends on how much XML can be imported into MapTool itself.

Since the only thing it sounded like was being worked on for b18 is macros, the only output I'm doing is raw roll modifiers. I can always add more to it as the import and character sheet features of MapTool are expanded. I'd rather not code a *full* token format, because I don't know the first thing about making zip files and adding the picture and everything else that MapTool and TokenTool can do. I honestly don't see a point in duplicating features that MapTool and TokenTool already have. It just seems counter-productive to me. Outputting XML, however, is extremely easy and simplistic, and isn't really duplicating anything already available in MapTool/TokenTool. Long story short, I'm going to limit the XML export to be pure XML and dependant on whatever XML import features will be present in MapTool.

Hopefully that reasoning makes sense? I'm kinda under the weather right now so I'm not sure how clearly I'm describing my thoughts 8)

User avatar
Hawke
Great Wyrm
Posts: 2261
Joined: Sat Apr 21, 2007 12:12 am
Location: Albuquerque, NM

Post by Hawke »

Whether or not a campaign has the specific stat, if the token has one it'll evaluate based on the token.

Example:

1) Set a token's Strength = 10, make a macro [1d20+Strength]
2) Execute Macro, you'll see it works as it should
3) Edit->Campaign Properties
4) Remove "Strength (Str)"
5) Double check the token's properties, you'll see it is not there
6) Execute Macro, you'll see it works as it did before

So... it does not need to be part of the campaign to work. You could create a token with references in any way you want and it'll work even if you drop it into some random campaign - you just wont be able to see/edit the properties unless they're designated in the campaign properties.

User avatar
Frozen-Solid
Cave Troll
Posts: 84
Joined: Wed Sep 19, 2007 11:09 pm
Location: Springfield, IL
Contact:

Post by Frozen-Solid »

Awesome. So now the only dependant will be how much Trevor will let us import into MapTool. I'm not going to beg him for features that are pretty much only going to be used by the small percent of people who work with my program and MapTool. If it's something he thinks is a feature that's got enough demand, awesome. If not I'll stick with what he gives us access to.

User avatar
Hawke
Great Wyrm
Posts: 2261
Joined: Sat Apr 21, 2007 12:12 am
Location: Albuquerque, NM

Post by Hawke »

Really, it's GREAT that all that stuff is kept and saved. As I plan on using MT to host a long-term turn based strategy game. It'll allow me to keep track of things like XP, Kills, total movement, etc. secretly.

User avatar
Frozen-Solid
Cave Troll
Posts: 84
Joined: Wed Sep 19, 2007 11:09 pm
Location: Springfield, IL
Contact:

Post by Frozen-Solid »

Yeah that's really awesome. I'm just now getting into the more advanced features of MapTool and I keep loving it more and more. My players are getting kinda annoyed by my constantly forcing they upgrade though, heh.

User avatar
Frozen-Solid
Cave Troll
Posts: 84
Joined: Wed Sep 19, 2007 11:09 pm
Location: Springfield, IL
Contact:

Post by Frozen-Solid »

XML Export is done! :')

I can't test it because I have no idea why my modified content.xml files aren't loading yet, but code-wise it looks good. The beta on my site is updated, most current version now being 3.1.0.58. If anyone has better luck adding an exported MacroMap to an rptok file please let me know if the macro list ends up doing what it's supposed to. Otherwise I'll report back when A) MapTool supports importing XML or B) I hear back about what I'm doing wrong with the tokens and test it myself.

Now to finish up TXT exporting and move onto HTML, RTF, and BMP. :3

Code: Select all

  <macroMap>
    <entry>
      <string>Strength Check</string>
      <string>Viserion tests his strength and gets a [d20+2]</string>
    </entry>
    <entry>
      <string>Dexterity Check</string>
      <string>Viserion tests his dexterity and gets a [d20+0]</string>
    </entry>
    <entry>
      <string>Constitution Check</string>
      <string>Viserion tests his constitution and gets a [d20+3]</string>
    </entry>
    <entry>
      <string>Intelligence Check</string>
      <string>Viserion tests his intelligence and gets a [d20+1]</string>
    </entry>
    <entry>
      <string>Wisdom Check</string>
      <string>Viserion tests his wisdom and gets a [d20+4]</string>
    </entry>
    <entry>
      <string>Charisma Check</string>
      <string>Viserion tests his charisma and gets a [d20+3]</string>
    </entry>
    <entry>
      <string>Grapple Check</string>
      <string>Viserion grapples with his opponent and gets a [d20+4]</string>
    </entry>
    <entry>
      <string>Initiative Roll</string>
      <string>Viserion rolls his initiative and gets a [d20+0]</string>
    </entry>
    <entry>
      <string>Fortitude Save</string>
      <string>Viserion's body attempts to fend off a harmful effect and gets a [d20+8]</string>
    </entry>
    <entry>
      <string>Reflex Save</string>
      <string>Viserion attempts to dodge out of the way and gets a [d20+2]</string>
    </entry>
    <entry>
      <string>Will Save</string>
      <string>Viserion attemps to resist a trick of the mind and gets a [d20+8]</string>
    </entry>
    <entry>
      <string>Melee Attack</string>
      <string>Viserion makes a melee attack and gets a [d20+2+20]</string>
    </entry>
    <entry>
      <string>Ranged Attack</string>
      <string>Viserion makes a ranged attack and gets a [d20+2+00]</string>
    </entry>
    <entry>
      <string>Masterwork Greatsword Attack</string>
      <string>Viserion attacks with his Masterwork Greatsword and gets:<br>Attack 1: [d20+8]</string>
    </entry>
    <entry>
      <string>Masterwork Greatsword Damage</string>
      <string>Viserion strikes with his Masterwork Greatsword and deals [2d6+5] damage</string>
    </entry>
    <entry>
      <string>Heavy Crossbow Attack</string>
      <string>Viserion attacks with his Heavy Crossbow and gets:<br>Attack 1: [d20+3]</string>
    </entry>
    <entry>
      <string>Heavy Crossbow Damage</string>
      <string>Viserion strikes with his Heavy Crossbow and deals [1d10+2] damage</string>
    </entry>
    <entry>
      <string>5 Daggers Attack</string>
      <string>Viserion attacks with his 5 Daggers and gets:<br>Attack 1: [d20+6]</string>
    </entry>
    <entry>
      <string>5 Daggers Damage</string>
      <string>Viserion strikes with his 5 Daggers and deals [1d4+4] damage</string>
    </entry>
    <entry>
      <string>Appraise Check</string>
      <string>Viserion attempts to determine it's worth and gets a [d20+1]</string>
    </entry>
    <entry>
      <string>Balance Check</string>
      <string>Viserion attempts to keep his balance and gets a [d20-5]</string>
    </entry>
    <entry>
      <string>Bluff Check</string>
      <string>Viserion attempts to hide his the truth and gets a [d20+3]</string>
    </entry>
    <entry>
      <string>Climb Check</string>
      <string>Viserion attempts to climb over the obstacle and gets a [d20-3]</string>
    </entry>
    <entry>
      <string>Concentration Check</string>
      <string>Viserion attempts to clear his mind and concentrate on the matter at hand and gets a [d20+9]</string>
    </entry>
    <entry>
      <string>Craft (Armorsmith) Check</string>
      <string>Viserion attempts to craft a masterpiece and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Craft () Check</string>
      <string>Viserion attempts to craft a masterpiece and gets a [d20+1]</string>
    </entry>
    <entry>
      <string>Craft () Check</string>
      <string>Viserion attempts to craft a masterpiece and gets a [d20+1]</string>
    </entry>
    <entry>
      <string>Decipher Script Check</string>
      <string>Viserion attempts to decipher the writing and gets a [d20+1]</string>
    </entry>
    <entry>
      <string>Diplomacy Check</string>
      <string>Viserion attempts to be diplomatic and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Disable Device Check</string>
      <string>Viserion attempts to disable the device and gets a [d20+1]</string>
    </entry>
    <entry>
      <string>Disguise Check</string>
      <string>Viserion attempts to change his appearance and gets a [d20+3]</string>
    </entry>
    <entry>
      <string>Escape Arist Check</string>
      <string>Viserion attempts to escape from a tight situation and gets a [d20-5]</string>
    </entry>
    <entry>
      <string>Forgery Check</string>
      <string>Viserion attempts to forge the document and gets a [d20+1]</string>
    </entry>
    <entry>
      <string>Gather Information Check</string>
      <string>Viserion attempts to gather information on the subject and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Handle Animal Check</string>
      <string>Viserion attempts to handle the wid animal and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Heal Check</string>
      <string>Viserion attempts to treat the wounds and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Hide Check</string>
      <string>Viserion attempts to hide in the shadows and gets a [d20-5]</string>
    </entry>
    <entry>
      <string>Intimidate Check</string>
      <string>Viserion attempts to be intimidating and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Jump Check</string>
      <string>Viserion attempts to jump over the obstacle and gets a [d20-3]</string>
    </entry>
    <entry>
      <string>Knowledge (Religion) Check</string>
      <string>Viserion attempts tests his knowledge and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Knowledge (Arcana) Check</string>
      <string>Viserion attempts tests his knowledge and gets a [d20+1]</string>
    </entry>
    <entry>
      <string>Knowledge (History) Check</string>
      <string>Viserion attempts tests his knowledge and gets a [d20+1]</string>
    </entry>
    <entry>
      <string>Knowledge (Planar) Check</string>
      <string>Viserion attempts tests his knowledge and gets a [d20+1]</string>
    </entry>
    <entry>
      <string>Knowledge () Check</string>
      <string>Viserion attempts tests his knowledge and gets a [d20+1]</string>
    </entry>
    <entry>
      <string>Listen Check</string>
      <string>Viserion attempts to listen carefully and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Move Silently Check</string>
      <string>Viserion attempts to move without making a sound and gets a [d20-5]</string>
    </entry>
    <entry>
      <string>Open Lock Check</string>
      <string>Viserion attempts to open the lock and gets a [d20+0]</string>
    </entry>
    <entry>
      <string>Perform () Check</string>
      <string>Viserion attempts to perform and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Perform () Check</string>
      <string>Viserion attempts to perform and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Perform () Check</string>
      <string>Viserion attempts to perform and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Profession () Check</string>
      <string>Viserion attempts to utilize his profession and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Profession () Check</string>
      <string>Viserion attempts to utilize his profession and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Ride Check</string>
      <string>Viserion attempts to ride his mount and gets a [d20+2]</string>
    </entry>
    <entry>
      <string>Search Check</string>
      <string>Viserion attempts to investigate his surroundings and gets a [d20+1]</string>
    </entry>
    <entry>
      <string>Sense Motive Check</string>
      <string>Viserion attempts to discover the hidden motive and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Sleight of Hand Check</string>
      <string>Viserion attempts to swipe the object and gets a [d20-5]</string>
    </entry>
    <entry>
      <string>Spellcraft Check</string>
      <string>Viserion attempts to use his knowledge of spells and gets a [d20+7]</string>
    </entry>
    <entry>
      <string>Spot Check</string>
      <string>Viserion attempts to spot a minute detail and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Survival Check</string>
      <string>Viserion attempts to survive in the wild and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Swim Check</string>
      <string>Viserion attempts to swim the difficult waters and gets a [d20-8]</string>
    </entry>
    <entry>
      <string>Tumble Check</string>
      <string>Viserion attempts a feat of acrobatics and gets a [d20-5]</string>
    </entry>
    <entry>
      <string>Use Magic Device Check</string>
      <string>Viserion attempts to use the unknown magic device and gets a [d20+5]</string>
    </entry>
    <entry>
      <string>Use Rope Check</string>
      <string>Viserion attempts to work with the rope and gets a [d20+0]</string>
    </entry>
  </macroMap>
Edit: Found a slight bug in output for attacks. It's fixed and the build is updated to 3.1.0.58 :3

Phergus
Deity
Posts: 7132
Joined: Fri May 12, 2006 8:56 pm
Location: Middle of Nowhere, NM
Contact:

Post by Phergus »

I'm no XML expert but I don't believe this is valid XML:

Code: Select all

<entry>
      <string>Masterwork Greatsword Attack</string>
      <string>Viserion attacks with his Masterwork Greatswordand gets:<br>Attack 1: [d20+8]</string>
    </entry> 
You can't have an open <br> tag like that.

If you close the tag properly by putting a space and slash after the br it will at least load but you lose everything between the br and the end of that macro string.

grrr. Freaking phpBB mucks with text even inside of code blocks. So maybe you had it in the first place.

In any case, the macros load once I corrected the br tags except for the noted problem with losing the text after the BR tags.

Post Reply

Return to “Links & External Resources”