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


--[[
  Комбинированный скрипт (с обходом античита Violence District) - ИСПРАВЛЕННАЯ ВЕРСИЯ:
    • FOV: F1 – увеличить, F2 – уменьшить (локально, применяется каждый кадр, макс. 999)
    • Dash: G – рывок вперёд, Delete – переключение дистанции (5 ↔ 10 ↔ 15 ↔ 20 ↔ 25 ↔ 30)
    • Fullbright: End – включить/выключить (через Lighting + убирает туман и тени)
    • Насыщенность: F5 – циклическое переключение (норма → насыщенно → очень насыщенно)
    • NoFog: PgUp – включить/выключить (убирает туман, независимо от Fullbright)
    • ESP: F8 – Killer Team (фиолетовый), Survival Team (розовый)
    • Jump: V – прыжок (высота 15 студий)
    • Heal: J – полное исцеление
    • Screen Stretch: Y – включить/выключить растяжение экрана
--]]

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 player = Players.LocalPlayer

-- ===== Screen Stretch (растяжение экрана) =====
local stretchEnabled = false
local stretchConnection = nil

-- Таблица разрешений для растяжения
local resolutions = {
    ["1080x1080"] = CFrame.new(0, 0, 0, 1, 0, 0, 0, 0.35, 0, 0, 0, 1),
    ["1920x1080"] = CFrame.new(0, 0, 0, 1, 0, 0, 0, 0.65, 0, 0, 0, 1),
    ["2560x1440"] = CFrame.new(0, 0, 0, 1, 0, 0, 0, 0.8895, 0, 0, 0, 1)
}

local resolutionName = "1920x1080" -- Можно менять на другое разрешение
local resolution = resolutions[resolutionName]

local function applyStretch()
    if not stretchEnabled then return end
    local camera = Workspace.CurrentCamera
    if camera then
        camera.CFrame = camera.CFrame * resolution
    end
end

local function toggleStretch()
    stretchEnabled = not stretchEnabled
    if stretchEnabled then
        if stretchConnection then stretchConnection:Disconnect() end
        stretchConnection = RunService.RenderStepped:Connect(applyStretch)
        print("Растяжение экрана включено")
    else
        if stretchConnection then stretchConnection:Disconnect() end
        stretchConnection = nil
        print("Растяжение экрана выключено")
    end
end

-- ===== Параметры 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 dashModes = {5, 10, 15, 20, 25, 30}
local dashModeIndex = 1
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

local function nextDashDistance()
	dashModeIndex = dashModeIndex % #dashModes + 1
	dashDistance = dashModes[dashModeIndex]
	print("Дистанция рывка:", dashDistance, "студий")
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
	
	-- Сохраняем оригинальный JumpPower и устанавливаем высокий для прыжка
	local originalJumpPower = humanoid.JumpPower
	humanoid.JumpPower = 80
	humanoid:Jump()
	
	-- Возвращаем оригинальный JumpPower после прыжка
	task.delay(0.1, function()
		if humanoid and humanoid.Parent then
			humanoid.JumpPower = originalJumpPower
		end
	end)
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 root = character:FindFirstChild("HumanoidRootPart")
		if root then
			local healText = Instance.new("BillboardGui")
			healText.Size = UDim2.new(0, 100, 0, 30)
			healText.StudsOffset = Vector3.new(0, 3, 0)
			healText.AlwaysOnTop = true
			healText.Parent = root
			
			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
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

task.spawn(function()
	while true do
		task.wait(3)
		pcall(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 ""
	
	-- Проверка по имени
	local killerKeywords = {"killer", "убийца", "маньяк", "зомби", "монстр", "monster", "demon", "дьявол", "devil"}
	for _, keyword in ipairs(killerKeywords) do
		if name:find(keyword) or teamName:find(keyword) then
			return true
		end
	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
		nextDashDistance()

	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 "выключен"))
		
	elseif key == Enum.KeyCode.Y then
		toggleStretch()
		print("Screen Stretch " .. (stretchEnabled and "включён" or "выключен"))
	end
end)

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