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


local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Lighting = game:GetService("Lighting")
local Teams = game:GetService("Teams")

local player = Players.LocalPlayer

-- ===== Параметры FOV (локальные) =====
local step = 5
local minFov = 20
local maxFov = 999
local currentFov = 70

RunService.RenderStepped:Connect(function()
	local camera = Workspace.CurrentCamera
	if camera and camera.FieldOfView ~= currentFov then
		camera.FieldOfView = currentFov
	end
end)

local function changeFov(delta)
	local camera = Workspace.CurrentCamera
	if not camera then return end
	currentFov = math.clamp(camera.FieldOfView + delta, minFov, maxFov)
	print("FOV:", currentFov)
end

if Workspace.CurrentCamera then
	currentFov = Workspace.CurrentCamera.FieldOfView
end

-- ===== Параметры рывка =====
local dashDistance = 5
local dashKey = Enum.KeyCode.G

local function dash()
	local character = player.Character
	if not character then return end
	local rootPart = character:FindFirstChild("HumanoidRootPart")
	local humanoid = character:FindFirstChildOfClass("Humanoid")
	if not rootPart or not humanoid or humanoid.Health <= 0 then return end

	local direction = rootPart.CFrame.LookVector * dashDistance
	local newPosition = rootPart.Position + direction
	rootPart.CFrame = CFrame.new(newPosition) * (rootPart.CFrame - rootPart.Position)
end

-- ===== Прыжок на V =====
local function superJump()
	local character = player.Character
	if not character then return end
	local humanoid = character:FindFirstChildOfClass("Humanoid")
	if not humanoid or humanoid.Health <= 0 then return end
	
	-- Проверяем, не в воздухе ли уже
	if humanoid.FloorMaterial == Enum.Material.Air then return end
	
	-- Устанавливаем прыжок (высота 15 студий)
	humanoid.JumpPower = 80 -- Стандартный JumpPower 50 даёт ~5 студий, 80 даёт ~15 студий
	humanoid:Jump()
end

-- ===== Хилл до фула на J =====
local function healToFull()
	local character = player.Character
	if not character then return end
	local humanoid = character:FindFirstChildOfClass("Humanoid")
	if not humanoid or humanoid.Health <= 0 then return end
	
	local maxHealth = humanoid.MaxHealth
	local currentHealth = humanoid.Health
	
	if currentHealth < maxHealth then
		humanoid.Health = maxHealth
		print("Исцелён до максимума")
		
		-- Визуальный эффект исцеления
		local healText = Instance.new("BillboardGui")
		healText.Size = UDim2.new(0, 100, 0, 30)
		healText.StudsOffset = Vector3.new(0, 3, 0)
		healText.AlwaysOnTop = true
		
		local root = character:FindFirstChild("HumanoidRootPart")
		if root then
			healText.Parent = root
		else
			healText.Parent = character
		end
		
		local textLabel = Instance.new("TextLabel")
		textLabel.Size = UDim2.new(1, 0, 1, 0)
		textLabel.BackgroundTransparency = 1
		textLabel.Text = "+" .. math.floor(maxHealth - currentHealth) .. " ❤️"
		textLabel.TextColor3 = Color3.new(0, 1, 0)
		textLabel.TextSize = 20
		textLabel.Font = Enum.Font.GothamBold
		textLabel.Parent = healText
		
		task.delay(1.5, function()
			if healText then healText:Destroy() end
		end)
	end
end

-- ===== Fullbright =====
local fullbrightEnabled = false
local originalLighting = {
	Brightness = Lighting.Brightness,
	Ambient = Lighting.Ambient,
	OutdoorAmbient = Lighting.OutdoorAmbient,
	FogEnd = Lighting.FogEnd,
	FogStart = Lighting.FogStart,
	FogColor = Lighting.FogColor,
	GlobalShadows = Lighting.GlobalShadows
}

local function toggleFullbright()
	fullbrightEnabled = not fullbrightEnabled
	if fullbrightEnabled then
		Lighting.Brightness = 2
		Lighting.Ambient = Color3.new(1, 1, 1)
		Lighting.OutdoorAmbient = Color3.new(1, 1, 1)
		Lighting.FogEnd = 9e9
		Lighting.FogStart = 0
		Lighting.GlobalShadows = false
		print("Fullbright включён (туман и тени убраны)")
	else
		Lighting.Brightness = originalLighting.Brightness
		Lighting.Ambient = originalLighting.Ambient
		Lighting.OutdoorAmbient = originalLighting.OutdoorAmbient
		Lighting.FogEnd = originalLighting.FogEnd
		Lighting.FogStart = originalLighting.FogStart
		Lighting.FogColor = originalLighting.FogColor
		Lighting.GlobalShadows = originalLighting.GlobalShadows
		print("Fullbright выключен")
	end
end

-- ===== NoFog (отдельное управление туманом) =====
local noFogEnabled = false
local previousFogSettings = {
	FogEnd = Lighting.FogEnd,
	FogStart = Lighting.FogStart
}

local function toggleNoFog()
	noFogEnabled = not noFogEnabled
	if noFogEnabled then
		previousFogSettings.FogEnd = Lighting.FogEnd
		previousFogSettings.FogStart = Lighting.FogStart
		Lighting.FogEnd = 9e9
		Lighting.FogStart = 0
		print("NoFog включён (туман убран)")
	else
		Lighting.FogEnd = previousFogSettings.FogEnd
		Lighting.FogStart = previousFogSettings.FogStart
		print("NoFog выключен")
	end
end

-- ===== Насыщенность (ColorCorrection) =====
local colorCorrection
local saturationLevels = { 0, 1.5, 3 }
local currentSaturationIndex = 1

local function ensureColorCorrection()
	if not colorCorrection or not colorCorrection.Parent then
		colorCorrection = Lighting:FindFirstChildOfClass("ColorCorrectionEffect") or Instance.new("ColorCorrectionEffect")
		colorCorrection.Name = "SecureColorCorrection"
		colorCorrection.Parent = Lighting
	end
	colorCorrection.Saturation = saturationLevels[currentSaturationIndex]
	colorCorrection.Brightness = 0
	colorCorrection.Contrast = 0
end

spawn(function()
	while true do
		task.wait(3)
		ensureColorCorrection()
	end
end)

local function cycleSaturation()
	currentSaturationIndex = currentSaturationIndex + 1
	if currentSaturationIndex > #saturationLevels then
		currentSaturationIndex = 1
	end
	ensureColorCorrection()
	local names = { "Нормальная", "Насыщенная", "Очень насыщенная" }
	print("Насыщенность:", names[currentSaturationIndex])
end

ensureColorCorrection()

-- ===== ESP (Killer Team - фиолетовый, Survival Team - розовый) =====
local espEnabled = false
local espHighlights = {}

-- Определение Killer Team по имени/команде
local function isKiller(targetPlayer)
	if targetPlayer == player then return false end
	
	local name = targetPlayer.Name:lower()
	local teamName = targetPlayer.Team and targetPlayer.Team.Name:lower() or ""
	
	-- Проверка по имени
	if name:find("killer") or name:find("убийца") or name:find("маньяк") or name:find("зомби") or name:find("монстр") or name:find("monster") then
		return true
	end
	
	-- Проверка по команде
	if teamName:find("killer") or teamName:find("убийца") or teamName:find("маньяк") or teamName:find("зомби") or teamName:find("монстр") or teamName:find("monster") then
		return true
	end
	
	return false
end

local function getPlayerColor(targetPlayer)
	if isKiller(targetPlayer) then
		return Color3.fromRGB(180, 100, 255) -- Фиолетовый
	else
		return Color3.fromRGB(255, 100, 200) -- Розовый
	end
end

local function updatePlayerESP(targetPlayer)
	local character = targetPlayer.Character
	if not character or targetPlayer == player then
		if espHighlights[targetPlayer] then
			espHighlights[targetPlayer]:Destroy()
			espHighlights[targetPlayer] = nil
		end
		return
	end

	local highlight = espHighlights[targetPlayer]
	local color = getPlayerColor(targetPlayer)

	if not highlight then
		highlight = Instance.new("Highlight")
		highlight.Name = "ESP_Highlight"
		highlight.FillColor = color
		highlight.OutlineColor = color
		highlight.FillTransparency = 0.5
		highlight.OutlineTransparency = 0
		highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
		highlight.Parent = character
		espHighlights[targetPlayer] = highlight
	else
		if highlight.FillColor ~= color then
			highlight.FillColor = color
			highlight.OutlineColor = color
		end
		if highlight.Parent ~= character then
			highlight.Parent = character
		end
	end
end

local function refreshESP()
	if not espEnabled then
		for target, highlight in pairs(espHighlights) do
			highlight:Destroy()
		end
		espHighlights = {}
		return
	end

	for _, targetPlayer in ipairs(Players:GetPlayers()) do
		updatePlayerESP(targetPlayer)
	end
end

local function setupESP()
	Players.PlayerAdded:Connect(function(newPlayer)
		newPlayer.CharacterAdded:Connect(function()
			task.wait(0.5)
			updatePlayerESP(newPlayer)
		end)
		if newPlayer.Character then
			task.wait(0.5)
			updatePlayerESP(newPlayer)
		end
		newPlayer:GetPropertyChangedSignal("Name"):Connect(function()
			updatePlayerESP(newPlayer)
		end)
	end)

	Players.PlayerRemoving:Connect(function(leavingPlayer)
		if espHighlights[leavingPlayer] then
			espHighlights[leavingPlayer]:Destroy()
			espHighlights[leavingPlayer] = nil
		end
	end)

	for _, targetPlayer in ipairs(Players:GetPlayers()) do
		targetPlayer:GetPropertyChangedSignal("Name"):Connect(function()
			updatePlayerESP(targetPlayer)
		end)
		if targetPlayer.Team then
			targetPlayer.Team:GetPropertyChangedSignal("Name"):Connect(function()
				updatePlayerESP(targetPlayer)
			end)
		end
	end

	player.CharacterAdded:Connect(function()
		task.wait(0.5)
		refreshESP()
	end)
end

setupESP()
refreshESP()

-- ===== Обработчик клавиш =====
UserInputService.InputBegan:Connect(function(input, gameProcessed)
	if gameProcessed then return end
	local key = input.KeyCode

	if key == Enum.KeyCode.F1 then
		changeFov(step)
	elseif key == Enum.KeyCode.F2 then
		changeFov(-step)

	elseif key == Enum.KeyCode.Delete then
		dashDistance = (dashDistance == 5) and 10 or 5
		print("Дистанция рывка:", dashDistance, "студий")

	elseif key == dashKey then
		dash()

	elseif key == Enum.KeyCode.V then
		superJump()

	elseif key == Enum.KeyCode.J then
		healToFull()

	elseif key == Enum.KeyCode.End then
		toggleFullbright()

	elseif key == Enum.KeyCode.F5 then
		cycleSaturation()

	elseif key == Enum.KeyCode.PageUp then
		toggleNoFog()

	elseif key == Enum.KeyCode.F8 then
		espEnabled = not espEnabled
		refreshESP()
		print("ESP " .. (espEnabled and "включён" or "выключен"))
	end
end)

print("Скрипт загружен. F1/F2 – FOV (макс. 999), G – рывок, Delete – дистанция, V – прыжок, J – исцеление, End – Fullbright, F5 – насыщенность, PgUp – NoFog, F8 – ESP (Killer - фиолетовый, Survival - розовый).")