707 lines
22 KiB
Plaintext
707 lines
22 KiB
Plaintext
--[[if game.Players.LocalPlayer.Name == "Player" then
|
|
return
|
|
end]]
|
|
|
|
-- Script Globals
|
|
local buildDeleteID = 36738185
|
|
local buildStamperID = 87198196
|
|
local buildGroupDraggerID = 36334760
|
|
local buildConfigID = 87240571
|
|
local buildRotateID = 0
|
|
|
|
local buildTools = {}
|
|
|
|
local player = nil
|
|
local backpack = nil
|
|
|
|
|
|
|
|
|
|
-- Functions
|
|
local function waitForProperty(instance, name)
|
|
while not instance[name] do
|
|
instance.Changed:wait()
|
|
end
|
|
end
|
|
|
|
local function waitForChild(instance, name)
|
|
while not instance:FindFirstChild(name) do
|
|
instance.ChildAdded:wait()
|
|
end
|
|
end
|
|
|
|
function getLatestPlayer()
|
|
waitForProperty(game.Players,"LocalPlayer")
|
|
player = game.Players.LocalPlayer
|
|
waitForChild(player,"Backpack")
|
|
backpack = player.Backpack
|
|
end
|
|
|
|
function backpackHasTool(tool)
|
|
local backpackChildren = backpack:GetChildren()
|
|
for i = 1, #backpackChildren do
|
|
if backpackChildren[i] == tool then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function getToolAssetID(assetID,toolName)
|
|
local newTool = game:GetService("InsertService"):LoadAsset(assetID)
|
|
newTool = newTool:FindFirstChild(toolName)
|
|
return newTool
|
|
end
|
|
|
|
function giveAssetId(assetID,toolName)
|
|
local theTool = getToolAssetID(assetID,toolName)
|
|
if theTool and not backpackHasTool(theTool) then
|
|
theTool.Parent = backpack
|
|
table.insert(buildTools,theTool)
|
|
end
|
|
end
|
|
|
|
function givePlayerBuildTools()
|
|
getLatestPlayer()
|
|
|
|
giveAssetId(buildStamperID,"StamperTool")
|
|
giveAssetId(buildDeleteID,"BuildDelete")
|
|
giveAssetId(buildGroupDraggerID,"BuildGroupDragger")
|
|
giveAssetId(buildRotateID,"BuildRotate")
|
|
giveAssetId(buildConfigID,"BuildConfiguration")
|
|
end
|
|
|
|
function takePlayerBuildTools()
|
|
for k,v in ipairs(buildTools) do
|
|
v.Parent = nil
|
|
end
|
|
buildTools = {}
|
|
end
|
|
|
|
|
|
|
|
print("start script")
|
|
-- Start Script
|
|
if game.CoreGui.RobloxGui.ControlFrame.BottomLeftControl:FindFirstChild("ToolButton") then -- we are still using old build tools (TODO: remove this when new tools are good enough)
|
|
print("old tools")
|
|
local localAssetBase = "rbxasset://textures/ui/"
|
|
|
|
local control = script.Parent:FindFirstChild("ControlFrame")
|
|
local bottomLeftControls
|
|
local buildTools
|
|
|
|
if control then
|
|
bottomLeftControls = control.BottomLeftControl
|
|
buildTools = control.BuildTools
|
|
else
|
|
bottomLeftControls = script.Parent.BottomLeftControl
|
|
buildTools = script.Parent.BuildTools
|
|
end
|
|
|
|
buildToolsVisible = false
|
|
|
|
-- used right now to push build tools down a bit (should change in client)
|
|
buildTools.Frame.Position = UDim2.new(-0.15,0,0.3,0)
|
|
|
|
bottomLeftControls.ToolButton.Image = localAssetBase .. "ToolButton.png"
|
|
|
|
local prevObject = nil
|
|
|
|
local tryCount = 0
|
|
|
|
local location = 0
|
|
|
|
local name
|
|
|
|
local buttons = {}
|
|
local value
|
|
|
|
local player
|
|
local backpack
|
|
|
|
local resetCon
|
|
|
|
local equippedTool
|
|
local selectedButton
|
|
|
|
-- the build tools
|
|
local buildResize
|
|
local buildClone
|
|
local buildInsert
|
|
local buildDragger
|
|
local buildColor
|
|
local buildGroupDragger
|
|
local buildSurface
|
|
local buildMaterial
|
|
local buildConfiguration
|
|
local buildDelete
|
|
|
|
-- the build tools asset ids
|
|
local buildResizeID = 36738142
|
|
local buildCloneID = 36017373
|
|
local buildInsertID = 36431591
|
|
local buildDraggerID = 36068233
|
|
local buildColorID = 35205409
|
|
local buildGroupDraggerID = 36334760
|
|
local buildSurfaceID = 35226945
|
|
local buildMaterialID = 35223828
|
|
local buildConfigurationID = 36270159
|
|
local buildDeleteID = 36738185
|
|
|
|
|
|
function waitForProperty(instance, name)
|
|
while not instance[name] do
|
|
instance.Changed:wait()
|
|
end
|
|
end
|
|
|
|
function waitForChild(instance, name)
|
|
while not instance:FindFirstChild(name) do
|
|
instance.ChildAdded:wait()
|
|
end
|
|
end
|
|
|
|
function setPlayerAndBackpack()
|
|
waitForProperty(game.Players,"LocalPlayer")
|
|
player = game.Players.LocalPlayer
|
|
backpack = player.Backpack
|
|
end
|
|
|
|
setPlayerAndBackpack()
|
|
|
|
function playerReset()
|
|
|
|
loadTools()
|
|
local prevObject = nil
|
|
local equippedTool = nil
|
|
setPlayerAndBackpack()
|
|
resetCon:disconnect()
|
|
resetCon = game.Players.LocalPlayer.CharacterAdded:connect(playerReset)
|
|
|
|
end
|
|
|
|
resetCon = game.Players.LocalPlayer.CharacterAdded:connect(playerReset)
|
|
|
|
function giveSelectedValue(tool)
|
|
|
|
if tool:FindFirstChild("SelectedButton") == nil then
|
|
local selected = Instance.new("ObjectValue")
|
|
selected.Name = "SelectedButton"
|
|
selected.RobloxLocked = true
|
|
|
|
if tool.Name == "BuildConfiguration" then
|
|
selected.Value = buildTools.Frame.MiscTools.PropertyTool
|
|
elseif tool.Name == "BuildInsert" then
|
|
selected.Value = buildTools.Frame
|
|
end
|
|
selected.Parent = tool
|
|
end
|
|
|
|
end
|
|
|
|
function loadTools()
|
|
-- load in all tools to decrease issues with loading, also don't have to keep reloading assets
|
|
buildResize = game:GetService("InsertService"):LoadAsset(buildResizeID)
|
|
buildResize = buildResize:FindFirstChild("BuildResize")
|
|
giveSelectedValue(buildResize)
|
|
buildResize.Parent = backpack
|
|
|
|
buildClone = game:GetService("InsertService"):LoadAsset(buildCloneID)
|
|
buildClone = buildClone:FindFirstChild("BuildClone")
|
|
giveSelectedValue(buildClone)
|
|
buildClone.Parent = backpack
|
|
|
|
buildInsert = game:GetService("InsertService"):LoadAsset(buildInsertID)
|
|
buildInsert = buildInsert:FindFirstChild("BuildInsert")
|
|
giveSelectedValue(buildInsert)
|
|
buildInsert.Parent = backpack
|
|
|
|
buildDragger = game:GetService("InsertService"):LoadAsset(buildDraggerID)
|
|
buildDragger = buildDragger:FindFirstChild("BuildDragger")
|
|
giveSelectedValue(buildDragger)
|
|
buildDragger.Parent = backpack
|
|
|
|
buildColor = game:GetService("InsertService"):LoadAsset(buildColorID)
|
|
buildColor = buildColor:FindFirstChild("BuildColorTester")
|
|
giveSelectedValue(buildColor)
|
|
buildColor.Parent = backpack
|
|
|
|
buildGroupDragger = game:GetService("InsertService"):LoadAsset(buildGroupDraggerID)
|
|
buildGroupDragger = buildGroupDragger:FindFirstChild("BuildGroupDragger")
|
|
giveSelectedValue(buildGroupDragger)
|
|
buildGroupDragger.Parent = backpack
|
|
|
|
buildSurface = game:GetService("InsertService"):LoadAsset(buildSurfaceID)
|
|
buildSurface = buildSurface:FindFirstChild("BuildSurfaceTest")
|
|
giveSelectedValue(buildSurface)
|
|
buildSurface.Parent = backpack
|
|
|
|
buildMaterial = game:GetService("InsertService"):LoadAsset(buildMaterialID)
|
|
buildMaterial = buildMaterial:FindFirstChild("BuildMaterialTest")
|
|
giveSelectedValue(buildMaterial)
|
|
buildMaterial.Parent = backpack
|
|
|
|
buildConfiguration = game:GetService("InsertService"):LoadAsset(buildConfigurationID)
|
|
buildConfiguration = buildConfiguration:FindFirstChild("BuildConfiguration")
|
|
giveSelectedValue(buildConfiguration)
|
|
buildConfiguration.Parent = backpack
|
|
|
|
buildDelete = game:GetService("InsertService"):LoadAsset(buildDeleteID)
|
|
buildDelete = buildDelete:FindFirstChild("BuildDelete")
|
|
giveSelectedValue(buildDelete)
|
|
buildDelete.Parent = backpack
|
|
end
|
|
loadTools()
|
|
|
|
waitForChild(buildTools,"SelectedButton")
|
|
|
|
buildTools.SelectedButton.Changed:connect(function(property)
|
|
|
|
if value == buildTools.SelectedButton.Value then return end
|
|
value = buildTools.SelectedButton.Value
|
|
|
|
selectedButton = buildTools.SelectedButton.Value
|
|
|
|
if equippedTool then
|
|
equippedTool.SelectedButton.Value = selectedButton
|
|
end
|
|
end)
|
|
|
|
|
|
|
|
local frames = buildTools.Frame:GetChildren()
|
|
for i = 1, #frames do
|
|
if frames[i]:IsA("Frame") and frames[i].Name ~= "Divs" then
|
|
local buttonSubSet = frames[i]:GetChildren()
|
|
for j = 1, #buttonSubSet do
|
|
table.insert(buttons,buttonSubSet[j])
|
|
end
|
|
end
|
|
end
|
|
|
|
function unEquipAnyItems()
|
|
|
|
playerItems = player.Character:GetChildren()
|
|
for i = 1, #playerItems do
|
|
if playerItems[i]:isA("Tool") or playerItems[i]:isA("HopperBin") then
|
|
playerItems[i].Parent = backpack
|
|
return
|
|
end
|
|
end
|
|
|
|
end
|
|
unEquipAnyItems()
|
|
|
|
--------------------- Build Bar Tool Tip Code -----------------------------
|
|
|
|
function setUpText(toolTip)
|
|
|
|
local name = toolTip.Parent.Name
|
|
if name == "CloneObject" then toolTip.Text = "Copy Part"
|
|
elseif name == "DeleteObject" then toolTip.Text = "Delete Part"
|
|
elseif name == "InsertObject" then toolTip.Text = "Insert Part"
|
|
elseif name == "PropertyTool" then toolTip.Text = "Edit Part"
|
|
elseif name == "GroupMove" then toolTip.Text = "Move Models and Parts"
|
|
elseif name == "PartMove" then toolTip.Text = "Move Parts"
|
|
elseif name == "ScaleObject" then toolTip.Text = "Resize a part"
|
|
elseif name == "InputSelector" then toolTip.Text = "Change Surface"
|
|
elseif name == "MaterialSelector" then toolTip.Text = "Change Material"
|
|
elseif name == "PaintTool" then toolTip.Text = "Change Color" end
|
|
|
|
end
|
|
|
|
local fadeSpeed = 0.1
|
|
function buildToolsTips()
|
|
|
|
local frame = Instance.new("TextLabel")
|
|
frame.Name = "ToolTip"
|
|
frame.Text = "Hi! I'm a ToolTip!"
|
|
frame.ZIndex = 10
|
|
frame.Size = UDim2.new(2,0,1,0)
|
|
frame.Position = UDim2.new(1,0,0,0)
|
|
frame.BackgroundColor3 = Color3.new(1,1,153/255)
|
|
frame.BackgroundTransparency = 1
|
|
frame.TextTransparency = 1
|
|
frame.TextWrap = true
|
|
|
|
for i = 1, #buttons do
|
|
local tip = frame:Clone()
|
|
tip.RobloxLocked = true
|
|
tip.Parent = buttons[i]
|
|
setUpText(tip)
|
|
local inside = Instance.new("BoolValue")
|
|
inside.Value = false
|
|
inside.RobloxLocked = true
|
|
tip.Parent.MouseEnter:connect(function()
|
|
inside.Value = true
|
|
wait(1.2)
|
|
if inside.Value then
|
|
while inside.Value and tip.BackgroundTransparency > 0 do
|
|
tip.BackgroundTransparency = tip.BackgroundTransparency - fadeSpeed
|
|
tip.TextTransparency = tip.TextTransparency - fadeSpeed
|
|
wait()
|
|
end
|
|
end
|
|
end)
|
|
tip.Parent.MouseLeave:connect(function()
|
|
inside.Value = false
|
|
tip.BackgroundTransparency = 1
|
|
tip.TextTransparency = 1
|
|
end)
|
|
tip.Parent.MouseButton1Click:connect(function()
|
|
inside.Value = false
|
|
tip.BackgroundTransparency = 1
|
|
tip.TextTransparency = 1
|
|
end)
|
|
end
|
|
end
|
|
|
|
--------------------- End Build Bar Tool Tip Code --------------------------
|
|
|
|
|
|
|
|
----------------------------- Reset Button Code ----------------------------
|
|
function reset(subset)
|
|
|
|
local buttons = subset:GetChildren()
|
|
if subset.Name == "AddDeleteTools" then
|
|
for i = 1, #buttons do
|
|
buttons[i].Selected = false
|
|
if buttons[i].Name == "CloneObject" then buttons[i].Image = localAssetBase .. "CloneButton.png"
|
|
elseif buttons[i].Name == "DeleteObject" then buttons[i].Image = localAssetBase .. "DeleteButton.png"
|
|
elseif buttons[i].Name == "InsertObject" then buttons[i].Image = localAssetBase .. "InsertButton.png" end
|
|
end
|
|
|
|
|
|
elseif subset.Name == "MiscTools" then
|
|
for i = 1, #buttons do
|
|
buttons[i].Selected = false
|
|
if buttons[i].Name == "PropertyTool" then buttons[i].Image = localAssetBase .. "PropertyButton.png" end
|
|
end
|
|
|
|
|
|
elseif subset.Name == "PhysicalTools" then
|
|
for i = 1, #buttons do
|
|
buttons[i].Selected = false
|
|
if buttons[i].Name == "GroupMove" then buttons[i].Image = localAssetBase .. "GroupMoveButton.png"
|
|
elseif buttons[i].Name == "PartMove" then buttons[i].Image = localAssetBase .."PartMoveButton.png"
|
|
elseif buttons[i].Name == "ScaleObject" then buttons[i].Image = localAssetBase .. "ScaleButton.png" end
|
|
end
|
|
|
|
|
|
elseif subset.Name == "PropertyTools" then
|
|
for i = 1, #buttons do
|
|
buttons[i].Selected = false
|
|
if buttons[i].Name == "InputSelector" then buttons[i].Image = localAssetBase .. "SurfaceButton.png"
|
|
elseif buttons[i].Name == "MaterialSelector" then buttons[i].Image = localAssetBase .. "MaterialButton.png"
|
|
elseif buttons[i].Name == "PaintTool" then buttons[i].Image = localAssetBase .. "PaintButton.png" end
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
function resetAllButtons()
|
|
|
|
local categories = buildTools.Frame:GetChildren()
|
|
for i = 1, #categories do
|
|
reset(categories[i])
|
|
end
|
|
|
|
end
|
|
|
|
----------------------------- End Reset Button Code -------------------------
|
|
resetAllButtons()
|
|
|
|
|
|
|
|
-- sets button to active image
|
|
function setButtonStateActive(Object, Name)
|
|
|
|
if Name == "BuildInsert" then Object.Image = localAssetBase .. "InsertButton_dn.png" Object.Selected = true
|
|
elseif Name == "BuildDelete" then Object.Image = localAssetBase .. "DeleteButton_dn.png" Object.Selected = true
|
|
elseif Name == "BuildClone" then Object.Image = localAssetBase .. "CloneButton_dn.png" Object.Selected = true
|
|
elseif Name == "BuildConfiguration" then Object.Image = localAssetBase .. "PropertyButton_dn.png" Object.Selected = true
|
|
elseif Name == "BuildDragger" then Object.Image = localAssetBase .. "PartMoveButton_dn.png" Object.Selected = true
|
|
elseif Name == "BuildGroupDragger" then Object.Image = localAssetBase .. "GroupMoveButton_dn.png" Object.Selected = true
|
|
elseif Name == "BuildResize" then Object.Image = localAssetBase .. "ScaleButton_dn.png" Object.Selected = true
|
|
elseif Name == "BuildSurfaceTest" then Object.Image = localAssetBase .. "SurfaceButton_dn.png" Object.Selected = true
|
|
elseif Name == "BuildMaterialTest" then Object.Image = localAssetBase .. "MaterialButton_dn.png" Object.Selected = true
|
|
elseif Name == "BuildColorTester" then Object.Image = localAssetBase .. "PaintButton_dn.png" Object.Selected = true
|
|
end
|
|
|
|
end
|
|
|
|
|
|
function removeTool(tool, Object)
|
|
|
|
playerItems = player.Characer:GetChildren()
|
|
for i = 1, #playerItems do
|
|
if playerItems[i].Name == tool and playerItems[i]:isA("Tool") then
|
|
playerItems[i].Parent = backpack
|
|
playerItems[i]:remove()
|
|
return
|
|
end
|
|
end
|
|
|
|
backpackStuff = backpack:GetChildren()
|
|
for i = 1, #backpackStuff do
|
|
if backpackStuff[i].Name == tool then
|
|
backpackStuff[i].Parent = nil
|
|
backpackStuff[i]:remove()
|
|
return
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function getTool(tool)
|
|
playerItems = player.Character:GetChildren()
|
|
for i = 1, #playerItems do
|
|
if playerItems[i].Name == tool then
|
|
if playerItems[i]:isA("Tool") then return playerItems[i], true end
|
|
end
|
|
end
|
|
|
|
backpackStuff = backpack:GetChildren()
|
|
for i = 1, #backpackStuff do
|
|
if backpackStuff[i].Name == tool then
|
|
return backpackStuff[i], false
|
|
end
|
|
end
|
|
end
|
|
|
|
function toolDeselection(Name,Object,id)
|
|
|
|
local hasTool, equipped = getTool(Name)
|
|
if equipped then
|
|
resetAllButtons()
|
|
unEquipAnyItems()
|
|
hasTool.Parent = nil
|
|
hasTool:remove()
|
|
|
|
if equippedTool then
|
|
equippedTool.Parent = nil
|
|
equippedTool:remove()
|
|
equippedTool = nil
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
|
|
-- Used to find allocated tool that we got at beginning of script
|
|
function getToolLocal(Name)
|
|
|
|
if Name == "BuildInsert" then return buildInsert
|
|
elseif Name == "BuildDelete" then return buildDelete
|
|
elseif Name == "BuildClone" then return buildClone
|
|
elseif Name == "BuildConfiguration" then return buildConfiguration
|
|
elseif Name == "BuildDragger" then return buildDragger
|
|
elseif Name == "BuildGroupDragger" then return buildGroupDragger
|
|
elseif Name == "BuildResize" then return buildResize
|
|
elseif Name == "BuildSurfaceTest" then return buildSurface
|
|
elseif Name == "BuildMaterialTest" then return buildMaterial
|
|
elseif Name == "BuildColorTester" then return buildColor
|
|
end
|
|
|
|
end
|
|
|
|
function assureTool(tool, id, Name)
|
|
|
|
if tool == nil or type(tool) ~= "userdata" or tool:FindFirstChild("Handle") == nil then
|
|
tool = game:GetService("InsertService"):LoadAsset(id)
|
|
|
|
local instances = tool:GetChildren()
|
|
if #instances == 0 then
|
|
tool:Remove()
|
|
return nil
|
|
end
|
|
|
|
tool = tool:FindFirstChild(Name)
|
|
tool.Parent = backpack
|
|
end
|
|
|
|
end
|
|
|
|
-- general function to get tool when button is clicked
|
|
function toolSelection(Name,Object,id)
|
|
local tool = nil
|
|
local hasTool, equipped = getTool(Name)
|
|
if equipped then
|
|
|
|
if hasTool:FindFirstChild("SelectedButton") == false then
|
|
giveSelectedValue(hasTool)
|
|
end
|
|
|
|
resetAllButtons()
|
|
unEquipAnyItems()
|
|
hasTool.Parent = nil
|
|
|
|
if equippedTool ~= nil then
|
|
equippedTool.Parent = backpack
|
|
end
|
|
|
|
elseif hasTool then
|
|
|
|
-- failsafe to make sure we load in tool, no matter what
|
|
assureTool(hasTool,id, Name)
|
|
if hasTool == nil then return nil end
|
|
|
|
unEquipAnyItems()
|
|
Object.Selected = true
|
|
hasTool.Parent = player.Character
|
|
equippedTool = hasTool
|
|
hasTool.Unequipped:connect(function() resetAllButtons() end)
|
|
setButtonStateActive(Object, Name)
|
|
|
|
else
|
|
|
|
-- first try to find tool we already loaded in
|
|
tool = getToolLocal(Name)
|
|
|
|
-- failsafe to make sure we load in tool, no matter what
|
|
assureTool(tool,id, Name)
|
|
if tool == nil then return nil end
|
|
|
|
if tool then
|
|
|
|
if tool:FindFirstChild("SelectedButton") == nil then
|
|
local selected = Instance.new("ObjectValue")
|
|
selected.Name = "SelectedButton"
|
|
selected.RobloxLocked = true
|
|
|
|
if Name == "BuildConfiguration" then
|
|
selected.Value = buildTools.Frame.MiscTools.PropertyTool
|
|
elseif Name == "BuildInsert" then
|
|
selected.Value = buildTools.Frame
|
|
end
|
|
|
|
selected.Parent = tool
|
|
end
|
|
|
|
unEquipAnyItems()
|
|
if equippedTool ~= nil then
|
|
if prevObject then resetAllButtons() end
|
|
equippedTool.Parent = backpack
|
|
end
|
|
|
|
equippedTool = tool
|
|
equippedTool.Parent = player.Character
|
|
|
|
Object.Selected = true
|
|
equippedTool.Unequipped:connect(function() resetAllButtons() end)
|
|
setButtonStateActive(Object, Name)
|
|
end
|
|
end
|
|
prevObject = Object
|
|
end
|
|
|
|
|
|
-- used to animate the tool bar open/close
|
|
local scrollSpeed = 0.01
|
|
function openCloseTools()
|
|
buildToolsVisible = not buildToolsVisible
|
|
if buildToolsVisible then
|
|
bottomLeftControls.ToolButton.Image = localAssetBase .. "ToolButton_dn.png"
|
|
buildTools.Frame.CloseButton.Image = localAssetBase .. "CloseButton.png"
|
|
buildTools.Frame.Size = UDim2.new(0.15,0,0.57,0)
|
|
buildTools.Frame.Position = UDim2.new(-0.1, 0,buildTools.Frame.Position.Y.Scale,0)
|
|
while buildTools.Frame.Position.X.Scale < -0.01 and buildToolsVisible do
|
|
buildTools.Frame.Position = UDim2.new(buildTools.Frame.Position.X.Scale + scrollSpeed, 0,buildTools.Frame.Position.Y.Scale,0)
|
|
wait()
|
|
end
|
|
buildTools.Frame.Position = UDim2.new(0, 0,buildTools.Frame.Position.Y.Scale,0)
|
|
else
|
|
bottomLeftControls.ToolButton.Image = localAssetBase .. "ToolButton.png"
|
|
while buildTools.Frame.AbsolutePosition.X + buildTools.Frame.AbsoluteSize.X > 0 and not buildToolsVisible do
|
|
buildTools.Frame.Position = UDim2.new(buildTools.Frame.Position.X.Scale - scrollSpeed, 0,buildTools.Frame.Position.Y.Scale,0)
|
|
wait()
|
|
end
|
|
buildTools.Frame.Size = UDim2.new(0,buildTools.Frame.AbsoluteSize.X,buildTools.Frame.Size.Y.Scale,buildTools.Frame.Size.Y.Offset)
|
|
buildTools.Frame.Position = UDim2.new(0,-buildTools.Frame.AbsoluteSize.X,buildTools.Frame.Position.Y.Scale,buildTools.Frame.Position.Y.Offset)
|
|
end
|
|
end
|
|
|
|
-- setup tool button listeners
|
|
bottomLeftControls.ToolButton.MouseButton1Click:connect(openCloseTools)
|
|
bottomLeftControls.ToolButton.MouseEnter:connect(function() if not buildToolsVisible then bottomLeftControls.ToolButton.Image = localAssetBase .. "ToolButton_dn.png" end end)
|
|
bottomLeftControls.ToolButton.MouseLeave:connect(function() if not buildToolsVisible then bottomLeftControls.ToolButton.Image = localAssetBase .. "ToolButton.png" end end)
|
|
|
|
-- close button on build tools
|
|
buildTools.Frame.CloseButton.MouseButton1Click:connect(openCloseTools)
|
|
buildTools.Frame.CloseButton.MouseEnter:connect(function() buildTools.Frame.CloseButton.Image = localAssetBase .. "CloseButton_dn.png" end)
|
|
buildTools.Frame.CloseButton.MouseLeave:connect(function() buildTools.Frame.CloseButton.Image = localAssetBase .. "CloseButton.png" end)
|
|
|
|
buildToolsTips()
|
|
|
|
-- Add/Delete Tools
|
|
buildTools.Frame.AddDeleteTools.DeleteObject.MouseButton1Click:connect(function()
|
|
toolSelection("BuildDelete", buildTools.Frame.AddDeleteTools.DeleteObject,buildDeleteID) end)
|
|
buildTools.Frame.AddDeleteTools.CloneObject.MouseButton1Click:connect(function()
|
|
toolSelection("BuildClone",buildTools.Frame.AddDeleteTools.CloneObject,buildCloneID) end)
|
|
buildTools.Frame.AddDeleteTools.InsertObject.MouseButton1Click:connect(function()
|
|
toolSelection("BuildInsert",buildTools.Frame.AddDeleteTools.InsertObject,buildInsertID)
|
|
if(buildTools.Frame:FindFirstChild("InsertToolboxMain")) then
|
|
buildTools.Frame.InsertToolboxMain.InsertMainDialog.InsertTab.CloseButton.ClosedState.Changed:connect(function(value)
|
|
if value == true then
|
|
toolSelection("BuildInsert",buildTools.Frame.AddDeleteTools.InsertObject,buildInsertID)
|
|
if(buildTools.Frame:FindFirstChild("InsertToolboxMain")) then
|
|
buildTools.Frame.InsertToolboxMain.InsertMainDialog.InsertTab.CloseButton.ClosedState.Value = false
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
|
|
end)
|
|
|
|
-- Physical Tools
|
|
buildTools.Frame.PhysicalTools.ScaleObject.MouseButton1Click:connect(function()
|
|
toolSelection("BuildResize",buildTools.Frame.PhysicalTools.ScaleObject, buildResizeID) end)
|
|
--[[buildTools.Frame.PhysicalTools.PartMove.MouseButton1Click:connect(function()
|
|
toolSelection("BuildDragger",buildTools.Frame.PhysicalTools.PartMove,buildDraggerID) end)]]
|
|
buildTools.Frame.PhysicalTools.GroupMove.MouseButton1Click:connect(function()
|
|
toolSelection("BuildGroupDragger",buildTools.Frame.PhysicalTools.GroupMove,buildGroupDraggerID) end)
|
|
|
|
-- Property Tools
|
|
buildTools.Frame.PropertyTools.MaterialSelector.MouseButton1Click:connect(function()
|
|
toolSelection("BuildMaterialTest",buildTools.Frame.PropertyTools.MaterialSelector,buildMaterialID) end)
|
|
buildTools.Frame.PropertyTools.MaterialSelector.MaterialMenu.CloseButton.ClosedState.Changed:connect(function(value)
|
|
if value == true then
|
|
toolSelection("BuildMaterialTest",buildTools.Frame.PropertyTools.MaterialSelector,buildMaterialID)
|
|
buildTools.Frame.PropertyTools.MaterialSelector.MaterialMenu.CloseButton.ClosedState.Value = false
|
|
end
|
|
end)
|
|
buildTools.Frame.PropertyTools.PaintTool.MouseButton1Click:connect(function()
|
|
toolSelection("BuildColorTester",buildTools.Frame.PropertyTools.PaintTool, buildColorID) end)
|
|
buildTools.Frame.PropertyTools.PaintTool.PaintMenu.CloseButton.ClosedState.Changed:connect(function(value)
|
|
if value == true then
|
|
toolSelection("BuildColorTester",buildTools.Frame.PropertyTools.PaintTool,buildColorID)
|
|
buildTools.Frame.PropertyTools.PaintTool.PaintMenu.CloseButton.ClosedState.Value = false
|
|
end
|
|
end)
|
|
buildTools.Frame.PropertyTools.InputSelector.MouseButton1Click:connect(function()
|
|
toolSelection("BuildSurfaceTest",buildTools.Frame.PropertyTools.InputSelector, buildSurfaceID) end)
|
|
buildTools.Frame.PropertyTools.InputSelector.SurfaceMenu.CloseButton.ClosedState.Changed:connect(function(value)
|
|
if value == true then
|
|
toolSelection("BuildSurfaceTest",buildTools.Frame.PropertyTools.InputSelector,buildSurfaceID)
|
|
buildTools.Frame.PropertyTools.InputSelector.SurfaceMenu.CloseButton.ClosedState.Value = false
|
|
end
|
|
end)
|
|
|
|
-- Misc Tools
|
|
buildTools.Frame.MiscTools.PropertyTool.MouseButton1Click:connect(function()
|
|
toolSelection("BuildConfiguration",buildTools.Frame.MiscTools.PropertyTool, buildConfigurationID) end)
|
|
|
|
else -- we are using new build tools
|
|
getLatestPlayer()
|
|
|
|
givePlayerBuildTools()
|
|
|
|
-- If player dies, we make sure to give them build tools again
|
|
player.CharacterAdded:connect(function()
|
|
takePlayerBuildTools()
|
|
givePlayerBuildTools()
|
|
end)
|
|
end |