Загрузка данных


-- Создание интерфейса (ScreenGui)
local player = game.Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "DinaxaliseFogMenu"
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui

-- Главное окно
local mainFrame = Instance.new("Frame")
mainFrame.Size = UUDim2.new(0, 250, 0, 320)
mainFrame.Position = UDim2.new(0.5, -125, 0.4, -160)
mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true -- Можно перетаскивать по экрану
mainFrame.Parent = screenGui

-- Скругление углов
local uiCorner = Instance.new("UICorner")
uiCorner.CornerRadius = UDim.new(0, 8)
uiCorner.Parent = mainFrame

-- Шапка меню
local header = Instance.new("TextLabel")
header.Size = UDim2.new(1, 0, 0, 35)
header.BackgroundColor3 = Color3.fromRGB(40, 40, 45)
header.Text = "  DINAXALISE FOG MENU"
header.TextColor3 = Color3.fromRGB(255, 255, 255)
header.Font = Enum.Font.SourceSansBold
header.TextSize = 16
header.TextXAlignment = Enum.TextXAlignment.Left
header.BorderSizePixel = 0
header.Parent = mainFrame

local headerCorner = Instance.new("UICorner")
headerCorner.CornerRadius = UDim.new(0, 8)
headerCorner.Parent = header

-- Кнопка закрытия [X]
local closeButton = Instance.new("TextButton")
closeButton.Size = UDim2.new(0, 30, 0, 30)
closeButton.Position = UDim2.new(1, -35, 0, 2)
closeButton.BackgroundTransparency = 1
closeButton.Text = "✕"
closeButton.TextColor3 = Color3.fromRGB(150, 150, 150)
closeButton.TextSize = 18
closeButton.Font = Enum.Font.SourceSansBold
closeButton.Parent = header

closeButton.MouseEnter:Connect(function() closeButton.TextColor3 = Color3.fromRGB(255, 75, 75) end)
closeButton.MouseLeave:Connect(function() closeButton.TextColor3 = Color3.fromRGB(150, 150, 150) end)
closeButton.MouseButton1Click:Connect(function() screenGui:Destroy() end)

-- Контентный контейнер
local container = Instance.new("Frame")
container.Size = UDim2.new(1, -20, 1, -45)
container.Position = UDim2.new(0, 10, 0, 40)
container.BackgroundTransparency = 1
container.Parent = mainFrame

-- Элементы Lighting
local lighting = game:GetService("Lighting")

-- Функция для создания текста ползунков
local function createLabel(text, position, parent)
	local label = Instance.new("TextLabel")
	label.Size = UDim2.new(1, 0, 0, 20)
	label.Position = position
	label.BackgroundTransparency = 1
	label.Text = text
	label.TextColor3 = Color3.fromRGB(200, 200, 200)
	label.Font = Enum.Font.SourceSans
	label.TextSize = 14
	label.TextXAlignment = Enum.TextXAlignment.Left
	label.Parent = parent
	return label
end

-- Включение тумана (Чекбокс + Квадрат цвета)
local fogEnableLabel = createLabel("Enable Fog", UDim2.new(0, 40, 0, 5), container)

local colorBox = Instance.new("TextButton")
colorBox.Size = UDim2.new(0, 20, 0, 20)
colorBox.Position = UDim2.new(0, 5, 0, 5)
colorBox.BackgroundColor3 = lighting.FogColor
colorBox.Text = ""
colorBox.BorderSizePixel = 1
colorBox.BorderColor3 = Color3.fromRGB(255, 255, 255)
colorBox.Parent = container

-- Простая палитра цветов (RGB слайдеры для точной настройки оттенка)
local colorPickerFrame = Instance.new("Frame")
colorPickerFrame.Size = UDim2.new(1, 0, 0, 85)
colorPickerFrame.Position = UDim2.new(0, 0, 0, 35)
colorPickerFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 28)
colorPickerFrame.BorderSizePixel = 0
colorPickerFrame.Visible = false
colorPickerFrame.Parent = container

local cpCorner = Instance.new("UICorner")
cpCorner.CornerRadius = UDim.new(0, 4)
cpCorner.Parent = colorPickerFrame

-- Открытие палитры по клику на квадратик
colorBox.MouseButton1Click:Connect(function()
	colorPickerFrame.Visible = not colorPickerFrame.Visible
end)

-- Функция создания слайдера
local function createSlider(min, max, default, position, parent, callback)
	local sliderFrame = Instance.new("Frame")
	sliderFrame.Size = UDim2.new(1, -10, 0, 6)
	sliderFrame.Position = position
	sliderFrame.BackgroundColor3 = Color3.fromRGB(60, 60, 65)
	sliderFrame.BorderSizePixel = 0
	sliderFrame.Parent = parent

	local sliderBtn = Instance.new("ImageButton")
	sliderBtn.Size = UDim2.new(0, 14, 0, 14)
	sliderBtn.Position = UDim2.new((default - min) / (max - min), -7, 0.5, -7)
	sliderBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
	sliderBtn.BorderSizePixel = 0
	sliderBtn.Parent = sliderFrame
	
	local btnCorner = Instance.new("UICorner")
	btnCorner.CornerRadius = UDim.new(1, 0)
	btnCorner.Parent = sliderBtn

	local dragging = false

	sliderBtn.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 then
			dragging = true
		end
	end)

	game:GetService("UserInputService").InputChanged:Connect(function(input)
		if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
			local mousePos = input.Position.X
			local sliderLeft = sliderFrame.AbsolutePosition.X
			local sliderWidth = sliderFrame.AbsoluteSize.X
			local percentage = math.clamp((mousePos - sliderLeft) / sliderWidth, 0, 1)
			
			sliderBtn.Position = UDim2.new(percentage, -7, 0.5, -7)
			local value = min + (max - min) * percentage
			callback(value)
		end
	end)

	game:GetService("UserInputService").InputEnded:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 then
			dragging = false
		end
	end)
end

-- Слайдеры для палитры (R, G, B)
local currentR, currentG, currentB = lighting.FogColor.R, lighting.FogColor.G, lighting.FogColor.B

local function updateFogColor()
	local newColor = Color3.new(currentR, currentG, currentB)
	colorBox.BackgroundColor3 = newColor
	lighting.FogColor = newColor
end

createLabel("R", UDim2.new(0, 5, 0, 5), colorPickerFrame)
createSlider(0, 1, currentR, UDim2.new(0, 25, 0, 15), colorPickerFrame, function(val)
	currentR = val
	updateFogColor()
end)

createLabel("G", UDim2.new(0, 5, 0, 30), colorPickerFrame)
createSlider(0, 1, currentG, UDim2.new(0, 25, 0, 40), colorPickerFrame, function(val)
	currentG = val
	updateFogColor()
end)

createLabel("B", UDim2.new(0, 5, 0, 55), colorPickerFrame)
createSlider(0, 1, currentB, UDim2.new(0, 25, 0, 65), colorPickerFrame, function(val)
	currentB = val
	updateFogColor()
end)


-- Настройки Дальности (FogStart / FogEnd)
-- Сдвигаем вниз, чтобы открывающаяся палитра их не перекрывала визуально
local slidersContainer = Instance.new("Frame")
slidersContainer.Size = UDim2.new(1, 0, 0, 140)
slidersContainer.Position = UDim2.new(0, 0, 0, 130)
slidersContainer.BackgroundTransparency = 1
slidersContainer.Parent = container

-- Ползунок: Fog Start (Начало рассеивания)
local startLabel = createLabel("Fog Start: " .. lighting.FogStart, UDim2.new(0, 5, 0, 5), slidersContainer)
createSlider(0, 500, lighting.FogStart, UDim2.new(0, 5, 0, 30), slidersContainer, function(val)
	lighting.FogStart = math.floor(val)
	startLabel.Text = "Fog Start: " .. math.floor(val)
end)

-- Ползунок: Fog End (Дальность/Конец тумана)
local endLabel = createLabel("Fog End: " .. lighting.FogEnd, UDim2.new(0, 5, 0, 45), slidersContainer)
createSlider(10, 2000, lighting.FogEnd, UDim2.new(0, 5, 0, 70), slidersContainer, function(val)
	lighting.FogEnd = math.floor(val)
	endLabel.Text = "Fog End: " .. math.floor(val)
end)

-- Ползунок: Отдельно для плотности/рассеивания (через кастомный FogEnd, если это классический туман)
-- Чем меньше FogEnd при маленьком FogStart — тем туман «гуще» (рассеивание сильнее)