CCCPaste

Script MenuSettings

-- Multi Toggle Hide NameTag & All GUI + Animasi Buka/Tutup Menu
-- LocalScript di StarterPlayerScripts (SPS)
-- By @KitooStudioLite

local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local StarterGui = game:GetService("StarterGui")

local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")

-- // Local Save (pakai Attribute di PlayerGui)
local function SaveSetting(name, state)
	PlayerGui:SetAttribute(name, state)
end

local function LoadSetting(name)
	return PlayerGui:GetAttribute(name) or false
end

-- // GUI
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "SettingsGUI"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = PlayerGui

-- Tombol Settings di pojok kanan atas
local OpenButton = Instance.new("TextButton")
OpenButton.Size = UDim2.new(0, 30, 0, 30)
OpenButton.Position = UDim2.new(1, -40, 0, 1)
OpenButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
OpenButton.Text = "⚙️"
OpenButton.TextSize = 26
OpenButton.TextColor3 = Color3.fromRGB(255, 255, 255)
OpenButton.Font = Enum.Font.GothamBold
OpenButton.Parent = ScreenGui
local UICorner0 = Instance.new("UICorner", OpenButton)
UICorner0.CornerRadius = UDim.new(0, 30)

-- Frame Menu
local Frame = Instance.new("Frame")
Frame.Size = UDim2.new(0, 220, 0, 170)
Frame.Position = UDim2.new(0.5, -110, 0.5, -85)
Frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
Frame.Visible = false
Frame.Parent = ScreenGui
local UICorner = Instance.new("UICorner", Frame)
UICorner.CornerRadius = UDim.new(0, 10)

-- Tambahkan efek transparansi dan scale untuk animasi
Frame.BackgroundTransparency = 1
Frame.Size = UDim2.new(0, 180, 0, 140)

local Title = Instance.new("TextLabel")
Title.Text = "Menu Settings"
Title.Size = UDim2.new(1, 0, 0, 45)
Title.BackgroundTransparency = 1
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.Font = Enum.Font.GothamBold
Title.TextSize = 22
Title.Parent = Frame

-- // Fungsi umum buat bikin toggle
local function CreateToggle(parent, labelText, orderY, attributeName, callback)
	local ToggleFrame = Instance.new("Frame")
	ToggleFrame.Size = UDim2.new(1, -20, 0, 50)
	ToggleFrame.Position = UDim2.new(0, 10, 0, orderY)
	ToggleFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
	ToggleFrame.Parent = parent
	local UICorner = Instance.new("UICorner", ToggleFrame)
	UICorner.CornerRadius = UDim.new(0, 10)

	local Label = Instance.new("TextLabel")
	Label.Text = labelText
	Label.Size = UDim2.new(0.6, 0, 1, 0)
	Label.BackgroundTransparency = 1
	Label.TextColor3 = Color3.fromRGB(255, 255, 255)
	Label.Font = Enum.Font.Gotham
	Label.TextSize = 18
	Label.TextXAlignment = Enum.TextXAlignment.Left
	Label.Position = UDim2.new(0, 10, 0, 0)
	Label.Parent = ToggleFrame

	local ToggleButton = Instance.new("Frame")
	ToggleButton.Size = UDim2.new(0, 50, 0, 28)
	ToggleButton.Position = UDim2.new(1, -55, 0.5, -14)
	ToggleButton.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
	ToggleButton.Parent = ToggleFrame
	local Corner = Instance.new("UICorner", ToggleButton)
	Corner.CornerRadius = UDim.new(1, 0)

	local Knob = Instance.new("Frame")
	Knob.Size = UDim2.new(0, 24, 0, 24)
	Knob.Position = UDim2.new(0, 2, 0, 2)
	Knob.BackgroundColor3 = Color3.fromRGB(200, 200, 200)
	Knob.Parent = ToggleButton
	local Corner2 = Instance.new("UICorner", Knob)
	Corner2.CornerRadius = UDim.new(1, 0)

	local state = LoadSetting(attributeName)

	local function UpdateVisual()
		local goalColor = state and Color3.fromRGB(0, 200, 80) or Color3.fromRGB(80, 80, 80)
		local knobGoal = state and UDim2.new(1, -26, 0, 2) or UDim2.new(0, 2, 0, 2)
		TweenService:Create(ToggleButton, TweenInfo.new(0.25), {BackgroundColor3 = goalColor}):Play()
		TweenService:Create(Knob, TweenInfo.new(0.25), {Position = knobGoal}):Play()
	end

	UpdateVisual()
	callback(state)

	ToggleButton.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
			state = not state
			SaveSetting(attributeName, state)
			UpdateVisual()
			callback(state)
		end
	end)
end

-- // Fungsi sembunyikan NameTag
local function SetNameTagsVisible(state)
	for _, plr in pairs(Players:GetPlayers()) do
		if plr.Character and plr.Character:FindFirstChild("Head") then
			for _, obj in pairs(plr.Character.Head:GetChildren()) do
				if obj:IsA("BillboardGui") then
					obj.Enabled = state
				end
			end
		end
	end
end

Players.PlayerAdded:Connect(function(plr)
	plr.CharacterAdded:Connect(function()
		task.wait(1)
		SetNameTagsVisible(not LoadSetting("HideNameTag"))
	end)
end)

-- // Fungsi sembunyikan semua GUI (kecuali SettingsGUI)
local function SetAllGUIVisible(state)
	for _, gui in pairs(PlayerGui:GetChildren()) do
		if gui:IsA("ScreenGui") and gui.Name ~= "SettingsGUI" then
			gui.Enabled = state
		end
	end

	StarterGui:SetCore("TopbarEnabled", state)
	pcall(function() StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Chat, state) end)
	pcall(function() StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, state) end)
	pcall(function() StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, state) end)
end

-- // Tambahkan toggles
CreateToggle(Frame, "Hide NameTags", 50, "HideNameTag", function(state)
	SetNameTagsVisible(not state)
end)

CreateToggle(Frame, "Hide All GUI", 110, "HideAllGUI", function(state)
	SetAllGUIVisible(not state)
end)

-- // Animasi buka/tutup menu
local isOpen = false
OpenButton.MouseButton1Click:Connect(function()
	isOpen = not isOpen

	if isOpen then
		Frame.Visible = true
		TweenService:Create(Frame, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
			BackgroundTransparency = 0,
			Size = UDim2.new(0, 220, 0, 170)
		}):Play()
	else
		local tween = TweenService:Create(Frame, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
			BackgroundTransparency = 1,
			Size = UDim2.new(0, 180, 0, 140)
		})
		tween:Play()
		tween.Completed:Wait()
		Frame.Visible = false
	end
end)