RPTools.net

Discussion and Support

Skip to content

It is currently Mon Dec 18, 2017 9:49 am 






Reply to topic  [ 524 posts ]  Go to page Previous  1 ... 30, 31, 32, 33, 34, 35  Next

Previous topic | Next topic 

  Print view

Author Message
User avatar  Offline
Cave Troll
 
Joined: Sat Mar 28, 2009 2:43 pm
Posts: 55
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Tue Jun 12, 2012 9:33 am 
Cay wrote:
@MadJoker
I would very much like to try your scripts. But I'm having some adding the timer.
I'm not sure where and how I am supposed to enter the timer functionality.

Go to Edit->Campaign Properties and you land in the tab Token Properties. In the list on the left side select Information and add the info from my post at the bottom of the list on the right side. Then make sure to click Update in the lower right corner. If you want to enable the turn timer then you can just double click the Lib:Information token and in the properties tab you can change the value for enableTurnTimer.


Top
 Profile  
 
 Offline
Cave Troll
 
Joined: Sat Feb 18, 2012 5:23 am
Posts: 61
Location: Hilden, Germany
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Tue Jun 12, 2012 9:53 am 
Ah, thanks a lot. Now I added all the macros and filled the initiative que with creatures.
When I click on NextInitiative for the first time, everything works great (e.g. PC is reminded to take ongoing damage). Wonderful script!

Clicking it a second time gives me the following error, when the timer property is set to 0:

Code:
java.lang.ClassCastException: java.lang.String cannot be cast to java.math.BigDecimal error executing expression broadcast("" + getName(iniToken) + "'s turn took " + if(tMinutes > 0,tMinutes + " minute" + if(tMinutes > 1,"s","") + if(tSeconds > 0," and ",""),"") + if(tSeconds > 0 || tMinutes == 0, tSeconds + " second" + if(tSeconds > 1 || tSeconds == 0,"s",""),"") + ".",if(enableTurnTimer,"all","gm")).


I set the timer property to 1. Now the java error is gone. Instead I get the following output regarding a saving throw:
Code:
Ylivara must make a save against
net/rptools/maptool/client/image/smiley/emcurl.png'>heet/none/C0A80124C35F1DE1C36F0000C0080100?%7B%22WindowType%22%3A%22Condition%22%2C%22Name%22%3A%22Fire%22%2C%22Duration%22%3A1%2C%22Damage%22%3A2%2C%22Penalty%22%3A%22%22%2C%22Notes%22%3A%22%22%7D'>Fire condition.


And one minor thing: There is no code in the 'SortInitiative' section of your post. Was this intended?

_________________
Ready to play campaign: Kobold Hall - D&D4e LVL1


Top
 Profile  
 
User avatar  Offline
Cave Troll
 
Joined: Sat Mar 28, 2009 2:43 pm
Posts: 55
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Tue Jun 12, 2012 10:41 am 
Thanks for the hint with the SortIniative part. I added the code.

About the first error: this most likely happened because you had a combat running already, and did not start the whole combat with the NextInitiative macro. I have added a fix for that problem to the macro in my previous post. But in general it would be best if you always use the NextIniative macro to start a combat, i.e. just roll initiative with all combatants, then click SortInitiative (includes automatic tie breaking), then click NextInitiative to start the combat, and use it until the combat is over. Then click ClearIniative once the encounter has ended.

EDIT: Haha, I figured out the second problem. It's a problem with smileys. MapTool knows :S as a smiley, and in the output of my script I give a link to the condition explanation of the ongoing damage. That link is generated by a MapTool function and the token where the macro lies is called Lib:Sheet. Now the link is just a long HTML text and is parsed first for smileys apparently. I cannot change that fact easily, so the only fix is to disable smileys on your machine (your players can use smileys without problems).


Last edited by MadJoker on Tue Jun 12, 2012 1:03 pm, edited 1 time in total.

Top
 Profile  
 
 Offline
Cave Troll
 
Joined: Sat Feb 18, 2012 5:23 am
Posts: 61
Location: Hilden, Germany
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Tue Jun 12, 2012 10:57 am 
Once again: many thanks. Everything works as advertised ;-).
And the thing with the smileys is almost hilarious :lol:

_________________
Ready to play campaign: Kobold Hall - D&D4e LVL1


Top
 Profile  
 
 Offline
Kobold
 
Joined: Thu Sep 30, 2010 12:00 am
Posts: 13
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Wed Jun 27, 2012 3:03 pm 
I was building an virtual NPC to act as 'treasure storage', wanting to exploit the fact that giving items from an NPC duplicates the item rather than moving it.

Except... in my testing, this isn't what was actually happening. I did some troubleshooting and found the problem:

In GiveEdit@Lib:Sheet, there's a line that looks like this:

Code:
[H: DNT_CharacterType = json.get(json.get(getLibProperty("CharacterTypes", "Lib:Information"), DNA_CharacterType), 2)]


This is supposed to be checking to see if the token is a PC character type, but instead is looking up the HP modifier. PCs and NPCs both have the same modifier (1), which causes this to not work.

The 'correct' fix is to replace that line of the macro with this version, changing the '2' to a '1' to properly query the "is PC" field rather than the "HP multiplier" field
Code:
[H: DNT_CharacterType = json.get(json.get(getLibProperty("CharacterTypes", "Lib:Information"), DNA_CharacterType), 1)]


The alternative is to flag any NPCs that you're putting items on as an elite or a solo, as they have a HP modifier that is not equal to 1.

[Edit: I should learn to preview.]

_________________
Newbie D&D4e DM and tinkerer.
I made some terrain overlays for cover, concealment, etc.
I use DeviantNull's D&D4e Character Sheet Framework


Top
 Profile  
 
 Offline
Kobold
 
Joined: Fri Jun 29, 2012 12:08 am
Posts: 3
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Fri Jun 29, 2012 12:16 am 
Can someone please help me. I have been working on this campaign for about a month. I finally got it all set up for our first game, but after I started the server, my players did not have the character sheet window, and the character sheet macro button in the campaign window is gone. And all of a sudden, now I am getting this annoying message 'You do not have permission to call the "getOwned" function.' every time I click something, I can no longer even access the character sheets. I REALLY do not want to start over from scratch, so if anyone can shed any light on this I would greatly appreciate it.

P.S. The one time I did get the character sheet window to show up, none of the sheets would load and it just kept saying 'Undefined function: Find Color' , so any idea what that was would be some nice info as well.


Top
 Profile  
 
User avatar  Offline
Cave Troll
 
Joined: Sat Mar 28, 2009 2:43 pm
Posts: 55
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Fri Jun 29, 2012 3:01 am 
@ChaosDragon
Well, two things that come two mind would be to make sure you start the server as GM, not as a player, and to make sure all the library token's are still named correctly, i.e. they are named "Lib:Sheet", "Lib:Execute", and "Lib:Information", without any spaces or something. For example if you have token numbering enabled if you copy around the tokens the get a number at the end of the name, which makes it not work anymore.

If this doesn't work, try loading the original FW campaign, right click all the library tokens and save them. In your campaign delete your library tokens and replace them with the saved ones.

That's about all I can think of.

PS: What MT version are you using?


Top
 Profile  
 
 Offline
Kobold
 
Joined: Fri Jun 29, 2012 12:08 am
Posts: 3
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Fri Jun 29, 2012 4:41 pm 
MadJoker wrote:
@ChaosDragon
Well, two things that come two mind would be to make sure you start the server as GM, not as a player, and to make sure all the library token's are still named correctly, i.e. they are named "Lib:Sheet", "Lib:Execute", and "Lib:Information", without any spaces or something. For example if you have token numbering enabled if you copy around the tokens the get a number at the end of the name, which makes it not work anymore.

If this doesn't work, try loading the original FW campaign, right click all the library tokens and save them. In your campaign delete your library tokens and replace them with the saved ones.

That's about all I can think of.

PS: What MT version are you using?


maptool-1.3.b87


Top
 Profile  
 
 Offline
Kobold
 
Joined: Fri Jun 29, 2012 12:08 am
Posts: 3
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Fri Jun 29, 2012 9:10 pm 
I actually didn't touch the names, and I was logged in as a GM on the server. Really the only thing I did was mess with the ownership of some of the tokens but then it just kind of locked me out of everything.Also, what should the ownership of the 'lib:' things be set to?


Top
 Profile  
 
User avatar  Offline
Cave Troll
 
Joined: Sat Mar 28, 2009 2:43 pm
Posts: 55
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Sat Jun 30, 2012 3:12 am 
ChaosDragon wrote:
I actually didn't touch the names, and I was logged in as a GM on the server. Really the only thing I did was mess with the ownership of some of the tokens but then it just kind of locked me out of everything.Also, what should the ownership of the 'lib:' things be set to?

They shouldn't be owned by anyone, I think. But I think it might be the easiest way if you just upload the campaign file somewhere, and I will see if I can fix it. Sometimes the errors that MT or the FW generate are quite difficult to figure out, especially if one doesn't have access to the campaign.


Top
 Profile  
 
 Offline
Kobold
 
Joined: Thu Sep 30, 2010 12:00 am
Posts: 13
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Thu Jul 05, 2012 6:08 pm 
Cay wrote:
Ah, thanks a lot. Now I added all the macros and filled the initiative que with creatures.
When I click on NextInitiative for the first time, everything works great (e.g. PC is reminded to take ongoing damage). Wonderful script!

Clicking it a second time gives me the following error, when the timer property is set to 0:

Code:
java.lang.ClassCastException: java.lang.String cannot be cast to java.math.BigDecimal error executing expression broadcast("" + getName(iniToken) + "'s turn took " + if(tMinutes > 0,tMinutes + " minute" + if(tMinutes > 1,"s","") + if(tSeconds > 0," and ",""),"") + if(tSeconds > 0 || tMinutes == 0, tSeconds + " second" + if(tSeconds > 1 || tSeconds == 0,"s",""),"") + ".",if(enableTurnTimer,"all","gm")).




I encountered this same problem, even after reading the post on how to fix it. This is how I fixed it:

1. Under Campaign Properties -> Token Properties -> Information, remove the default value for 'enableTurnTimer', e.g. change it from "enableTurnTimer:0" to "enableTurnTimer"

2. Edit the Lib:Information token and set enableTurnTimer to 0.

It turns out that getLibProperty() won't return 'defaulted' properties, so it ends up returning an empty string rather than 0. The if() construct to determine whether to report this to 'all' or 'gm' fails in this case, since it expects a number. The problem didn't occur when enableTurnTimer was manually set to 1, since it was no longer the default value.

_________________
Newbie D&D4e DM and tinkerer.
I made some terrain overlays for cover, concealment, etc.
I use DeviantNull's D&D4e Character Sheet Framework


Top
 Profile  
 
User avatar  Offline
Cave Troll
 
Joined: Sat Mar 28, 2009 2:43 pm
Posts: 55
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Fri Jul 06, 2012 12:33 am 
dewin wrote:
Cay wrote:
Ah, thanks a lot. Now I added all the macros and filled the initiative que with creatures.
When I click on NextInitiative for the first time, everything works great (e.g. PC is reminded to take ongoing damage). Wonderful script!

Clicking it a second time gives me the following error, when the timer property is set to 0:

Code:
java.lang.ClassCastException: java.lang.String cannot be cast to java.math.BigDecimal error executing expression broadcast("" + getName(iniToken) + "'s turn took " + if(tMinutes > 0,tMinutes + " minute" + if(tMinutes > 1,"s","") + if(tSeconds > 0," and ",""),"") + if(tSeconds > 0 || tMinutes == 0, tSeconds + " second" + if(tSeconds > 1 || tSeconds == 0,"s",""),"") + ".",if(enableTurnTimer,"all","gm")).




I encountered this same problem, even after reading the post on how to fix it. This is how I fixed it:

1. Under Campaign Properties -> Token Properties -> Information, remove the default value for 'enableTurnTimer', e.g. change it from "enableTurnTimer:0" to "enableTurnTimer"

2. Edit the Lib:Information token and set enableTurnTimer to 0.

It turns out that getLibProperty() won't return 'defaulted' properties, so it ends up returning an empty string rather than 0. The if() construct to determine whether to report this to 'all' or 'gm' fails in this case, since it expects a number. The problem didn't occur when enableTurnTimer was manually set to 1, since it was no longer the default value.

Thanks for the info. I'll update my code with a fix for that. Might be that I even encountered this once myself, but I haven't used the default value since ages, so I forgot about it.


Top
 Profile  
 
 Offline
Kobold
 
Joined: Thu Sep 30, 2010 12:00 am
Posts: 13
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Thu Jul 12, 2012 11:58 pm 
I decided I like the convention of having different monsters of the same type roll shared initiative and all act together. Before I'd just roll initiative for one of each kind of monster, but that breaks when I decide to just delete tokens upon death and accidentally delete the one that actually holds the initiative number. Plus, MadJoker's nice initiative state tracking system only works when the actual token comes up in initiative, so wouldn't work with that particular usage.

So I decided to take a fun adventure into the land of Maptools macros to accomplish that goal

This is a mod to the framework that will - for the GM only[1] - allow you to group monsters in initiative when you roll them in. The logic is as follows:

1. You can group monsters by (none), Name, GM Name, or Label

2. Two monsters are considered by the same group if they have identical names (excluding any trailing numbers -- so "Kobold", "Kobold 2", and "Kobold 25" are all in the same group, "Kobold Dragonshield" is in its own group.). If you opt to group by GM Name or Label, the same logic applies just using the relevant field. (If you name all of your kobolds "Kobold" so it's not readily obvious to your players what kind of kobolds they are, you can set their GM names to "Kobold Dragonshield", "Kobold Wyrmpriest", etc. and then group by initiative. Monsters with no name, label, or GM name (depending on grouping method) are never treated as grouped.

3. As each monster is added to initiative, it scans the initiative list for a monster in the same group. If a match is found, the new monster copies the old monster's initiative. ("Kobold 2: I share Kobold 1's initiative of 13.01"); otherwise initiative is done normally.

Note the exact mechanism for this process is fairly inefficient -- the entire initiative list has to be looped for each monster if grouping is enabled, so the cost is exponential as the list grows. There are a few ways this could be improved[2], but it's more fiddly than I'd like to get right now.

Notes:
* Re-adding tokens to initiative with grouping enabled is ineffective, as each token will find another token in its group and readd using its number.
* Behavior if tokens exist at differing initiative counts in the same group is undefined. (Actually, it'll follow the order of getInitiativeList() )
* Grouping tokens with differing initiative bonuses probably isn't a good idea.

With all the caveats out of the way, here's the actual code changes:

Code:
<!--InitiativeCheckEntry-->
[H: DNT_macroTarget = if(json.get(macro.args, "MacroTarget") == "Multiple", "Selected", currentToken())]

<head>
   <meta name="input" content = "true">
   <title>Initiative Check</title>
</head>
<body><form name="Initiative Check" method="json" action="[r: macroLinkText('CheckOutput@Lib:Execute', 'none', '', DNT_macroTarget)]">
<table width="100%" nowrap="nowrap" bgcolor="DBD9C0">
   <tr>
      <td width="1">Re-add to List:</td>
      <td><input type="checkbox" name="Readd" value="1"></input></td>
      <td width="1">Set Value:</td>
      <td align="left"><input type="text" name="Value" size="5"></input></td>
   </tr>
</table>
<table width="100%" nowrap="nowrap" bgcolor="DBD9C0">
   <tr>
[R, if(isGM() == 1 && getLibProperty("GMScreen", "Lib:Information") == 1), CODE:
   {
      <td width="1"><b>Modifier:</b></td>
      <td align="left"><input type="text" name="Mod" size="5"></input></td>
      <td width="1" align="right">Die Roll:</td>
      <td align="left"><input type="text" name="GMDieRoll" size="5"></input></td>
   };{
      <td width="1"><b>Modifier:</b></td>
      <td align="left"><input type="text" name="Mod" size="5"></input></td>
   }
]
   </tr>
</table>
[R, if(isGM() == 1), CODE:
{
<table width="100%" nowrap="nowrap" bgcolor="DBD9C0">
   <tr>
      <td width="1"><b>Group By:</b></td>
      <td><Select name="GroupBy">
         <Option selected="selected" value="None">(none)</option>
         <Option value="Name">Name</option>
         <Option value="Label">Label</option>
         <Option value="GM Name">GM Name</option>
      </select>
      </td>
   </tr>
</table>
};{}]
<table width="100%" nowrap="nowrap">
   <tr bgcolor="B3AF94">
      <td width="1">Private:</td>
      <td align="left"><input type="checkbox" name="Output" value="Private" [R, if(DNT_MacroTarget == "Selected"): if(getProperty("DNA_PrivateRolls" + getPlayerName()) == "1", "checked", "")]></input></td>
      <td align="right">Hide Roll Info:</td>
      <td align="left"><input type="checkbox" name="HideRoll" value="1" [R, if(DNT_MacroTarget == "Selected"): if(getProperty("DNA_HiddenRolls" + getPlayerName()) == "1", "checked", "")]></input></td>
   </tr>
   <tr bgcolor="DBD9C0">
      <td colspan="4" align="center">
         <input type="submit" name="SaveEntry" value="Fight!"></input>
      </td>
   </tr>
</table>
<input type="hidden" name="ExeMacro" value="InitiativeCheck"></input>
<input type="hidden" name="MacroTarget" value="[R: DNT_macroTarget]"></input>
</form></body>

(The only thing new here is the "Group By" section)


Find "InitiativeCheck" in the list, and change to:
Code:
"InitiativeCheck",  "175, 325",


I also fixed a few minor bugs I was experiencing with character notes and equipment fields (always having to scroll a tiny bit to be able to click the save button) by finding and updating the following:
Code:
"EquipmentNotes", "385, 570",
"Notes", "385, 570",


Replace with
Code:
<!--InitiativeCheck-->
[H, forEach(DNT_variable, "Mod, Readd, Value,Output, HideRoll"): set("DNT_Raw" + DNT_variable, json.get(macro.args, DNT_variable))]
[H: DNT_RawMod = DNT_RawMod + 0]
[H: DNT_Mod = eval(string(DNT_RawMod))]

[H: Die = if(json.get(macro.args, "GMDieRoll") == "", 1d20, json.get(macro.args, "GMDieRoll"))]
[H: Rating = json.get(json.get(DNA_AbilityScores, 2), 2) + DNA_LevelBonus + DNA_InitBonus]

[H: DNT_InitTotal = if(DNT_RawValue == "", Die + Rating + DNT_Mod + ((Rating+DNT_Mod)/100), DNT_RawValue)]

<!--Sets if the token was on the initiative list to start with, this the output formating is correct-->
[H: DNT_OnInitList = if(getInitiative() == "The token is not in the initiative list.", 0, 1)]

<!--See if we are set to group with other like-named tokens-->

[H: DNT_Groupby = if(isGm(), json.get(macro.args, "GroupBy"), "None")]
[H, switch(DNT_Groupby), CODE:
   case "Name" : {[H: DNT_Groupfunction = "getName()" ]};
   case "Label": {[H: DNT_Groupfunction = "getLabel()" ]};
   case "GM Name": {[H: DNT_Groupfunction = "getGMName()" ]};
   default: {[H: DNT_Groupfunction = ""]};
]
<!-- Save our current token ID so we know if we compare against ourself later -->
[H: DNT_SelfId = currentToken()]
<!-- ID of the token that we decided to match against, if we find one -->
[H: DNT_OtherId = ""]

[H, if(DNT_Groupfunction == ""): DNT_SelfBaseName = ""; DNT_SelfBaseName = replace(eval(DNT_Groupfunction), "^(.*?) [0-9]+","\$1")]
[H, if(DNT_SelfBaseName != ""), CODE:
   {
      [H: DNT_InitiativeList = json.get(getInitiativeList(), "tokens")]
      [H, foreach(DNT_InitiativeEntry, DNT_InitiativeList), CODE:
         {
            In initiative scanning loop, [R: DNT_CheckId = json.get(DNT_InitiativeEntry, "tokenId")]
            [H, token(DNT_CheckId): DNT_OtherBaseName = replace(eval(DNT_Groupfunction), "(.*?) [0-9]+","\$1")]
            [H, if(DNT_CheckId != DNT_SelfId && DNT_OtherBaseName == DNT_SelfBaseName && DNT_OtherId == ""): DNT_OtherId = DNT_CheckId]
         }
      ]
   }
]
[H, if(DNT_OtherId != ""), CODE:
   {
      [H, token(DNT_OtherId): DNT_InitTotal = getInitiative()]
   }
]

<!--Output Formating-->
[H: DNT_ModFormat = "%s(%s)"]
[H, if(isNumber(DNT_RawMod) == 1): Mod = DNT_RawMod; Mod = strformat(DNT_ModFormat, string(DNT_RawMod), DNT_Mod)]
[H: DNT_GMCheatMsg = "<b>[Rolls behind the GM Screen]</b>"]

<!--Adds to the initiative, only does it if the token is not on the list, if readd has been checked, or if there is a set Value-->
[H, if(DNT_OnInitList == 0 || DNT_RawReadd == 1 || DNT_RawValue != ""), CODE:
   {      
      [H: addToInitiative()]
      [H: setInitiative(DNT_InitTotal)]      
   }
]

[R, if(DNT_RawValue == "" && DNT_OtherId == ""), CODE:
   {
      [R: getLibProperty("GameMessage", "Lib:Information")] [R: if(isGM() == 1 && getLibProperty("GMScreen", "Lib:Information") == 1, DNT_GMCheatMsg, "")] [R: if(DNT_RawOutput == "", "", token.name + ":")] I make an Inititiative check and get a
      [R, if(DNT_RawHideRoll == 1), CODE:
         {
            [gt, st, t(Die + Rating + DNT_Mod): Die + Rating + Mod]
         };{
            [t(Die + Rating + DNT_Mod): Die + Rating + Mod]
         }
      ]. [R: if(DNT_OnInitList == 0 || DNT_RawReadd == 1, "", "But I'm already on the Initiative list.")]
   };{}
]

[R, if(DNT_RawValue != "" && DNT_OtherId == ""), CODE:
   {
      [R: getLibProperty("GameMessage", "Lib:Information")] [R: if(isGM() == 1 && getLibProperty("GMScreen", "Lib:Information") == 1, DNT_GMCheatMsg, "")] [R: if(DNT_RawOutput == "", "", token.name + ":")] I set my Initiative to [R: DNT_InitTotal].
   };{}
]

[R, if(DNT_OtherId != ""), CODE:
   {
      [R: getLibProperty("GameMessage", "Lib:Information")] [R: if(isGM() == 1 && getLibProperty("GMScreen", "Lib:Information") == 1, DNT_GMCheatMsg, "")] [R: if(DNT_RawOutput == "", "", token.name + ":")] I share [R: getName(DNT_OtherId)][R:"'s"] initiative of [R: DNT_InitTotal]. [R: if(DNT_OnInitList == 0 || DNT_RawReadd == 1, "", "But I'm already on the Initiative list.")]
   };{}
]


[1] Trying to get an 'untrusted' view of the initiative list from a trusted macro seems to be non-trivial, which means there's a 50/50 chance that it'd take all of one line of code and someone just needs to tell me what it is.

[2] By making a JSON map of group -> initiative_or_owner_token_ID at the start of adding tokens to initiative and updating it at the same time we add tokens to initiative. But there's no clear entry point between the "Okay, we're starting initiative now" and "For each token, run this macro" steps without more editing than I'd like to do.

_________________
Newbie D&D4e DM and tinkerer.
I made some terrain overlays for cover, concealment, etc.
I use DeviantNull's D&D4e Character Sheet Framework


Top
 Profile  
 
User avatar  Offline
Great Wyrm
 
Joined: Mon Sep 15, 2008 8:27 am
Posts: 1184
Location: Bristol, UK
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Fri Jul 13, 2012 4:21 am 
dewin wrote:
I decided I like the convention of having different monsters of the same type roll shared initiative and all act together.


Cool. I use Rumble's Slim framework but have been thinking about the same thing. I shall be looking through this as soon as I get the chance :)


Top
 Profile  
 
 Offline
Kobold
 
Joined: Sat Mar 03, 2012 2:58 pm
Posts: 3
 Post subject: Re: DN's D&D4e Character Sheet Framework
PostPosted: Sun Jul 22, 2012 9:03 pm 
Using this Frame work and i keep getting a error.

java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.ComparableTimSort.mergeLo(Unknown Source)
at java.util.ComparableTimSort.mergeAt(Unknown Source)
at java.util.ComparableTimSort.mergeCollapse(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at net.rptools.maptool.client.ui.zone.FogUtil.calculateVisibility(FogUtil.java:81)
at net.rptools.maptool.client.ui.zone.ZoneView.getVisibleArea(ZoneView.java:216)
at net.rptools.maptool.client.ui.zone.FogUtil.exposeLastPath(FogUtil.java:256)
at net.rptools.maptool.client.tool.PointerTool.stopTokenDrag(PointerTool.java:267)
at net.rptools.maptool.client.tool.PointerTool.mouseReleased(PointerTool.java:541)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at net.rptools.maptool.client.swing.MapToolEventQueue.dispatchEvent(MapToolEventQueue.java:38)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


Its very annoying, can anyone help Please?


Top
 Profile  
 
Display posts from previous:  Sort by  
Reply to topic  [ 524 posts ]  Go to page Previous  1 ... 30, 31, 32, 33, 34, 35  Next

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:

Who is online

In total there are 2 users online :: 0 registered, 0 hidden and 2 guests (based on users active over the past 5 minutes)
Most users ever online was 243 on Sun Nov 04, 2012 6:14 am

Users browsing this forum: No registered users and 2 guests





Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group

Style based on Andreas08 by Andreas Viklund

Style by Elizabeth Shulman