ah_sce_unpacked/unpacked/Custom_Model_Bag The Side Missions 2d16e1/Custom_Model_Bag Alice in Wonderland 39916d/Custom_Token Alice in Wonderland Campaign Log eda22b.yaml
2020-11-28 11:46:13 -05:00

511 lines
38 KiB
YAML

Autoraise: true
ColorDiffuse:
b: 1.0
g: 1.0
r: 1.0
CustomImage:
CustomToken:
MergeDistancePixels: 15.0
Stackable: false
StandUp: false
Thickness: 0.2
ImageScalar: 1.0
ImageSecondaryURL: ''
ImageURL: http://cloud-3.steamusercontent.com/ugc/1478823218923593930/E6B9430C6C1F5F1CE5755677521CCE8EE730A904/
WidthScale: 0.0
Description: ''
DragSelectable: true
GMNotes: ''
GUID: eda22b
Grid: true
GridProjection: false
Hands: false
HideWhenFaceDown: false
IgnoreFoW: false
Locked: false
LuaScript: !include 'Custom_Token Alice in Wonderland Campaign Log eda22b.ttslua'
LuaScriptState: '{"checkbox":[],"counter":[{"hideBG":true,"pos":[-1.08,0.1,-1.01],"size":800,"value":0},{"hideBG":true,"pos":[-1.27,0.1,-0.79],"size":600,"value":0},{"hideBG":true,"pos":[-1,0.1,-0.79],"size":600,"value":0},{"hideBG":true,"pos":[-0.251,0.1,-1.01],"size":800,"value":0},{"hideBG":true,"pos":[-0.441,0.1,-0.79],"size":600,"value":0},{"hideBG":true,"pos":[-0.171,0.1,-0.79],"size":600,"value":0},{"hideBG":true,"pos":[0.579,0.1,-1.01],"size":800,"value":0},{"hideBG":true,"pos":[0.389,0.1,-0.79],"size":600,"value":0},{"hideBG":true,"pos":[0.659,0.1,-0.79],"size":600,"value":0},{"hideBG":true,"pos":[1.407,0.1,-1.01],"size":800,"value":0},{"hideBG":true,"pos":[1.217,0.1,-0.79],"size":600,"value":0},{"hideBG":true,"pos":[1.487,0.1,-0.79],"size":600,"value":0}],"textbox":[{"alignment":2,"font_size":300,"label":"Empty","pos":[-1.265,0.1,-1.39],"rows":1,"value":"","width":3800},{"alignment":2,"font_size":300,"label":"Empty","pos":[-1.265,0.1,-1.195],"rows":1,"value":"","width":3800},{"alignment":2,"font_size":300,"label":"Empty","pos":[-1.265,0.1,-0.42],"rows":7,"value":"","width":3800},{"alignment":2,"font_size":300,"label":"Empty","pos":[-0.436,0.1,-1.39],"rows":1,"value":"","width":3800},{"alignment":2,"font_size":300,"label":"Empty","pos":[-0.436,0.1,-1.195],"rows":1,"value":"","width":3800},{"alignment":2,"font_size":300,"label":"Empty","pos":[-0.436,0.1,-0.42],"rows":7,"value":"","width":3800},{"alignment":2,"font_size":300,"label":"Empty","pos":[0.394,0.1,-1.39],"rows":1,"value":"","width":3800},{"alignment":2,"font_size":300,"label":"Empty","pos":[0.394,0.1,-1.195],"rows":1,"value":"","width":3800},{"alignment":2,"font_size":300,"label":"Empty","pos":[0.394,0.1,-0.42],"rows":7,"value":"","width":3800},{"alignment":2,"font_size":300,"label":"Empty","pos":[1.222,0.1,-1.39],"rows":1,"value":"","width":3800},{"alignment":2,"font_size":300,"label":"Empty","pos":[1.222,0.1,-1.195],"rows":1,"value":"","width":3800},{"alignment":2,"font_size":300,"label":"Empty","pos":[1.222,0.1,-0.42],"rows":7,"value":"","width":3800},{"alignment":2,"font_size":300,"label":"Empty","pos":[-0.93,0.1,0.99],"rows":25,"value":"","width":7800},{"alignment":2,"font_size":300,"label":"Empty","pos":[0.82,0.1,0.707],"rows":20,"value":"","width":7800},{"alignment":2,"font_size":300,"label":"Empty","pos":[1.01,0.1,1.7],"rows":5,"value":"","width":7400}]}'
MeasureMovement: false
Name: Custom_Token
Nickname: Alice in Wonderland Campaign Log
Snap: true
States:
'2':
Autoraise: true
ColorDiffuse:
b: 1.0
g: 1.0
r: 1.0
CustomImage:
CustomToken:
MergeDistancePixels: 15.0
Stackable: false
StandUp: false
Thickness: 0.2
ImageScalar: 1.0
ImageSecondaryURL: ''
ImageURL: http://cloud-3.steamusercontent.com/ugc/1478823218923623416/75C4780F46A02671CADC32BB3C71C79466B8828C/
WidthScale: 0.0
Description: ''
DragSelectable: true
GMNotes: ''
GUID: 24a75e
Grid: true
GridProjection: false
Hands: false
HideWhenFaceDown: false
IgnoreFoW: false
Locked: false
LuaScript: "--[[ Character Sheet Template by: MrStump\r\n\r\nYou can set\
\ up your own character sheet if you follow these steps.\r\n\r\nStep 1) Change\
\ the character sheet image\r\n -Right click on the character sheet, click\
\ Custom\r\n -Replace the image URL with one for your character sheet\r\n\
\ -Click import, make sure your sheet loads\r\n -SAVE THE GAME (the table\
\ setup)\r\n -LOAD FROM THAT SAVE YOU JUST MADE\r\n\r\nStep 2) Edit script\
\ to fit your character sheet\r\n -Below you will see some general options,\
\ and then the big data table\r\n -The data table is what determines how\
\ many of which buttons are made\r\n -Checkboxes\r\n -Counters\r\
\n -Textboxes\r\n -By default, there are 3 of each. You can add more\
\ or remove entries\r\n -If you intend to add/remove, be sure only to add/remove\
\ ENTRIES\r\n -This is what an entry looks like:\r\n {\r\n\
\ pos = {-0.977,0.1,-0.589},\r\n size = 800,\r\
\n state = false\r\n },\r\n -Deleting the whole\
\ thing would remove that specific item on the sheet\r\n -Copy and pasting\
\ it after another entry would create another\r\n -Each entry type has unique\
\ data points (pos, size, state, etc)\r\n -Do not try to add in your\
\ own data points or remove them individually\r\n -There is a summary\
\ of what each point does at the top of its category\r\n\r\nStep 3) Save and\
\ check script changes\r\n -Hit Save & Apply in the script window to save\
\ your code\r\n -You can edit your code as needed and Save+Apply as often\
\ as needed\r\n -When you are finished, make disableSave = false below then\
\ Save+apply\r\n -This enables saving, so your sheet will remember whats\
\ on it.\r\n\r\nBonus) Finding/Editing Positions for elements\r\n I have\
\ included a tool to get positions for buttons in {x,y,z} form\r\n Place\
\ it where you want the center of your element to be\r\n Then copy the table\
\ from the notes (lower right of screen)\r\n You can highlight it and\
\ CTRL+C\r\n Paste it into the data table where needed (pos=)\r\n If you\
\ want to manually tweek the values:\r\n {0,0,0} is the center of the\
\ character sheet\r\n {1,0,0} is right, {-1,0,0} is left\r\n {0,0,-1}\
\ is up, {0,0,1} is down\r\n 0.1 for Y is the height off of the page.\r\
\n If it was 0, it would be down inside the model of the sheet\r\n\
\r\nBegin editing below: ]]\r\n\r\n--Set this to true while editing and false\
\ when you have finished\r\ndisableSave = false\r\n--Remember to set this to\
\ false once you are done making changes\r\n--Then, after you save & apply it,\
\ save your game too\r\n\r\n--Color information for button text (r,g,b, values\
\ of 0-1)\r\nbuttonFontColor = {0,0,0}\r\n--Color information for button background\r\
\nbuttonColor = {1,1,1}\r\n--Change scale of button (Avoid changing if possible)\r\
\nbuttonScale = {0.1,0.1,0.1}\r\n\r\n--This is the button placement information\r\
\ndefaultButtonData = {\r\n --Add checkboxes\r\n checkbox = {\r\n \
\ --[[\r\n pos = the position (pasted from the helper tool)\r\n\
\ size = height/width/font_size for checkbox\r\n state = default\
\ starting value for checkbox (true=checked, false=not)\r\n ]]\r\n \
\ --End of checkboxes\r\n },\r\n --Add counters that have a + and\
\ - button\r\n counter = {\r\n --[[\r\n pos = the position\
\ (pasted from the helper tool)\r\n size = height/width/font_size for\
\ counter\r\n value = default starting value for counter\r\n \
\ hideBG = if background of counter is hidden (true=hidden, false=not)\r\n \
\ ]]\r\n --First counter\r\n {\r\n pos = {-0.896,0.1,-0.500},\r\
\n size = 1500,\r\n value = 0,\r\n hideBG\
\ = true\r\n },\r\n --End of counters\r\n },\r\n --Add editable\
\ text boxes\r\n textbox = {\r\n --[[\r\n pos = the position\
\ (pasted from the helper tool)\r\n rows = how many lines of text\
\ you want for this box\r\n width = how wide the text box is\r\n\
\ font_size = size of text. This and \"rows\" effect overall height\r\
\n label = what is shown when there is no text. \"\" = nothing\r\n\
\ value = text entered into box. \"\" = nothing\r\n alignment\
\ = Number to indicate how you want text aligned\r\n (1=Automatic,\
\ 2=Left, 3=Center, 4=Right, 5=Justified)\r\n ]]\r\n --First textbox\r\
\n {\r\n pos = {-0.950,0.1,-1.200},\r\n rows\
\ = 8,\r\n width = 5000,\r\n font_size = 350,\r\
\n label = \"Empty\",\r\n value = \"\",\r\n \
\ alignment = 2\r\n },\r\n --Second textbox\r\n \
\ {\r\n pos = {-0.900,0.1,0.300},\r\n rows \
\ = 11,\r\n width = 5000,\r\n font_size = 350,\r\
\n label = \"Empty\",\r\n value = \"\",\r\n \
\ alignment = 2\r\n },\r\n --Third textbox\r\n \
\ {\r\n pos = {-0.900,0.1,1.350},\r\n rows \
\ = 11,\r\n width = 5000,\r\n font_size = 350,\r\n\
\ label = \"Empty\",\r\n value = \"\",\r\n \
\ alignment = 2\r\n },\r\n --End of textboxes\r\n }\r\
\n}\r\n\r\n\r\n\r\n--Lua beyond this point, I recommend doing something more\
\ fun with your life\r\n\r\n\r\n\r\n--Save function\r\nlocal alreadySaving =\
\ false -- Copy this too!\r\nfunction updateSave()\r\n\r\n function string.replaceText(text,\
\ old, new)\r\n local b,e = text:find(old,1,true)\r\n if b==nil then\r\
\n return text\r\n else\r\n return text:sub(1,b-1) .. new\
\ .. text:sub(e+1)\r\n end\r\n end\r\n\r\n function wait(time)\r\n\
\ local start = os.time()\r\n repeat coroutine.yield(0) until os.time()\
\ > start + time\r\n end\r\n\r\n function deepcopy(orig)\r\n local\
\ orig_type = type(orig)\r\n local copy\r\n if orig_type == 'table'\
\ then\r\n copy = {}\r\n for orig_key, orig_value in next,\
\ orig, nil do\r\n copy[deepcopy(orig_key)] = deepcopy(orig_value)\r\
\n end\r\n setmetatable(copy, deepcopy(getmetatable(orig)))\r\
\n else -- number, string, boolean, etc\r\n copy = orig\r\n \
\ end\r\n return copy\r\n end\r\n\r\n function startSaving()\r\
\n while alreadySaving do\r\n wait(0.01)\r\n end\r\n alreadySaving\
\ = true\r\n local ref_buttonData = deepcopy(ref_buttonData)\r\n local\
\ input_values = {}\r\n local checkbox_values = {}\r\n local counter_values\
\ = {}\r\n\r\n local GUID = self.getGUID()\r\n local counter = 1\r\n \
\ for _, val in ipairs(ref_buttonData.textbox) do\r\n if val.value\
\ != nil then\r\n input_values[counter] = val.value\r\n val.value\
\ = \"u\"..GUID..\":iv:\"..counter..\"u\"\r\n counter = counter + 1\r\
\n end\r\n if val.label != nil then\r\n input_values[counter]\
\ = val.label\r\n val.label = \"u\"..GUID..\":iv:\"..counter..\"u\"\
\r\n counter = counter + 1\r\n end\r\n end\r\n\r\n local\
\ counter = 1\r\n for _, val in ipairs(ref_buttonData.checkbox) do\r\n \
\ if val.value != nil then\r\n checkbox_values[counter] = val.value\r\
\n val.value = \"u\"..GUID..\":bv:\"..counter..\"u\"\r\n counter\
\ = counter + 1\r\n end\r\n end\r\n\r\n local counter = 1\r\n \
\ for _, val in ipairs(ref_buttonData.counter) do\r\n if val.value\
\ != nil then\r\n counter_values[counter] = val.value\r\n \
\ val.value = \"u\"..GUID..\":cv:\"..counter..\"u\"\r\n counter = counter\
\ + 1\r\n if val.counters != nil then\r\n for _, val2 in\
\ ipairs(val.counters) do\r\n if val2.value != nil then\r\n \
\ counter_values[counter] = val2.value\r\n val2.value\
\ = \"u\"..GUID..\":cv:\"..counter..\"u\"\r\n counter = counter\
\ + 1\r\n end\r\n if val2.change_value != nil then\r\
\n counter_values[counter] = val2.change_value\r\n \
\ val2.change_value = \"u\"..GUID..\":cv:\"..counter..\"u\"\r\n \
\ counter = counter + 1\r\n end\r\n end\r\n\
\ end\r\n\r\n end\r\n end\r\n\r\n saved_data = JSON.encode(ref_buttonData)\r\
\n\r\n local counter = 1\r\n for _, val in ipairs(ref_buttonData.textbox)\
\ do\r\n if val.value != nil then\r\n saved_data = saved_data:replaceText(\"\
u\"..GUID..\":iv:\"..counter..\"u\", string.gsub(input_values[counter], \"[\\\
\\\\\"']\", \"\\\\%1\"))\r\n val.value = input_values[counter]\r\n\
\ counter = counter + 1\r\n end\r\n if val.label != nil\
\ then\r\n saved_data = saved_data:replaceText(\"u\"..GUID..\":iv:\"\
..counter..\"u\", string.gsub(input_values[counter], \"[\\\\\\\"']\", \"\\\\\
%1\"))\r\n val.label = input_values[counter]\r\n counter =\
\ counter + 1\r\n end\r\n end\r\n\r\n local counter = 1\r\n \
\ for _, val in ipairs(ref_buttonData.checkbox) do\r\n if val.value !=\
\ nil then\r\n val.value = checkbox_values[counter]\r\n saved_data\
\ = saved_data:replaceText(\"u\"..GUID..\":bv:\"..counter..\"u\", string.gsub(checkbox_values[counter],\
\ \"[\\\\\\\"']\", \"\\\\%1\"))\r\n counter = counter + 1\r\n \
\ end\r\n end\r\n\r\n local counter = 1\r\n for _, val in ipairs(ref_buttonData.counter)\
\ do\r\n if val.value != nil then\r\n val.value = counter_values[counter]\r\
\n saved_data = saved_data:replaceText(\"u\"..GUID..\":cv:\"..counter..\"\
u\", string.gsub(counter_values[counter], \"[\\\\\\\"']\", \"\\\\%1\"))\r\n\
\ counter = counter + 1\r\n\r\n if val.counters != nil then\r\
\n for _, val2 in ipairs(val.counters) do\r\n if val2.value\
\ != nil then\r\n val2.value = counter_values[counter]\r\n \
\ saved_data = saved_data:replaceText(\"u\"..GUID..\":cv:\"..counter..\"\
u\", string.gsub(counter_values[counter], \"[\\\\\\\"']\", \"\\\\%1\"))\r\n\
\ counter = counter + 1\r\n end\r\n \
\ if val2.change_value != nil then\r\n val2.change_value = counter_values[counter]\r\
\n saved_data = saved_data:replaceText(\"u\"..GUID..\":cv:\"\
..counter..\"u\", string.gsub(counter_values[counter], \"[\\\\\\\"']\", \"\\\
\\%1\"))\r\n counter = counter + 1\r\n end\r\n \
\ end\r\n end\r\n\r\n end\r\n end\r\n if disableSave==true\
\ then saved_data=\"\" end\r\n self.script_state = saved_data\r\n\r\n \
\ alreadySaving = false\r\n return 1\r\n end\r\n startLuaCoroutine(self,\
\ \"startSaving\")\r\nend\r\n\r\n--Startup procedure\r\nfunction onload(saved_data)\r\
\n if disableSave==true then saved_data=\"\" end\r\n if saved_data ~=\
\ \"\" then\r\n local loaded_data = JSON.decode(saved_data)\r\n \
\ ref_buttonData = loaded_data\r\n else\r\n ref_buttonData = defaultButtonData\r\
\n end\r\n\r\n spawnedButtonCount = 0\r\n createCheckbox()\r\n createCounter()\r\
\n createTextbox()\r\nend\r\n\r\n\r\n\r\n--Click functions for buttons\r\n\
\r\n\r\n\r\n--Checks or unchecks the given box\r\nfunction click_checkbox(tableIndex,\
\ buttonIndex)\r\n if ref_buttonData.checkbox[tableIndex].state == true then\r\
\n ref_buttonData.checkbox[tableIndex].state = false\r\n self.editButton({index=buttonIndex,\
\ label=\"\"})\r\n else\r\n ref_buttonData.checkbox[tableIndex].state\
\ = true\r\n self.editButton({index=buttonIndex, label=string.char(10008)})\r\
\n end\r\n updateSave()\r\nend\r\n\r\n--Applies value to given counter\
\ display\r\nfunction click_counter(tableIndex, buttonIndex, amount)\r\n \
\ ref_buttonData.counter[tableIndex].value = ref_buttonData.counter[tableIndex].value\
\ + amount\r\n self.editButton({index=buttonIndex, label=ref_buttonData.counter[tableIndex].value})\r\
\n updateSave()\r\nend\r\n\r\n--Updates saved value for given text box\r\n\
function click_textbox(i, value, selected)\r\n if selected == false then\r\
\n ref_buttonData.textbox[i].value = value\r\n updateSave()\r\n\
\ end\r\nend\r\n\r\n--Dud function for if you have a background on a counter\r\
\nfunction click_none() end\r\n\r\n\r\n\r\n--Button creation\r\n\r\n\r\n\r\n\
--Makes checkboxes\r\nfunction createCheckbox()\r\n for i, data in ipairs(ref_buttonData.checkbox)\
\ do\r\n --Sets up reference function\r\n local buttonNumber =\
\ spawnedButtonCount\r\n local funcName = \"checkbox\"..i\r\n \
\ local func = function() click_checkbox(i, buttonNumber) end\r\n self.setVar(funcName,\
\ func)\r\n --Sets up label\r\n local label = \"\"\r\n \
\ if data.state==true then label=string.char(10008) end\r\n --Creates\
\ button and counts it\r\n self.createButton({\r\n label=label,\
\ click_function=funcName, function_owner=self,\r\n position=data.pos,\
\ height=data.size, width=data.size,\r\n font_size=data.size, scale=buttonScale,\r\
\n color=buttonColor, font_color=buttonFontColor\r\n })\r\n\
\ spawnedButtonCount = spawnedButtonCount + 1\r\n end\r\nend\r\n\r\
\n--Makes counters\r\nfunction createCounter()\r\n for i, data in ipairs(ref_buttonData.counter)\
\ do\r\n --Sets up display\r\n local displayNumber = spawnedButtonCount\r\
\n --Sets up label\r\n local label = data.value\r\n --Sets\
\ height/width for display\r\n local size = data.size\r\n if data.hideBG\
\ == true then size = 0 end\r\n --Creates button and counts it\r\n \
\ self.createButton({\r\n label=label, click_function=\"click_none\"\
, function_owner=self,\r\n position=data.pos, height=size, width=size,\r\
\n font_size=data.size, scale=buttonScale,\r\n color=buttonColor,\
\ font_color=buttonFontColor\r\n })\r\n spawnedButtonCount = spawnedButtonCount\
\ + 1\r\n\r\n --Sets up add 1\r\n local funcName = \"counterAdd\"\
..i\r\n local func = function() click_counter(i, displayNumber, 1) end\r\
\n self.setVar(funcName, func)\r\n --Sets up label\r\n \
\ local label = \"+\"\r\n --Sets up position\r\n local offsetDistance\
\ = (data.size/2 + data.size/4) * (buttonScale[1] * 0.002)\r\n local\
\ pos = {data.pos[1] + offsetDistance, data.pos[2], data.pos[3]}\r\n \
\ --Sets up size\r\n local size = data.size / 2\r\n --Creates\
\ button and counts it\r\n self.createButton({\r\n label=label,\
\ click_function=funcName, function_owner=self,\r\n position=pos,\
\ height=size, width=size,\r\n font_size=size, scale=buttonScale,\r\
\n color=buttonColor, font_color=buttonFontColor\r\n })\r\n\
\ spawnedButtonCount = spawnedButtonCount + 1\r\n\r\n --Sets up\
\ subtract 1\r\n local funcName = \"counterSub\"..i\r\n local\
\ func = function() click_counter(i, displayNumber, -1) end\r\n self.setVar(funcName,\
\ func)\r\n --Sets up label\r\n local label = \"-\"\r\n \
\ --Set up position\r\n local pos = {data.pos[1] - offsetDistance, data.pos[2],\
\ data.pos[3]}\r\n --Creates button and counts it\r\n self.createButton({\r\
\n label=label, click_function=funcName, function_owner=self,\r\n\
\ position=pos, height=size, width=size,\r\n font_size=size,\
\ scale=buttonScale,\r\n color=buttonColor, font_color=buttonFontColor\r\
\n })\r\n spawnedButtonCount = spawnedButtonCount + 1\r\n end\r\
\nend\r\n\r\nfunction createTextbox()\r\n for i, data in ipairs(ref_buttonData.textbox)\
\ do\r\n --Sets up reference function\r\n local funcName = \"\
textbox\"..i\r\n local func = function(_,_,val,sel) click_textbox(i,val,sel)\
\ end\r\n self.setVar(funcName, func)\r\n\r\n self.createInput({\r\
\n input_function = funcName,\r\n function_owner = self,\r\
\n label = data.label,\r\n alignment = data.alignment,\r\
\n position = data.pos,\r\n scale = buttonScale,\r\
\n width = data.width,\r\n height = (data.font_size*data.rows)+24,\r\
\n font_size = data.font_size,\r\n color \
\ = buttonColor,\r\n font_color = buttonFontColor,\r\n \
\ value = data.value,\r\n })\r\n end\r\nend\r\n"
LuaScriptState: ''
MeasureMovement: false
Name: Custom_Token
Nickname: Alice in Wonderland Campaign Log
Snap: true
Sticky: true
Tooltip: true
Transform:
posX: -1.46958935
posY: 1.57562685
posZ: -26.9344215
rotX: 359.9201
rotY: 270.080719
rotZ: 0.016759241
scaleX: 4.37388372
scaleY: 1.0
scaleZ: 4.37388372
XmlUI: ''
'3':
Autoraise: true
ColorDiffuse:
b: 1.0
g: 1.0
r: 1.0
CustomImage:
CustomToken:
MergeDistancePixels: 15.0
Stackable: false
StandUp: false
Thickness: 0.2
ImageScalar: 1.0
ImageSecondaryURL: ''
ImageURL: http://cloud-3.steamusercontent.com/ugc/1478823218923691026/8375E0A421DD1AE5036A039EDFC83A92E3B59DBA/
WidthScale: 0.0
Description: ''
DragSelectable: true
GMNotes: ''
GUID: 32fa45
Grid: true
GridProjection: false
Hands: false
HideWhenFaceDown: false
IgnoreFoW: false
Locked: false
LuaScript: "--[[ Character Sheet Template by: MrStump\r\n\r\nYou can set\
\ up your own character sheet if you follow these steps.\r\n\r\nStep 1) Change\
\ the character sheet image\r\n -Right click on the character sheet, click\
\ Custom\r\n -Replace the image URL with one for your character sheet\r\n\
\ -Click import, make sure your sheet loads\r\n -SAVE THE GAME (the table\
\ setup)\r\n -LOAD FROM THAT SAVE YOU JUST MADE\r\n\r\nStep 2) Edit script\
\ to fit your character sheet\r\n -Below you will see some general options,\
\ and then the big data table\r\n -The data table is what determines how\
\ many of which buttons are made\r\n -Checkboxes\r\n -Counters\r\
\n -Textboxes\r\n -By default, there are 3 of each. You can add more\
\ or remove entries\r\n -If you intend to add/remove, be sure only to add/remove\
\ ENTRIES\r\n -This is what an entry looks like:\r\n {\r\n\
\ pos = {-0.977,0.1,-0.589},\r\n size = 800,\r\
\n state = false\r\n },\r\n -Deleting the whole\
\ thing would remove that specific item on the sheet\r\n -Copy and pasting\
\ it after another entry would create another\r\n -Each entry type has unique\
\ data points (pos, size, state, etc)\r\n -Do not try to add in your\
\ own data points or remove them individually\r\n -There is a summary\
\ of what each point does at the top of its category\r\n\r\nStep 3) Save and\
\ check script changes\r\n -Hit Save & Apply in the script window to save\
\ your code\r\n -You can edit your code as needed and Save+Apply as often\
\ as needed\r\n -When you are finished, make disableSave = false below then\
\ Save+apply\r\n -This enables saving, so your sheet will remember whats\
\ on it.\r\n\r\nBonus) Finding/Editing Positions for elements\r\n I have\
\ included a tool to get positions for buttons in {x,y,z} form\r\n Place\
\ it where you want the center of your element to be\r\n Then copy the table\
\ from the notes (lower right of screen)\r\n You can highlight it and\
\ CTRL+C\r\n Paste it into the data table where needed (pos=)\r\n If you\
\ want to manually tweek the values:\r\n {0,0,0} is the center of the\
\ character sheet\r\n {1,0,0} is right, {-1,0,0} is left\r\n {0,0,-1}\
\ is up, {0,0,1} is down\r\n 0.1 for Y is the height off of the page.\r\
\n If it was 0, it would be down inside the model of the sheet\r\n\
\r\nBegin editing below: ]]\r\n\r\n--Set this to true while editing and false\
\ when you have finished\r\ndisableSave = false\r\n--Remember to set this to\
\ false once you are done making changes\r\n--Then, after you save & apply it,\
\ save your game too\r\n\r\n--Color information for button text (r,g,b, values\
\ of 0-1)\r\nbuttonFontColor = {0,0,0}\r\n--Color information for button background\r\
\nbuttonColor = {1,1,1}\r\n--Change scale of button (Avoid changing if possible)\r\
\nbuttonScale = {0.1,0.1,0.1}\r\n\r\n--This is the button placement information\r\
\ndefaultButtonData = {\r\n --Add checkboxes\r\n checkbox = {\r\n \
\ --[[\r\n pos = the position (pasted from the helper tool)\r\n\
\ size = height/width/font_size for checkbox\r\n state = default\
\ starting value for checkbox (true=checked, false=not)\r\n ]]\r\n \
\ --Prologue\r\n {\r\n pos = {-1.700,0.1,-1.040},\r\
\n size = 500,\r\n state = false\r\n },\r\n \
\ --Arkham in Wonderland\r\n {\r\n pos = {-1.528,0.1,-0.290},\r\
\n size = 500,\r\n state = false\r\n },\r\n \
\ --The Dodo\r\n {\r\n pos = {0.705,0.1,-1.530},\r\n\
\ size = 500,\r\n state = false\r\n },\r\n \
\ --A Sea of Troubles\r\n {\r\n pos = {0.400,0.1,-1.290},\r\
\n size = 500,\r\n state = false\r\n },\r\n \
\ --The Caterpillar\r\n {\r\n pos = {-0.050,0.1,-1.070},\r\
\n size = 500,\r\n state = false\r\n },\r\n \
\ --Tempest in a Teapot\r\n {\r\n pos = {0.360,0.1,-0.830},\r\
\n size = 500,\r\n state = false\r\n },\r\n \
\ --The Duchess\r\n {\r\n pos = {-0.190,0.1,-0.620},\r\
\n size = 500,\r\n state = false\r\n },\r\n \
\ --Bleeding Hearts\r\n {\r\n pos = {0.210,0.1,-0.395},\r\
\n size = 500,\r\n state = false\r\n },\r\n \
\ --The Gryphon and the Mock Turtle\r\n {\r\n pos =\
\ {-0.430,0.1,-0.150},\r\n size = 500,\r\n state = false\r\
\n },\r\n --Wild Snark Chase\r\n {\r\n pos \
\ = {-0.200,0.1,0.150},\r\n size = 500,\r\n state =\
\ false\r\n },\r\n --Humpty Dumpty\r\n {\r\n \
\ pos = {-0.720,0.1,0.440},\r\n size = 500,\r\n state\
\ = false\r\n },\r\n --Sibling Rivalry\r\n {\r\n \
\ pos = {-0.180,0.1,0.780},\r\n size = 500,\r\n \
\ state = false\r\n },\r\n --The Lion and the Unicorn\r\n \
\ {\r\n pos = {-0.700,0.1,1.050},\r\n size = 500,\r\
\n state = false\r\n },\r\n --Fool's Mate\r\n \
\ {\r\n pos = {-0.340,0.1,1.320},\r\n size = 500,\r\
\n state = false\r\n },\r\n --The White Queen\r\n \
\ {\r\n pos = {-1.100,0.1,1.520},\r\n size =\
\ 500,\r\n state = false\r\n },\r\n --Lucid Nightmare\r\
\n {\r\n pos = {0.725,0.1,1.260},\r\n size =\
\ 500,\r\n state = false\r\n },\r\n --Epilogue\r\n\
\ {\r\n pos = {1.111,0.1,1.585},\r\n size =\
\ 500,\r\n state = false\r\n },\r\n --End of checkboxes\r\
\n },\r\n --Add counters that have a + and - button\r\n counter = {\r\
\n --End of counters\r\n },\r\n --Add editable text boxes\r\n \
\ textbox = {\r\n --[[\r\n pos = the position (pasted\
\ from the helper tool)\r\n rows = how many lines of text you want\
\ for this box\r\n width = how wide the text box is\r\n font_size\
\ = size of text. This and \"rows\" effect overall height\r\n label \
\ = what is shown when there is no text. \"\" = nothing\r\n value\
\ = text entered into box. \"\" = nothing\r\n alignment = Number\
\ to indicate how you want text aligned\r\n (1=Automatic,\
\ 2=Left, 3=Center, 4=Right, 5=Justified)\r\n ]]\r\n --End of\
\ textboxes\r\n }\r\n}\r\n\r\n\r\n\r\n--Lua beyond this point, I recommend\
\ doing something more fun with your life\r\n\r\n\r\n\r\n--Save function\r\n\
function updateSave()\r\n saved_data = JSON.encode(ref_buttonData)\r\n \
\ if disableSave==true then saved_data=\"\" end\r\n self.script_state =\
\ saved_data\r\nend\r\n\r\n--Startup procedure\r\nfunction onload(saved_data)\r\
\n if disableSave==true then saved_data=\"\" end\r\n if saved_data ~=\
\ \"\" then\r\n local loaded_data = JSON.decode(saved_data)\r\n \
\ ref_buttonData = loaded_data\r\n else\r\n ref_buttonData = defaultButtonData\r\
\n end\r\n\r\n spawnedButtonCount = 0\r\n createCheckbox()\r\n createCounter()\r\
\n createTextbox()\r\nend\r\n\r\n\r\n\r\n--Click functions for buttons\r\n\
\r\n\r\n\r\n--Checks or unchecks the given box\r\nfunction click_checkbox(tableIndex,\
\ buttonIndex)\r\n if ref_buttonData.checkbox[tableIndex].state == true then\r\
\n ref_buttonData.checkbox[tableIndex].state = false\r\n self.editButton({index=buttonIndex,\
\ label=\"\"})\r\n else\r\n ref_buttonData.checkbox[tableIndex].state\
\ = true\r\n self.editButton({index=buttonIndex, label=string.char(10008)})\r\
\n end\r\n updateSave()\r\nend\r\n\r\n--Applies value to given counter\
\ display\r\nfunction click_counter(tableIndex, buttonIndex, amount)\r\n \
\ ref_buttonData.counter[tableIndex].value = ref_buttonData.counter[tableIndex].value\
\ + amount\r\n self.editButton({index=buttonIndex, label=ref_buttonData.counter[tableIndex].value})\r\
\n updateSave()\r\nend\r\n\r\n--Updates saved value for given text box\r\n\
function click_textbox(i, value, selected)\r\n if selected == false then\r\
\n ref_buttonData.textbox[i].value = value\r\n updateSave()\r\n\
\ end\r\nend\r\n\r\n--Dud function for if you have a background on a counter\r\
\nfunction click_none() end\r\n\r\n\r\n\r\n--Button creation\r\n\r\n\r\n\r\n\
--Makes checkboxes\r\nfunction createCheckbox()\r\n for i, data in ipairs(ref_buttonData.checkbox)\
\ do\r\n --Sets up reference function\r\n local buttonNumber =\
\ spawnedButtonCount\r\n local funcName = \"checkbox\"..i\r\n \
\ local func = function() click_checkbox(i, buttonNumber) end\r\n self.setVar(funcName,\
\ func)\r\n --Sets up label\r\n local label = \"\"\r\n \
\ if data.state==true then label=string.char(10008) end\r\n --Creates\
\ button and counts it\r\n self.createButton({\r\n label=label,\
\ click_function=funcName, function_owner=self,\r\n position=data.pos,\
\ height=data.size, width=data.size,\r\n font_size=data.size, scale=buttonScale,\r\
\n color=buttonColor, font_color=buttonFontColor\r\n })\r\n\
\ spawnedButtonCount = spawnedButtonCount + 1\r\n end\r\nend\r\n\r\
\n--Makes counters\r\nfunction createCounter()\r\n for i, data in ipairs(ref_buttonData.counter)\
\ do\r\n --Sets up display\r\n local displayNumber = spawnedButtonCount\r\
\n --Sets up label\r\n local label = data.value\r\n --Sets\
\ height/width for display\r\n local size = data.size\r\n if data.hideBG\
\ == true then size = 0 end\r\n --Creates button and counts it\r\n \
\ self.createButton({\r\n label=label, click_function=\"click_none\"\
, function_owner=self,\r\n position=data.pos, height=size, width=size,\r\
\n font_size=data.size, scale=buttonScale,\r\n color=buttonColor,\
\ font_color=buttonFontColor\r\n })\r\n spawnedButtonCount = spawnedButtonCount\
\ + 1\r\n\r\n --Sets up add 1\r\n local funcName = \"counterAdd\"\
..i\r\n local func = function() click_counter(i, displayNumber, 1) end\r\
\n self.setVar(funcName, func)\r\n --Sets up label\r\n \
\ local label = \"+\"\r\n --Sets up position\r\n local offsetDistance\
\ = (data.size/2 + data.size/4) * (buttonScale[1] * 0.002)\r\n local\
\ pos = {data.pos[1] + offsetDistance, data.pos[2], data.pos[3]}\r\n \
\ --Sets up size\r\n local size = data.size / 2\r\n --Creates\
\ button and counts it\r\n self.createButton({\r\n label=label,\
\ click_function=funcName, function_owner=self,\r\n position=pos,\
\ height=size, width=size,\r\n font_size=size, scale=buttonScale,\r\
\n color=buttonColor, font_color=buttonFontColor\r\n })\r\n\
\ spawnedButtonCount = spawnedButtonCount + 1\r\n\r\n --Sets up\
\ subtract 1\r\n local funcName = \"counterSub\"..i\r\n local\
\ func = function() click_counter(i, displayNumber, -1) end\r\n self.setVar(funcName,\
\ func)\r\n --Sets up label\r\n local label = \"-\"\r\n \
\ --Set up position\r\n local pos = {data.pos[1] - offsetDistance, data.pos[2],\
\ data.pos[3]}\r\n --Creates button and counts it\r\n self.createButton({\r\
\n label=label, click_function=funcName, function_owner=self,\r\n\
\ position=pos, height=size, width=size,\r\n font_size=size,\
\ scale=buttonScale,\r\n color=buttonColor, font_color=buttonFontColor\r\
\n })\r\n spawnedButtonCount = spawnedButtonCount + 1\r\n end\r\
\nend\r\n\r\nfunction createTextbox()\r\n for i, data in ipairs(ref_buttonData.textbox)\
\ do\r\n --Sets up reference function\r\n local funcName = \"\
textbox\"..i\r\n local func = function(_,_,val,sel) click_textbox(i,val,sel)\
\ end\r\n self.setVar(funcName, func)\r\n\r\n self.createInput({\r\
\n input_function = funcName,\r\n function_owner = self,\r\
\n label = data.label,\r\n alignment = data.alignment,\r\
\n position = data.pos,\r\n scale = buttonScale,\r\
\n width = data.width,\r\n height = (data.font_size*data.rows)+24,\r\
\n font_size = data.font_size,\r\n color \
\ = buttonColor,\r\n font_color = buttonFontColor,\r\n \
\ value = data.value,\r\n })\r\n end\r\nend\r\n"
LuaScriptState: '{"checkbox":[{"pos":[-1.7,0.1,-1.04],"size":500,"state":false},{"pos":[-1.528,0.1,-0.29],"size":500,"state":false},{"pos":[0.705,0.1,-1.53],"size":500,"state":false},{"pos":[0.4,0.1,-1.29],"size":500,"state":false},{"pos":[-0.05,0.1,-1.07],"size":500,"state":false},{"pos":[0.36,0.1,-0.83],"size":500,"state":false},{"pos":[-0.19,0.1,-0.62],"size":500,"state":false},{"pos":[0.21,0.1,-0.395],"size":500,"state":false},{"pos":[-0.43,0.1,-0.15],"size":500,"state":false},{"pos":[-0.2,0.1,0.15],"size":500,"state":false},{"pos":[-0.72,0.1,0.44],"size":500,"state":false},{"pos":[-0.18,0.1,0.78],"size":500,"state":false},{"pos":[-0.7,0.1,1.05],"size":500,"state":false},{"pos":[-0.34,0.1,1.32],"size":500,"state":false},{"pos":[-1.1,0.1,1.52],"size":500,"state":false},{"pos":[0.725,0.1,1.26],"size":500,"state":false},{"pos":[1.111,0.1,1.585],"size":500,"state":false}],"counter":[],"textbox":[]}'
MeasureMovement: false
Name: Custom_Token
Nickname: Alice in Wonderland Campaign Log
Snap: true
Sticky: true
Tooltip: true
Transform:
posX: -1.46958768
posY: 1.57562673
posZ: -26.9344063
rotX: 359.9201
rotY: 270.080719
rotZ: 0.0167592857
scaleX: 4.37388372
scaleY: 1.0
scaleZ: 4.37388372
XmlUI: ''
Sticky: true
Tooltip: true
Transform:
posX: -1.47
posY: 1.58
posZ: -26.93
rotX: 359.92
rotY: 270.11
rotZ: 0.02
scaleX: 4.37
scaleY: 1.0
scaleZ: 4.37
XmlUI: ''