--On-demand save function, remembers pitch and distance values function updateSave() saved_data = JSON.encode({pitch=pitch, distance=distance}) self.script_state = saved_data end --Startup, loading memory function onload(saved_data) --Loads the tracking for if the game has started yet if saved_data ~= "" then local loaded_data = JSON.decode(saved_data) pitch = loaded_data.pitch distance = loaded_data.distance else pitch = 45 distance = 30 end createInputs() createButtons() end --Activated by finishing writing in the input box, updates save info function input_entered(inputString, stillEditing , typeIndex) if stillEditing == false then --Check to avoid empty input strings if tonumber(inputString) == nil then inputString = 0 end --Update save data if typeIndex==0 then pitch = inputString else distance = inputString end updateSave() end end --Activated by button, the -5 -1 +1 +5 buttons function click_modify(amount, typeIndex) if typeIndex==0 then pitch = pitch + amount self.editInput({index=typeIndex, value=pitch}) else distance = distance + amount self.editInput({index=typeIndex, value=distance}) end updateSave() end --Activated by button, uses the data to move the camera function click_setCamera(_, color) --Check if there is another object to use instead of self local targetObj = self local nameGUID = string.sub(self.getName(), 1, 6) if getObjectFromGUID(nameGUID) ~= nil then targetObj = getObjectFromGUID(nameGUID) end --Check if there is an offset to use instead of 180 local offsetY = 180 local offsetString = string.sub(self.getName(), 7) if tonumber(string.match(offsetString, "%d+")) ~= nil then offsetY = tonumber(string.match(offsetString, "%d+")) end --Move camera into position around object local pos = targetObj.getPosition() local rot = targetObj.getRotation() rot.y = rot.y + offsetY Player[color].lookAt({position=pos, pitch=pitch, yaw=rot.y, distance=distance}) local objectList = getObjects() local AHLCGNavTile = nil for i,v in ipairs(objectList) do if v.getName() == "jaqenZann's Navigation Overlay Tile" then AHLCGNavTile = v break end end -- local AHLCGNavTile = getObjectFromGUID("0ffbc5") if AHLCGNavTile then AHLCGNavTile.call('updateEditCamera', { { pos.x, pos.y, pos.z }, tonumber(pitch), rot.y, tonumber(distance) }) end end --Button/Input creation --Text boxes for number input function createInputs() local funcName = "inputFuncNamePitch" local func = function(_,_,x,z) input_entered(x,z,0) end self.setVar(funcName, func) self.createInput({ input_function=funcName, function_owner=self, label="input", alignment=2, position={-3.4,0.35,-0.21}, rotation={0,0,0}, height=420, width=1400, font_size=400, color={57/255,46/255,40/255}, font_color={1,1,1}, value=pitch, validation=3 -- int (1 = None, 2 = Integer, 3 = Float, 4 = Alphanumeric, 5 = Username, 6 = Name), }) local funcName = "inputFuncNameDistance" local func = function(_,_,x,z) input_entered(x,z,1) end self.setVar(funcName, func) self.createInput({ input_function=funcName, function_owner=self, label="input", alignment=4, position={3.4,0.35,-0.21}, rotation={0,0,0}, height=420, width=1400, font_size=400, color={57/255,46/255,40/255}, font_color={1,1,1}, value=distance, validation=3 -- int (1 = None, 2 = Integer, 3 = Float, 4 = Alphanumeric, 5 = Username, 6 = Name), }) end --Center button and -5 - +5 buttons function createButtons() self.createButton({ click_function="click_setCamera", function_owner=self, position={0,0.4,0}, height=900, width=900, color={1,1,1,0}, tooltip="Set camera to this angle" }) for i, ref in ipairs(ref_modifyPitchButtons) do local funcName = "pitchModifyFunction_"..i self.setVar(funcName, ref.func) local pos = {-3.4+ref.offset,0.3,0.6} self.createButton({ click_function=funcName, function_owner=self, position=pos, height=240, width=320, color={1,1,1,0} }) end for i, ref in ipairs(ref_modifyDistanceButtons) do local funcName = "distanceModifyFunction_"..i self.setVar(funcName, ref.func) local pos = {3.4+ref.offset,0.3,0.6} self.createButton({ click_function=funcName, function_owner=self, position=pos, height=240, width=320, color={1,1,1,0} }) end end --Data tables used in button creation ref_modifyPitchButtons = { {offset=-0.37, func=function() click_modify(-1, 0) end}, {offset=-1.11, func=function() click_modify(-5, 0) end}, {offset=0.37, func=function() click_modify(1, 0) end}, {offset=1.11, func=function() click_modify(5, 0) end}, } ref_modifyDistanceButtons = { {offset=-0.37, func=function() click_modify(-1, 1) end}, {offset=-1.11, func=function() click_modify(-5, 1) end}, {offset=0.37, func=function() click_modify(1, 1) end}, {offset=1.11, func=function() click_modify(5, 1) end}, }