View Full Version : Experiments in Fantasy Grounds

December 12th, 2018, 22:35
Hello Folks,
As I work with the software - I sometimes experiment with things just to see if I can make it do tricks that I otherwise couldn't. What will follow in this thread will be experiments that I've tried, whether the work or not, and why I might want to have that feature within my game. For instance, I installed the MOTD mod for use with FG, and it is a NICE thing to have. But if I want to modify the contents of that file without having to open up FG to make the change, it would be nice to know how that is done right?

Likewise, if you have handouts you want to make available for any given player - and for their eyes ONLY, the problem becomes one of "How do I do this?"

Quite simply? use the Notes aspect of Fantasy Grounds. When you click on the notes icon, it pulls up a directory of those notes that currently exist. As GM, you get to see if one of your players opened up a note, because it will show who owns it. If the note was created by the GM, it won't have any associated owner name with it. If it was created by a player, it will have the associated player name - and it will show whether or not it is a public available note (with that P next to the owner's name).

So, how does the GM add a new note that is viewable only by the player he wants to be able to see it?

Simple actually:

Edit db.xml file and look for the notes. This is a sample note from an ongong campaign...

<holder name="Randy" owner="true" />
<locked type="number">1</locked>
<name type="string">William's smart Phone Directory</name>
<text type="formattedtext">
<p>location of Urban Ranger military surplus store</p>
<p>location of the Marksman</p>
<p>contact info of the nurse</p>
<p>Cell phone number of mary</p>
<p>Cell phone number of cathy (PLI)</p>
<p>contact info of Cop bar</p>

The player wanted to be able to track what information his smart phone contains as far as contacts are concerned. Note that it says "holder name =" just underneath the <id-00008> entry. Had the note been entered by the GM, it would look like this instead...

<locked type="number">0</locked>
<name type="string">William's smart Phone Directory</name>
<text type="formattedtext">
<p>location of Urban Ranger military surplus store</p>
<p>location of the Marksman</p>
<p>contact info of the nurse</p>
<p>Cell phone number of mary</p>
<p>Cell phone number of cathy (PLI)</p>
<p>contact info of Cop bar</p>

So, simply adding the line <holder name="Randy" owner="true" /> (or if I had a player named Rob for instance, I'd use Rob in lieu of Randy) to the entry, and presto, it is now something that can be viewed only by its owner. If the note entry is to be viewed publicly - simply add the line <public /> to the line before <holder name="Randy" owner="true" />.

This is all stuff you can do using Notepad or Notepad++

December 12th, 2018, 22:45
Another experiment that I conducted, was trying to generate missions for a cyberpunk campaign, using Interface Zero's tables. At the time, I hadn't as yet discovered the "Story Template" function, and any time I tried to use nested tables to generate the mission, the results were almost always, not in the order that I wished the results to be. So, I wondered how does one go about running a VB.NET program such that it would generate the results as I wished, send it to the clipboard, and then allow me to paste the information to the clipboard. Below is a copy of the code used, that calls "functions" where it will produce a random table result in VB.NET, and allow me to store the information in a Text Box on the program form. Then, I click on the menu to where it says "Export to Clipboard".

<code example below>

Private Sub GenerateMissionToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GenerateMissionToolStripMenuItem.Click
GblAntagonist = "Antagonist: " & GetAntagonist()
GblComplication = "Complication: " & GetComplications()
GblConflict = "Dramatic Conflict: " & GetConflict()
GblContractor = "Contractor: " & GetContractor()
GblInnocents = "Innocents: " & GetInnocents()
GblMcGuffin = "McGuffin: " & GetMacguffin()
GblMission = "Mission: " & GetMission()
GblUrbanLocation = "Urban Location: " & GetUrbanLocation()
GblNonUrbanLocation = "Non-Urban Location: " & GetNonUrbanLocation()

'GblAntagonist = "Antagonist: " & GetAntagonist()
'GblComplication = "Complication: " & GetComplications()
'GblConflict = "Dramatic Conflict: " & GetConflict()
'GblContractor = "Contractor: " & GetContractor()
'GblInnocents = "Innocents: " & GetInnocents()
'GblMcGuffin = "McGuffin: " & GetMacguffin()
'GblMission = "Mission: " & GetMission()
'GblUrbanLocation = "Urban Location: " & GetUrbanLocation()
'GblNonUrbanLocation = "Non-Urban Location: " & GetNonUrbanLocation()

RichTextBox1.Text = GblContractor + vbCrLf
RichTextBox1.Text += GblMission + vbCrLf
RichTextBox1.Text += GblUrbanLocation + vbCrLf
RichTextBox1.Text += GblNonUrbanLocation + vbCrLf
RichTextBox1.Text += GblMcGuffin + vbCrLf
RichTextBox1.Text += GblInnocents + vbCrLf
RichTextBox1.Text += GblAntagonist + vbCrLf
RichTextBox1.Text += GblComplication + vbCrLf
RichTextBox1.Text += GblConflict + vbCrLf
End Sub

Private Sub PasteToClipboardToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PasteToClipboardToolStripMenuItem.Click


End Sub
End Class

</code example below>

The key bit is that when you have the command RichtextBox1.Selectall() - VB.NET will highlight everything in RichTextbox1. The command .COPY then places it into the Clipboard, and lets you use it in other applications running on your PC. So, you could for instance, paste the contents of the clipboard into the chat area. You could paste it into the Story entry. You could even paste it in an encounters area.

Clearly, this option is not for everyone, but if you want to be able to program something relatively more complex than Fantasy Grounds can easily handle - this is one way to program in VB.NET and have the output usable in Fantasy Grounds.

December 12th, 2018, 22:57
To share something with just certain players drag the note/story/image/item and drop it on their portrait.

December 12th, 2018, 23:07
LOL - Thanks Zacchaeus. Of course there is an easier way than the one I found! Had you not seen this thread and responded, I would never have known. So thank you for that.

As it is, I located my copy of MAD MESA for Boot Hill and am in the process of entering into Fantasy Grounds as a "module" for my own private use. When I found out I could simply enter the data via Notepad ++ , I found myself using that methodology instead of opening the story entry, and typing by hand, everything I'm reading (glad I'm a touch typist!).

December 12th, 2018, 23:17
It is generally better that GM content be created as Story entries over Notes.
Dice rolling in Tables will happen in the correct order once 3.3.7 goes live.

December 12th, 2018, 23:30
What I like about Stories is that you can create subdivisions as to where they are stored. Notes has no such feature at this point in time.

For the first time in my life, I'm now exploring more of what XML is capable of - and as I have worked with Databases in the past, I can't help but think "Hey, wouldn't it be neat if I could start to create my own XML set up for use with ranged weapons in GURPS - but trying to wade through the material that Ronnke is producing (and he is doing YEOMAN's work on this in a way I could never even approach!), and create anything useful would be difficult.

One thing I learned some time back, is that if you know where you want to go at the start of a programming project, it works better in the long run than if you start with a module approach to reach a given goal initially, and then over time, add more features. Sometimes the way code is implemented initially is not ideal for later ideas or needs. What perhaps is harder too is the fact that GURPS has a program called GURPS CHARACTER ASSISTANT - whose output is set in stone for the most part. That Ronnke was able to write a script to take what GCA exports and turn it into an ability to import characters into Fantasy Grounds was OUTSTANDING in my eyes.

In the end, when the new version of the software comes out, I'm half afraid that I won't be able to afford it (currently unemployed and almost at the age of retirement). Part of me wants to take what Ronnke has done apart piece by piece just to see how it was done, but these days, the moods I'm in tend to be less than stellar. Were it not for FG right now, I suspect I'd be even more depressed. Nothing like being born hard of hearing and having certain job opportunities slip through your fingers because they need someone who can use the phone constantly. I can't blame them for that, but it was hard losing a job I COULD handle despite my hearing, all because the stock holders wanted $3 per share more than market price. We were profitable and then suddenly, we were gone. <shrug>. That's life. ;)

In any event, if I have a job where I can afford the shift to the newer version of FG with more bells and whistles, I will look forward to it!