dont use this
Key RequiredUniversal

dont use this

Universal Scriptu857489093u857489093 1.3K views 21 executesUpdated Sep 12, 2025
Unrated
00
Lua Script•414 lines (12680 chars)
-- Merged Admin LocalScript with fixed WallWalk
-- Place in StarterPlayerScripts or a LocalScript under StarterGui (for admins)
-- NOTE: Only the wallwalk subsystem was replaced/updated. Everything else preserved.

-- Services
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local hrp = character:WaitForChild("HumanoidRootPart")

-- GUI
local screenGui = Instance.new("ScreenGui", player:WaitForChild("PlayerGui"))
screenGui.Name = "RainbowHackGui"
screenGui.ResetOnSpawn = false

local frame = Instance.new("Frame", screenGui)
frame.Size = UDim2.new(0, 300, 0, 280)
frame.Position = UDim2.new(0, 50, 0, 50)
frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
frame.Active = true
frame.Draggable = true
frame.BorderSizePixel = 0

-- Rainbow Outline
local outline = Instance.new("UIStroke", frame)
outline.Thickness = 3

-- Rainbow Effect
task.spawn(function()
	while true do
		for i = 0, 1, 0.01 do
			local color = Color3.fromHSV(i, 1, 1)
			outline.Color = color
			task.wait(0.03)
		end
	end
end)

-- UI Elements
local function createButton(name, yPos)
	local btn = Instance.new("TextButton", frame)
	btn.Size = UDim2.new(1, -20, 0, 25)
	btn.Position = UDim2.new(0, 10, 0, yPos)
	btn.Text = name
	btn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
	btn.TextColor3 = Color3.fromRGB(255, 255, 255)
	btn.BorderSizePixel = 0
	btn.Font = Enum.Font.SourceSans
	btn.TextSize = 18
	return btn
end

local function createBox(placeholder, yPos)
	local box = Instance.new("TextBox", frame)
	box.Size = UDim2.new(1, -20, 0, 25)
	box.Position = UDim2.new(0, 10, 0, yPos)
	box.PlaceholderText = placeholder
	box.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
	box.TextColor3 = Color3.fromRGB(255, 255, 255)
	box.BorderSizePixel = 0
	box.Font = Enum.Font.SourceSans
	box.TextSize = 18
	return box
end

-- Buttons
local flyBtn = createButton("Toggle Fly", 10)
local noclipBtn = createButton("Toggle NoClip", 40)
local wallwalkBtn = createButton("Toggle WallWalk", 70)
local speedBox = createBox("WalkSpeed (Default 16)", 100)
local jumpBox = createBox("JumpPower (Default 50)", 130)
local infJumpBtn = createButton("Toggle Inf Jump", 160) -- NEW BUTTON

-- Infinite Jump (toggleable now)
local infJump = false
UIS.JumpRequest:Connect(function()
	if infJump and humanoid then
		humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
	end
end)

-- Fly Function
local flying = false
local flyVel, flyGyro

local function setFly(state)
	flying = state
	if flying then
		-- if wallwalk is active, disable it while flying
		if wallwalk and startWallWalkUpdate then
			wallwalk = false
			pcall(stopWallWalk)
			pcall(stopWallWalkUpdate)
			wallwalkBtn.Text = "WallWalk (Off)"
		end

		flyVel = Instance.new("BodyVelocity", hrp)
		flyVel.Velocity = Vector3.zero
		flyVel.MaxForce = Vector3.new(1e5, 1e5, 1e5)

		flyGyro = Instance.new("BodyGyro", hrp)
		flyGyro.CFrame = hrp.CFrame
		flyGyro.MaxTorque = Vector3.new(1e5, 1e5, 1e5)

		RunService:BindToRenderStep("Fly", Enum.RenderPriority.Character.Value + 1, function()
			local move = Vector3.zero
			local cam = Workspace.CurrentCamera
			if UIS:IsKeyDown(Enum.KeyCode.W) then move = move + cam.CFrame.LookVector end
			if UIS:IsKeyDown(Enum.KeyCode.S) then move = move - cam.CFrame.LookVector end
			if UIS:IsKeyDown(Enum.KeyCode.A) then move = move - cam.CFrame.RightVector end
			if UIS:IsKeyDown(Enum.KeyCode.D) then move = move + cam.CFrame.RightVector end
			if UIS:IsKeyDown(Enum.KeyCode.Space) then move = move + Vector3.new(0, 1, 0) end
			if UIS:IsKeyDown(Enum.KeyCode.LeftShift) then move = move - Vector3.new(0, 1, 0) end

			flyVel.Velocity = move.Magnitude > 0 and move.Unit * 50 or Vector3.zero
			if flyGyro then flyGyro.CFrame = cam.CFrame end
		end)
	else
		if flyVel then flyVel:Destroy(); flyVel = nil end
		if flyGyro then flyGyro:Destroy(); flyGyro = nil end
		pcall(function() RunService:UnbindFromRenderStep("Fly") end)
	end
end

-- NoClip
local noclip = false
RunService.Stepped:Connect(function()
	if noclip and character and character.Parent then
		for _, part in pairs(character:GetDescendants()) do
			if part:IsA("BasePart") then
				part.CanCollide = false
			end
		end
	end
end)

-- ===== Fixed / Improved WallWalk Implementation (replaces old simple block) =====
local wallwalk = false -- toggled by GUI
local isWallWalking = false

-- Tunable parameters (adjust to taste)
local STICK_DISTANCE = 3            -- how far to raycast to find walls
local RAYCAST_ANGLE_COUNT = 7       -- number of rays around player
local STICK_FORCE = 60              -- base push strength into wall
local WALL_WALK_SPEED = 40          -- movement speed along wall
local MAX_STICK_TIME = 60           -- safety timeout seconds
local ORIENTATION_SMOOTH = 0.22     -- 0..1 lerp amount for smoothing orientation
local VERT_COMPENSATION = 18        -- upward velocity to counter gravity while wallwalking

-- Body objects
local stickBodyVelocity = nil
local stickBodyGyro = nil

local renderConn -- RenderStepped connection
local stickStartTime = 0

local function createBodies()
	if stickBodyVelocity then stickBodyVelocity:Destroy() end
	if stickBodyGyro then stickBodyGyro:Destroy() end

	stickBodyVelocity = Instance.new("BodyVelocity")
	stickBodyVelocity.MaxForce = Vector3.new(1e5, 1e5, 1e5)
	stickBodyVelocity.P = 3000
	stickBodyVelocity.Velocity = Vector3.new(0,0,0)
	stickBodyVelocity.Parent = hrp

	stickBodyGyro = Instance.new("BodyGyro")
	stickBodyGyro.MaxTorque = Vector3.new(1e5, 1e5, 1e5)
	stickBodyGyro.D = 200
	stickBodyGyro.Parent = hrp
end

local function destroyBodies()
	if stickBodyVelocity then
		pcall(function() stickBodyVelocity:Destroy() end)
		stickBodyVelocity = nil
	end
	if stickBodyGyro then
		pcall(function() stickBodyGyro:Destroy() end)
		stickBodyGyro = nil
	end
	-- restore humanoid autorotate
	if humanoid and humanoid.Parent then
		pcall(function() humanoid.AutoRotate = true end)
	end
end

-- Returns hit (RaycastResult) and distance from cast origin (or nil)
local function findWall()
	local origin = hrp.Position
	local bestHit = nil
	local bestDist = STICK_DISTANCE + 0.1

	local verticalOffsets = {0, 1, -1}
	for _, vOff in ipairs(verticalOffsets) do
		for i = 1, RAYCAST_ANGLE_COUNT do
			local theta = (i - 1) / RAYCAST_ANGLE_COUNT * math.pi * 2
			local dir = Vector3.new(math.cos(theta), 0, math.sin(theta))
			local castOrigin = origin + Vector3.new(0, vOff, 0)
			local params = RaycastParams.new()
			params.FilterDescendantsInstances = {character}
			params.FilterType = Enum.RaycastFilterType.Blacklist
			params.IgnoreWater = true
			local result = Workspace:Raycast(castOrigin, dir.Unit * STICK_DISTANCE, params)
			if result and result.Instance and result.Position then
				local dist = (result.Position - castOrigin).Magnitude
				if dist < bestDist then
					bestDist = dist
					bestHit = {Result = result, Dist = dist}
				end
			end
		end
	end

	return bestHit -- may be nil
end

local function wallProjectedVelocity(moveVector, wallNormal)
	local proj = moveVector - wallNormal * moveVector:Dot(wallNormal)
	if proj.Magnitude > 0.01 then
		return proj.Unit * WALL_WALK_SPEED
	else
		return Vector3.new(0,0,0)
	end
end

local function startWallWalk()
	if isWallWalking then return end
	isWallWalking = true
	stickStartTime = tick()
	createBodies()
	-- disable humanoid autorotate so BodyGyro controls orientation cleanly
	pcall(function() humanoid.AutoRotate = false end)
end

local function stopWallWalk()
	if not isWallWalking then return end
	isWallWalking = false
	destroyBodies()
end

local function wallWalkStep()
	-- if flying, don't try to wallwalk
	if flying then
		if isWallWalking then stopWallWalk() end
		return
	end

	if not wallwalk then
		if isWallWalking then stopWallWalk() end
		return
	end

	-- safety timeout
	if isWallWalking and (tick() - stickStartTime > MAX_STICK_TIME) then
		stopWallWalk()
		return
	end

	local hitInfo = findWall()
	if hitInfo and hitInfo.Result then
		local result = hitInfo.Result
		local normal = result.Normal or Vector3.new(0,0,0)
		local dist = hitInfo.Dist or 0.001

		if not isWallWalking then startWallWalk() end

		-- movement input relative to camera (XZ movement)
		local move = Vector3.new(0,0,0)
		local cam = Workspace.CurrentCamera
		local forward = Vector3.new(cam.CFrame.LookVector.X, 0, cam.CFrame.LookVector.Z)
		if forward.Magnitude > 0 then forward = forward.Unit end
		local right = Vector3.new(cam.CFrame.RightVector.X, 0, cam.CFrame.RightVector.Z)
		if right.Magnitude > 0 then right = right.Unit end

		if UIS:IsKeyDown(Enum.KeyCode.W) then move = move + forward end
		if UIS:IsKeyDown(Enum.KeyCode.S) then move = move - forward end
		if UIS:IsKeyDown(Enum.KeyCode.A) then move = move - right end
		if UIS:IsKeyDown(Enum.KeyCode.D) then move = move + right end
		-- vertical movement along wall
		if UIS:IsKeyDown(Enum.KeyCode.Space) then move = move + Vector3.new(0,1,0) end
		if UIS:IsKeyDown(Enum.KeyCode.LeftShift) then move = move - Vector3.new(0,1,0) end

		local desiredVel = wallProjectedVelocity(move, normal)

		-- scale push into wall by closeness (closer = stronger)
		local closeness = math.clamp(1 - (dist / STICK_DISTANCE), 0, 1)
		local pushInto = -normal * (STICK_FORCE * 0.1 * closeness)

		-- upward compensation to resist gravity while attached (tweak VERT_COMPENSATION)
		local verticalComp = Vector3.new(0, VERT_COMPENSATION * 0.1 * (0.6 + 0.4 * closeness), 0)

		if stickBodyVelocity then
			-- combine desired lateral surface movement, push into wall, and vertical compensation
			stickBodyVelocity.Velocity = desiredVel + pushInto + verticalComp
		end

		-- smooth orientation: orient so "up" = -normal, and look direction aligned with camera projected onto wall tangent
		if stickBodyGyro then
			local up = -normal.Unit
			local camLook = Workspace.CurrentCamera.CFrame.LookVector
			local lookDir = (camLook - up * camLook:Dot(up))
			if lookDir.Magnitude == 0 then
				lookDir = Vector3.new(0,0,-1)
			else
				lookDir = lookDir.Unit
			end
			local rightVec = lookDir:Cross(up).Unit
			local targetCFrame = CFrame.fromMatrix(hrp.Position, rightVec, up)

			-- smooth lerp from current gyro CFrame to target
			local current = stickBodyGyro.CFrame
			-- protect against nil
			if typeof(current) ~= "CFrame" then
				stickBodyGyro.CFrame = targetCFrame
			else
				stickBodyGyro.CFrame = current:Lerp(targetCFrame, ORIENTATION_SMOOTH)
			end
		end
	else
		-- no wall close: stop wallwalking
		if isWallWalking then stopWallWalk() end
	end
end

local function startWallWalkUpdate()
	if renderConn then return end
	renderConn = RunService.RenderStepped:Connect(function(dt)
		pcall(wallWalkStep)
	end)
end

local function stopWallWalkUpdate()
	if renderConn then
		renderConn:Disconnect()
		renderConn = nil
	end
end

-- Button Events (existing)
flyBtn.MouseButton1Click:Connect(function()
	setFly(not flying)
	flyBtn.Text = flying and "Flying (On)" or "Flying (Off)"
end)

noclipBtn.MouseButton1Click:Connect(function()
	noclip = not noclip
	noclipBtn.Text = noclip and "NoClip (On)" or "NoClip (Off)"
end)

wallwalkBtn.MouseButton1Click:Connect(function()
	wallwalk = not wallwalk
	wallwalkBtn.Text = wallwalk and "WallWalk (On)" or "WallWalk (Off)"
	if wallwalk then
		startWallWalkUpdate()
	else
		stopWallWalkUpdate()
		stopWallWalk()
	end
end)

infJumpBtn.MouseButton1Click:Connect(function()
	infJump = not infJump
	infJumpBtn.Text = infJump and "Inf Jump (On)" or "Inf Jump (Off)"
end)

speedBox.FocusLost:Connect(function()
	local val = tonumber(speedBox.Text)
	if val then
		humanoid.WalkSpeed = val
	end
end)

jumpBox.FocusLost:Connect(function()
	local val = tonumber(jumpBox.Text)
	if val then
		humanoid.JumpPower = val
	end
end)

-- Cleanup and respawn handling
player.CharacterAdded:Connect(function(char)
	-- update references
	character = char
	humanoid = character:WaitForChild("Humanoid")
	hrp = character:WaitForChild("HumanoidRootPart")

	-- ensure states off on respawn
	flying = false
	if flyVel then flyVel:Destroy(); flyVel = nil end
	if flyGyro then flyGyro:Destroy(); flyGyro = nil end
	pcall(function() RunService:UnbindFromRenderStep("Fly") end)

	noclip = false
	infJump = false
	wallwalk = false

	-- UI resets
	flyBtn.Text = "Toggle Fly"
	noclipBtn.Text = "Toggle NoClip"
	wallwalkBtn.Text = "Toggle WallWalk"
	infJumpBtn.Text = "Toggle Inf Jump"
	speedBox.Text = ""
	jumpBox.Text = ""

	-- stop wallwalk systems
	stopWallWalkUpdate()
	stopWallWalk()
end)

Features & Information

no use

Community Comments (1)

YouTube_KLTplsplsYouTube_KLTplsplsSep 12, 2025

wtat is this

More Scripts for Universal Scripts