So I'm trying to edit a paint tool so it only works on the base that the player has selected to use. How Would I do this? Here's the script:
local Tool = script.Parent enabled = true local origTexture = Tool.TextureId game:GetService("ContentProvider"):Preload("rbxasset://icons/color_sel.png") function onButton1Down(mouse) if not enabled then return end enabled = false mouse.Icon = "rbxasset://textures\\GunWaitCursor.png" wait(.5) mouse.Icon = "rbxasset://textures\\GunCursor.png" enabled = true end local selectionBox local selectionLasso local inGui = false local inPalette = false local selectedButtonTable = {} local oldButton = nil function onMouseLeave(hoverSelection) if oldButton ~= nil then local notSelected = true local selectionText = "" for key, value in pairs(selectedButtonTable) do if oldButton == value then notSelected = false else selectionText = value.BackgroundColor.Name end end if notSelected then hoverSelection.Text = selectionText oldButton.Parent.BackgroundColor = BrickColor.Black() end end oldButton = nil end function onMouseEnter(hoverSelection, guiButton) onMouseLeave(hoverSelection) hoverSelection.Text = guiButton.BackgroundColor.Name if guiButton ~= selectedButton then guiButton.Parent.BackgroundColor = BrickColor.White() oldButton = guiButton end end function onMouseUp(colorHolder, paletteFrame, guiButton) if selectedButtonTable[colorHolder] ~= nil then selectedButtonTable[colorHolder].Parent.BackgroundColor = BrickColor.Black() end guiButton.Parent.BackgroundColor = BrickColor.Yellow() colorHolder.BackgroundColor = guiButton.BackgroundColor selectionBox.Color = guiButton.BackgroundColor selectionLasso.Color = guiButton.BackgroundColor Tool.Value.Value = guiButton.BackgroundColor selectedButtonTable[colorHolder] = guiButton onMouseLeavePalette(paletteFrame) print("Selected Color: " .. guiButton.BackgroundColor.Name) end function onShowColorDialog(paletteFrame) paletteFrame.Visible = true end function setSelectionBox(part) unsetSelectionBox() selectionBox.Adornee = part selectionLasso.Part = part end function unsetSelectionBox() selectionBox.Adornee = nil selectionLasso.Part = nil end function onMouseEnterGui(mouse) mouse.Icon ="rbxasset://textures\\ArrowCursor.png" unsetSelectionBox() inGui = true end function onMouseLeaveGui(mouse) inGui = false end function onMouseEnterPalette(mouse) mouse.Icon ="rbxasset://textures\\ArrowCursor.png" unsetSelectionBox() inPalette = true end function onMouseLeavePalette(paletteFrame, mouse) paletteFrame.Visible = false inPalette = false end local primaryColor = nil function buildGui(root, mouse) local mainFrame = Instance.new("Frame") mainFrame.Position = UDim2.new(0.0, 0, 1.0, -250) mainFrame.Size = UDim2.new(0.0, 200, 0.0, 250) mainFrame.Transparency = 1.0 mainFrame.Parent = root local paletteFrame = Instance.new("Frame") paletteFrame.Position = UDim2.new(0.0, 0, 0.0, 0) paletteFrame.Size = UDim2.new(1.0, 0, 4.0/5, 0) paletteFrame.BackgroundColor = BrickColor.Black() paletteFrame.Visible = false paletteFrame.Parent = mainFrame paletteFrame.MouseEnter:connect(function() print("EnterPalette") onMouseEnterPalette(mouse) end) paletteFrame.MouseLeave:connect(function() print("LeavePalette") onMouseLeavePalette(paletteFrame, mouse) end) local sideBar = Instance.new("Frame") sideBar.Position = UDim2.new(0.0, 0, 4.0/5, 0) sideBar.Size = UDim2.new(1.0, 0, 1.0/5, 0) sideBar.BackgroundColor = BrickColor.Black() sideBar.Parent = mainFrame sideBar.MouseEnter:connect(function() onMouseEnterGui(mouse) end) sideBar.MouseLeave:connect(function() onMouseLeaveGui(mouse) end) primaryColor = Instance.new("TextButton") primaryColor.Position = UDim2.new(0.75, 1, 0.0, 1) primaryColor.Size = UDim2.new(0.25, -2, 1.0, -2) primaryColor.Text = "" primaryColor.BackgroundColor = Tool.Value.Value primaryColor.BorderColor = BrickColor.Black() primaryColor.BorderSizePixel = 1 primaryColor.Parent = sideBar primaryColor.MouseButton1Down:connect(function() print("Showdialog") onShowColorDialog(paletteFrame) end) local hoverSelection = Instance.new("TextLabel") hoverSelection.Position = UDim2.new(0.0, 0, 0.0, 0) hoverSelection.Size = UDim2.new(0.75, 0, 1.0, 0) hoverSelection.Text = "" hoverSelection.BackgroundColor = BrickColor.Black() hoverSelection.TextColor = BrickColor.White() hoverSelection.Text = primaryColor.BackgroundColor.Name hoverSelection.Parent = sideBar --local secondaryColor = Instance.new("TextButton") --secondaryColor.Position = UDim2.new(0.75, 0, 0.0, 0) --secondaryColor.Size = UDim2.new(0.25, 0, 1.0, 0) --secondaryColor.Text = "" --secondaryColor.BackgroundColor = BrickColor.Black() --secondaryColor.Parent = sideBar for xOffset = 0, 7 do for yOffset = 0,7 do local guiFrame = Instance.new("Frame") guiFrame.Position = UDim2.new(1.0/8 * xOffset, 0, 1.0/8*yOffset, 0) guiFrame.Size = UDim2.new(1.0/8, 0, 1.0/8, 0) guiFrame.BackgroundColor = BrickColor.Black() guiFrame.BorderSizePixel = 0 guiFrame.Parent = paletteFrame local guiButton = Instance.new("TextButton") guiButton.Position = UDim2.new(0.0, 2, 0.0, 2) guiButton.Size = UDim2.new(1.0, -4, 1.0, -4) guiButton.Text = "" guiButton.BorderSizePixel = 0 guiButton.AutoButtonColor = false guiButton.BackgroundColor = BrickColor.palette(xOffset + yOffset*8) guiButton.MouseEnter:connect(function() onMouseEnter(hoverSelection, guiButton) end) guiButton.MouseButton1Up:connect(function() onMouseUp(primaryColor, paletteFrame, guiButton) end) --guiButton.MouseButton2Down:connect(function() onMouseClick(secondaryColor, guiButton) end) guiButton.Parent = guiFrame if guiButton.BackgroundColor == primaryColor.BackgroundColor then guiFrame.BackgroundColor = BrickColor.White() selectedButtonTable[primaryColor] = guiButton end end end mainFrame.MouseLeave:connect(function() onMouseLeave(hoverSelection) end) end function canSelectObject(part) return part and not (part.Locked) and (part.Position - Tool.Parent.Head.Position).Magnitude < 60 end function on3dButton1Down(mouse) local part = mouse.Target if canSelectObject(part) then if Instance.Lock(part) then part.BrickColor = primaryColor.BackgroundColor Instance.Unlock(part) end end end function on3dMouseMove(mouse) if not(inGui) and not(inPalette) then mouse.Icon ="rbxasset://textures\\FillCursor.png" local part = mouse.Target if canSelectObject(part) then setSelectionBox(part) else unsetSelectionBox() end end end local guiMain function onEquippedLocal(mouse) Tool.TextureId = "rbxasset://icons/color_sel.png" local character = script.Parent.Parent local player = game.Players:GetPlayerFromCharacter(character) guiMain = Instance.new("ScreenGui") guiMain.Parent = player.PlayerGui inGui = false inPalette = false mouse.Button1Down:connect(function() on3dButton1Down(mouse) end) mouse.Move:connect(function() on3dMouseMove(mouse) end) mouse.Icon ="rbxasset://textures\\FillCursor.png" selectionBox = Instance.new("SelectionBox") selectionBox.Color = Tool.Value.Value selectionBox.Adornee = nil selectionBox.Parent = player.PlayerGui selectionLasso = Instance.new("SelectionPartLasso") selectionLasso.Name = "Model Delete Lasso" selectionLasso.Humanoid = character.Humanoid selectionLasso.Part = nil selectionLasso.Visible = true selectionLasso.archivable = false selectionLasso.Color = Tool.Value.Value selectionLasso.Parent = game.workspace buildGui(guiMain, mouse) end function onUnequippedLocal() Tool.TextureId = origTexture guiMain:Remove() selectionBox:Remove() selectionLasso:Remove() end --local part2 = Instance.new("Part") --if Instance.Lock(part2) then -- Instance.Unlock(part2) --end Tool.Equipped:connect(onEquippedLocal) Tool.Unequipped:connect(onUnequippedLocal)