Skip to content

Instantly share code, notes, and snippets.

@Draco18s
Last active February 18, 2024 20:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Draco18s/a1d61eb54fe26f54cbbcf4945a2429e0 to your computer and use it in GitHub Desktop.
Save Draco18s/a1d61eb54fe26f54cbbcf4945a2429e0 to your computer and use it in GitHub Desktop.
{
"SaveName": "",
"Date": "",
"VersionNumber": "",
"GameMode": "",
"GameType": "",
"GameComplexity": "",
"Tags": [],
"Gravity": 0.5,
"PlayArea": 0.5,
"Table": "",
"Sky": "",
"Note": "",
"TabStates": {},
"LuaScript": "",
"LuaScriptState": "",
"XmlUI": "",
"ObjectStates": [
{
"GUID": "dca203",
"Name": "Custom_Tile",
"Transform": {
"posX": 53.52207,
"posY": 1.481497,
"posZ": 22.5702553,
"rotX": 8.54998052E-06,
"rotY": 179.997009,
"rotZ": -8.26219839E-05,
"scaleX": 4.15,
"scaleY": 1.0,
"scaleZ": 4.15
},
"Nickname": "Crafting Lookup",
"Description": "",
"GMNotes": "",
"AltLookAngle": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"ColorDiffuse": {
"r": 1.0,
"g": 1.0,
"b": 1.0
},
"LayoutGroupSortIndex": 0,
"Value": 0,
"Locked": false,
"Grid": true,
"Snap": true,
"IgnoreFoW": false,
"MeasureMovement": false,
"DragSelectable": true,
"Autoraise": true,
"Sticky": true,
"Tooltip": true,
"GridProjection": false,
"HideWhenFaceDown": false,
"Hands": false,
"CustomImage": {
"ImageURL": "https://i.postimg.cc/mD2VZFvc/Crafting-Lookup.png",
"ImageSecondaryURL": "",
"ImageScalar": 1.0,
"WidthScale": 0.0,
"CustomTile": {
"Type": 0,
"Thickness": 0.2,
"Stackable": false,
"Stretch": true
}
},
"LuaScript": "function onLoad(saved_game_data)\r\n createSearchField()\r\n createSearchButtons()\r\n crafting = {\r\n red = { },\r\n yellow = { },\r\n blue = { },\r\n purple = { }\r\n }\r\n \r\n WebRequest.get(\"https://gist.githubusercontent.com/Draco18s/1fe2e0507fbd0d4c0712460e003be8b5/raw/1b6f60044b92e77bfb38b311d352515945e3e4cc/stonesaga-crafting-red.csv\", function(request)\r\n if request.is_error then\r\n log(request.error)\r\n else\r\n for i,line in pairs(stringsplit(request.text, \"\\n\")) do\r\n if i > 1 then\r\n obj = stringsplit(line, \";\")\r\n crafting.red[parseInput(obj[1])] = {\r\n flavor = obj[2],\r\n text = obj[3],\r\n item = obj[4]\r\n }\r\n end\r\n end\r\n end\r\n end)\r\n WebRequest.get(\"https://gist.githubusercontent.com/Draco18s/32bd7d10c3ebf364b2a10b996d9a94cb/raw/af98f4dd9aa350490af787ead10518fa567d0a06/stonesaga-crafting-yellow.csv\", function(request)\r\n if request.is_error then\r\n log(request.error)\r\n else\r\n for i,line in pairs(stringsplit(request.text, \"\\n\")) do\r\n if i > 1 then\r\n obj = stringsplit(line, \";\")\r\n crafting.yellow[parseInput(obj[1])] = {\r\n flavor = obj[2],\r\n text = obj[3],\r\n item = obj[4]\r\n }\r\n end\r\n end\r\n end\r\n end)\r\n WebRequest.get(\"https://gist.githubusercontent.com/Draco18s/e736850eceae193786a82e885811c305/raw/79208d9fab7b7d674751add7880c21516e4d7f54/stonesaga-crafting-blue.csv\", function(request)\r\n if request.is_error then\r\n log(request.error)\r\n else\r\n for i,line in pairs(stringsplit(request.text, \"\\n\")) do\r\n if i > 1 then\r\n obj = stringsplit(line, \";\")\r\n crafting.blue[parseInput(obj[1])] = {\r\n flavor = obj[2],\r\n text = obj[3],\r\n item = obj[4]\r\n }\r\n end\r\n end\r\n end\r\n end)\r\n WebRequest.get(\"https://gist.githubusercontent.com/Draco18s/d21a3d62bce8423c5093e67a6228daaa/raw/5dafb176b68b1da6ffae8a29447fc221e80c57e7/stonesaga-crafting-purple.csv\", function(request)\r\n if request.is_error then\r\n log(request.error)\r\n else\r\n for i,line in pairs(stringsplit(request.text, \"\\n\")) do\r\n if i > 1 then\r\n obj = stringsplit(line, \";\")\r\n crafting.purple[parseInput(obj[1])] = {\r\n flavor = obj[2],\r\n text = obj[3],\r\n item = obj[4]\r\n }\r\n end\r\n end\r\n end\r\n end)\r\nend\r\n\r\nfunction stringsplit (inputstr, sep)\r\n if sep == nil then\r\n sep = \"%s\"\r\n end\r\n local t={}\r\n for str in string.gmatch(inputstr, \"([^\"..sep..\"]+)\") do\r\n table.insert(t, str)\r\n end\r\n return t\r\nend\r\n\r\nfunction onSave()\r\n return nil\r\nend\r\n\r\nfunction setup()\r\n cleanStart()\r\n createSearchField()\r\n createSearchButtons()\r\n isSetup = true\r\nend\r\n\r\nfunction cleanStart()\r\n local btns = self.getButtons()\r\n if btns ~= nil then\r\n for i = 0, #btns - 1 do\r\n self.removeButton(i)\r\n end\r\n end\r\n local inps = self.getInputs()\r\n if inps ~= nil then\r\n for i = 0, #inps - 1 do\r\n self.removeInput(i)\r\n end\r\n end\r\nend\r\n\r\nfunction createSearchField()\r\n self.createInput({\r\n input_function = \"enterCheck\",\r\n function_owner = self,\r\n label = \"...\",\r\n position = {0, 0.25, 0.325},\r\n rotation = {0, 0, 0},\r\n scale = {.9,.9,.9},\r\n width = 400,\r\n height = 100,\r\n tooltip = \"\",\r\n alignment = 3,\r\n font_color = \"White\",\r\n font_size = 75,\r\n color = \"Brown\"\r\n })\r\n \r\n self.createInput({\r\n input_function = \"nop\",\r\n function_owner = self,\r\n label = \" \",\r\n position = {0, 0.25, -0.7},\r\n rotation = {0, 0, 0},\r\n scale = {.9,.9,.9},\r\n width = 800,\r\n height = 300,\r\n tooltip = \"\",\r\n alignment = 2,\r\n font_color = \"White\",\r\n font_size = 45,\r\n color = \"Brown\"\r\n })\r\n \r\n self.createInput({\r\n input_function = \"nop\",\r\n function_owner = self,\r\n label = \" \",\r\n position = {0, 0.25, -0.2},\r\n rotation = {0, 0, 0},\r\n scale = {.9,.9,.9},\r\n width = 800,\r\n height = 200,\r\n tooltip = \"\",\r\n alignment = 2,\r\n font_color = \"White\",\r\n font_size = 45,\r\n color = \"Brown\"\r\n })\r\n \r\n self.createInput({\r\n input_function = \"nop\",\r\n function_owner = self,\r\n label = \" \",\r\n position = {0, 0.25, 0.1},\r\n rotation = {0, 0, 0},\r\n scale = {.9,.9,.9},\r\n width = 800,\r\n height = 100,\r\n tooltip = \"\",\r\n alignment = 2,\r\n font_color = \"White\",\r\n font_size = 55,\r\n color = \"Brown\"\r\n })\r\nend\r\n\r\nfunction nop(obj, color, value, focus)\r\n\r\nend\r\n\r\nfunction enterCheck(obj, color, value, focus)\r\n local key = string.sub(value,-1,-1)\r\n if focus and key == '\\n' then\r\n search()\r\n end\r\nend\r\n\r\nfunction createSearchButtons()\r\n self.createButton({\r\n click_function = \"searchRed\",\r\n function_owner = self,\r\n label = \"Craft Red\",\r\n position = {0.5, 0.25, 0.55},\r\n rotation = {0, 0, 0},\r\n scale = {.9,.9,.9},\r\n width = 500,\r\n height = 90,\r\n tooltip = \"\",\r\n font_color = {1, 1, 1},\r\n font_size = 80,\r\n color = \"Brown\"\r\n })\r\n \r\n self.createButton({\r\n click_function = \"searchYellow\",\r\n function_owner = self,\r\n label = \"Craft Yellow\",\r\n position = {-0.5, 0.25, 0.55},\r\n rotation = {0, 0, 0},\r\n scale = {.9,.9,.9},\r\n width = 500,\r\n height = 90,\r\n tooltip = \"\",\r\n font_color = {1, 1, 1},\r\n font_size = 80,\r\n color = \"Brown\"\r\n })\r\n self.createButton({\r\n click_function = \"searchBlue\",\r\n function_owner = self,\r\n label = \"Craft Blue\",\r\n position = {0.5, 0.25, 0.8},\r\n rotation = {0, 0, 0},\r\n scale = {.9,.9,.9},\r\n width = 500,\r\n height = 90,\r\n tooltip = \"\",\r\n font_color = {1, 1, 1},\r\n font_size = 80,\r\n color = \"Brown\"\r\n })\r\n \r\n self.createButton({\r\n click_function = \"searchPurple\",\r\n function_owner = self,\r\n tooltip = \"Craft Other\",\r\n label = \"Craft Other\",\r\n position = {-0.5, 0.25, 0.8},\r\n rotation = {0, 0, 0},\r\n scale = {.9,.9,.9},\r\n width = 500,\r\n height = 90,\r\n tooltip = \"\",\r\n font_color = {1, 1, 1},\r\n font_size = 80,\r\n color = \"Brown\"\r\n })\r\nend\r\n\r\nfunction searchRed()\r\n local value = parseInput(self.getInputs()[1].value)\r\n\r\n if value == nil then\r\n return\r\n end\r\n \r\n showResult(crafting.red[value])\r\nend\r\n\r\nfunction searchYellow()\r\n local value = parseInput(self.getInputs()[1].value)\r\n\r\n if value == nil then\r\n return\r\n end\r\n \r\n showResult(crafting.yellow[value])\r\nend\r\n\r\nfunction searchPurple()\r\n local value = parseInput(self.getInputs()[1].value)\r\n\r\n if value == nil then\r\n return\r\n end\r\n \r\n showResult(crafting.purple[value])\r\nend\r\n\r\nfunction searchBlue()\r\n local value = parseInput(self.getInputs()[1].value)\r\n\r\n if value == nil then\r\n return\r\n end\r\n \r\n showResult(crafting.blue[value])\r\nend\r\n\r\nfunction parseInput(str)\r\n local upp = string.upper(str):gsub(\"%D\", \"\")\r\n return tonumber(upp)\r\nend\r\n\r\nfunction showResult(result)\r\n self.editInput({index=0, value=\"\"})\r\n self.editInput({index=1, value=\"\"})\r\n self.editInput({index=2, value=\"\"})\r\n self.editInput({index=3, value=\"\"})\r\n \r\n self.editInput({index=1, value=result.flavor})\r\n self.editInput({index=2, value=result.text})\r\n self.editInput({index=3, value=result.item})\r\nend",
"XmlUI": ""
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment