-- Инициализация сервисов
local CoreGui = game:GetService("CoreGui")
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
-- Перехват Kick
if not hookfunction or not hookmetamethod then
print("Your exploit does not support hookfunction or hookmetamethod. Cannot block client-side Kick.")
else
local KickFunctions = {"Kick", "kick"}
for _, v in ipairs(KickFunctions) do
local oldKick
oldKick = hookfunction(LocalPlayer[v], function(self, ...)
print("Anti-cheat tried to call Kick: ", ...)
return
end)
end
local oldNamecall
oldNamecall = hookmetamethod(game, "__namecall", function(self, ...)
if self == LocalPlayer and table.find(KickFunctions, getnamecallmethod()) then
print("Anti-cheat tried to call Kick via namecall: ", ...)
return
end
return oldNamecall(self, ...)
end)
end
-- Перехват game:Shutdown()
if not hookfunction then
print("Your exploit does not support hookfunction. Cannot block Shutdown.")
else
local oldShutdown
oldShutdown = hookfunction(game.Shutdown, function(...)
print("Anti-cheat tried to call game:Shutdown(): ", ...)
return
end)
end
-- Функция для локального движения и прыжка через CFrame
local walkSpeed = 16 -- Скорость ходьбы
local jumpHeight = 7.5 -- Высота прыжка
local isJumping = false
local gravity = 196.2 -- Гравитация в Roblox
local function startMovement()
local jumpVelocity = math.sqrt(2 * gravity * jumpHeight)
local verticalVelocity = 0
RunService.RenderStepped:Connect(function(deltaTime)
-- Проверяем, есть ли персонаж
local character = LocalPlayer.Character
if not character then return end
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
local humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoidRootPart or not humanoid then return end
-- Получаем направление движения
local moveDirection = Vector3.new()
if UserInputService:IsKeyDown(Enum.KeyCode.W) then
moveDirection = moveDirection + Vector3.new(0, 0, -1)
end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then
moveDirection = moveDirection + Vector3.new(0, 0, 1)
end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then
moveDirection = moveDirection + Vector3.new(-1, 0, 0)
end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then
moveDirection = moveDirection + Vector3.new(1, 0, 0)
end
-- Нормализуем направление и применяем скорость
if moveDirection.Magnitude > 0 then
moveDirection = moveDirection.Unit
local camera = Workspace.CurrentCamera
local lookDirection = camera.CFrame.LookVector * Vector3.new(1, 0, 1)
local rightDirection = camera.CFrame.RightVector * Vector3.new(1, 0, 1)
local forward = moveDirection.Z * lookDirection
local right = moveDirection.X * rightDirection
moveDirection = (forward + right).Unit
end
-- Применяем движение
local newPosition = humanoidRootPart.Position + (moveDirection * walkSpeed * deltaTime)
-- Обработка прыжка
if isJumping then
verticalVelocity = verticalVelocity - gravity * deltaTime
newPosition = newPosition + Vector3.new(0, verticalVelocity * deltaTime, 0)
if newPosition.Y <= humanoidRootPart.Position.Y then
isJumping = false
verticalVelocity = 0
newPosition = Vector3.new(newPosition.X, humanoidRootPart.Position.Y, newPosition.Z)
end
end
-- Обновляем позицию через CFrame
humanoidRootPart.CFrame = CFrame.new(newPosition) * CFrame.Angles(0, humanoidRootPart.Orientation.Y * math.pi / 180, 0)
-- Имитация активности для сервера
pcall(function()
humanoid:Move(moveDirection, false)
end)
end)
-- Обработка прыжка
UserInputService.JumpRequest:Connect(function()
local character = LocalPlayer.Character
if not character then return end
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return end
if not isJumping then
isJumping = true
verticalVelocity = jumpVelocity
end
end)
end
-- Защита Humanoid от отключения
local function protectHumanoid()
RunService.Heartbeat:Connect(function()
local character = LocalPlayer.Character
if not character then return end
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
-- Проверяем, не уничтожен ли Humanoid
if not humanoid.Parent then
print("Humanoid was destroyed. Recreating...")
humanoid = Instance.new("Humanoid")
humanoid.Parent = character
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if humanoidRootPart then
humanoid.RootPart = humanoidRootPart
end
end
-- Проверяем состояние Humanoid
if humanoid:GetState() == Enum.HumanoidStateType.Dead or humanoid.WalkSpeed <= 0 then
humanoid.WalkSpeed = 16
humanoid.JumpPower = 50
print("Humanoid state reset.")
end
end
end)
end
-- Функция для удаления окон кика и отключения
local function removeKickPrompt()
local promptOverlay = CoreGui:WaitForChild("RobloxPromptGui"):WaitForChild("promptOverlay")
-- Проверяем существующие объекты
for _, child in pairs(promptOverlay:GetChildren()) do
if child.Name == "ErrorPrompt" or child.Name:find("Error") then
print("Found existing ErrorPrompt or Disconnect message. Removing...")
child:Destroy()
elseif child.Name == "BlurEffect" then
print("Found existing BlurEffect. Removing...")
child:Destroy()
end
end
-- Отслеживаем добавление новых объектов
local connection
connection = promptOverlay.ChildAdded:Connect(function(child)
if child.Name == "ErrorPrompt" or child.Name:find("Error") then
print("Found ErrorPrompt or Disconnect message. Removing...")
child:Destroy()
-- Запускаем движение и защиту Humanoid
startMovement()
protectHumanoid()
if connection then
connection:Disconnect()
print("Disconnected ChildAdded to prevent spam.")
end
elseif child.Name == "BlurEffect" then
print("Found BlurEffect. Removing...")
child:Destroy()
end
task.wait(0.1)
end)
print("ErrorPrompt and Disconnect remover with custom movement (no Remote Tamper risk) is now active.")
end
-- Запускаем функцию
removeKickPrompt()