Thread: Extension Creation Help
-
July 6th, 2024, 23:30 #1
Extension Creation Help
I am trying to create a (what I thought would be) relatively simple Extension, that would create a new UI element to display the number of Golden d20s the party has, which is a house rule we use. I was able to get it all created in its most basic form, but the numbers do not sync between the client and the host, and I am lost on how to make that connection.
golden_d20_tracker.lua
Code:-- Create a global variable to store the window instance local goldenD20Window = nil function onInit() -- Announce the extension loading ChatManager.SystemMessage("Golden d20s Extension Loaded") -- Create the UI createUI() -- Getting initial count goldenD20Count = DB.getValue("campaign.golden_d20_count", 0) -- Register a callback to update the UI when the golden d20 count changes DB.addHandler("campaign.golden_d20_count", "onUpdate", updateGoldenD20Count) end function createUI() -- Create a window to hold the Golden d20s UI goldenD20Window = Interface.openWindow("goldend20_window", "") if goldenD20Window then goldenD20Window.updateGoldenD20Count = updateGoldenD20Count goldenD20Window.increaseGoldenD20 = increaseGoldenD20 goldenD20Window.decreaseGoldenD20 = decreaseGoldenD20 updateGoldenD20Count() else ChatManager.SystemMessage("Failed to create Golden d20s UI") end end function increaseGoldenD20() local count = DB.getValue("campaign.golden_d20_count", 0) DB.setValue("campaign.golden_d20_count", "number", count + 1) end function decreaseGoldenD20() local count = DB.getValue("campaign.golden_d20_count", 0) if count > 0 then DB.setValue("campaign.golden_d20_count", "number", count - 1) end end function updateGoldenD20Count() if goldenD20Window then local count = DB.getValue("campaign.golden_d20_count", 0) goldenD20Window.golden_d20_count.setValue(count) end end
Code:<root> <windowclass name="goldend20_window"> <frame>goldend20_window</frame> <placement> <size> <width>70</width> <height>80</height> </size> </placement> <sizelimits> <width>70</width> <height>80</height> </sizelimits> <playercontrol /> <sharable /> <noclose /> <tooltip> <text>Golden d20</text> </tooltip> <sheetdata> <!--<windowreferencecontrol> <bounds>15,11,20,20</bounds> <class>note</class> <description> <field>golden_d20_title</field> </description> </windowreferencecontrol>--> <genericcontrol name="panel_bg"> <bounds>0,0,70,80</bounds> <icon>panel_bg</icon> <anchor> <vertical>center</vertical> </anchor> </genericcontrol> <basicnumber name="golden_d20_count"> <bounds>25,30,20,20</bounds> <readonly>true</readonly> <align>center</align> </basicnumber> <buttoncontrol name="decrease_golden_d20"> <bounds>25,53,20,20</bounds> <icon> <normal>g20_decrease</normal> </icon> <align>center</align> <script> function onButtonPress() Interface.openWindow("goldend20_window", "").decreaseGoldenD20() end </script> </buttoncontrol> <buttoncontrol name="increase_golden_d20"> <bounds>25,7,20,20</bounds> <icon> <normal>g20_increase</normal> </icon> <script> function onButtonPress() Interface.openWindow("goldend20_window", "").increaseGoldenD20() end </script> </buttoncontrol> </sheetdata> </windowclass> </root>
Also, the other big piece that I was hoping to solve for was saving the "golden_d20_count" to an external text file, so I can call it in OBS to update/display the number to my Twitch chat.
Any and all help would be appreciated! GM for the most Interactive TTRPG show on Twitch, Adventures from Amethil.
Watch ItsCliffGaming LIVE every Friday @ 8pm, Eastern. [Click Here]
Mention you are from the Fantasy Grounds Forums for Special Treatment.
-
July 7th, 2024, 00:21 #2
Supreme Deity
- Join Date
- Mar 2007
- Posts
- 21,095
Any data that you want to be always be shared to the player clients has to be made public to the players. Try checking the code in CoreRPG for examples of DB.setPublic used for combattracker, party sheet and more.
Regards,
JPG
Thread Information
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks