-- FPE Game Camera Toggle, Infinite Sprint, Auto Block & Safe Zone Script local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer -- Wait for character local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local humanoidRootPart = character:WaitForChild("HumanoidRootPart") -- Camera state local isFirstPerson = false -- Stamina state local infStamina = false -- Auto Block state local autoBlock = false -- Safe Zone state local inSafeZone = false local savedPosition = nil local safePlatform = nil -- Create ScreenGui local screenGui = Instance.new("ScreenGui") screenGui.Name = "FPE_CameraStaminaGui" screenGui.ResetOnSpawn = false screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling screenGui.Parent = player:WaitForChild("PlayerGui") -- Create main frame with ultra clean design local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0, 280, 0, 240) mainFrame.Position = UDim2.new(0.5, -140, 0.08, 0) mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 28) mainFrame.BorderSizePixel = 0 mainFrame.ZIndex = 1 mainFrame.ClipsDescendants = false mainFrame.Parent = screenGui -- Add rounded corners to main frame local mainCorner = Instance.new("UICorner") mainCorner.CornerRadius = UDim.new(0, 16) mainCorner.Parent = mainFrame -- Add stroke/border for depth local mainStroke = Instance.new("UIStroke") mainStroke.Color = Color3.fromRGB(60, 60, 80) mainStroke.Thickness = 1 mainStroke.Transparency = 0.5 mainStroke.Parent = mainFrame -- Drag functionality variables local dragging = false local dragInput, mousePos, framePos -- Title bar (draggable area) local titleBar = Instance.new("Frame") titleBar.Size = UDim2.new(1, 0, 0, 45) titleBar.Position = UDim2.new(0, 0, 0, 0) titleBar.BackgroundColor3 = Color3.fromRGB(28, 28, 38) titleBar.BorderSizePixel = 0 titleBar.ZIndex = 2 titleBar.Parent = mainFrame local titleCorner = Instance.new("UICorner") titleCorner.CornerRadius = UDim.new(0, 16) titleCorner.Parent = titleBar -- Fix title bar bottom corners local titleFix = Instance.new("Frame") titleFix.Size = UDim2.new(1, 0, 0, 10) titleFix.Position = UDim2.new(0, 0, 1, -10) titleFix.BackgroundColor3 = Color3.fromRGB(28, 28, 38) titleFix.BorderSizePixel = 0 titleFix.ZIndex = 2 titleFix.Parent = titleBar -- Title text local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -50, 1, 0) title.Position = UDim2.new(0, 15, 0, 0) title.BackgroundTransparency = 1 title.Text = "FPE Controls" title.TextColor3 = Color3.fromRGB(255, 255, 255) title.Font = Enum.Font.GothamBold title.TextSize = 16 title.TextXAlignment = Enum.TextXAlignment.Left title.ZIndex = 3 title.Parent = titleBar -- Drag icon/indicator local dragIcon = Instance.new("TextLabel") dragIcon.Size = UDim2.new(0, 30, 0, 30) dragIcon.Position = UDim2.new(1, -40, 0, 7) dragIcon.BackgroundTransparency = 1 dragIcon.Text = "⋮⋮" dragIcon.TextColor3 = Color3.fromRGB(150, 150, 170) dragIcon.Font = Enum.Font.GothamBold dragIcon.TextSize = 18 dragIcon.ZIndex = 3 dragIcon.Parent = titleBar -- Content area local contentFrame = Instance.new("Frame") contentFrame.Size = UDim2.new(1, -30, 1, -60) contentFrame.Position = UDim2.new(0, 15, 0, 50) contentFrame.BackgroundTransparency = 1 contentFrame.ZIndex = 2 contentFrame.Parent = mainFrame -- Function to create button local function createButton(text, position, yPos) local button = Instance.new("TextButton") button.Size = UDim2.new(0, 180, 0, 40) button.Position = UDim2.new(0, 0, 0, yPos) button.BackgroundColor3 = Color3.fromRGB(40, 40, 55) button.BorderSizePixel = 0 button.AutoButtonColor = false button.Text = "" button.ZIndex = 3 button.Parent = contentFrame local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(0, 10) btnCorner.Parent = button local btnStroke = Instance.new("UIStroke") btnStroke.Color = Color3.fromRGB(70, 70, 90) btnStroke.Thickness = 1 btnStroke.Transparency = 0.6 btnStroke.Parent = button local btnText = Instance.new("TextLabel") btnText.Size = UDim2.new(1, -50, 1, 0) btnText.Position = UDim2.new(0, 15, 0, 0) btnText.BackgroundTransparency = 1 btnText.Text = text btnText.TextColor3 = Color3.fromRGB(255, 255, 255) btnText.Font = Enum.Font.GothamBold btnText.TextSize = 14 btnText.TextXAlignment = Enum.TextXAlignment.Left btnText.ZIndex = 4 btnText.Parent = button return button, btnText, btnStroke end -- Function to create status indicator local function createStatusIndicator(yPos) local indicator = Instance.new("Frame") indicator.Size = UDim2.new(0, 40, 0, 40) indicator.Position = UDim2.new(1, -50, 0, yPos) indicator.BackgroundColor3 = Color3.fromRGB(50, 50, 65) indicator.BorderSizePixel = 0 indicator.ZIndex = 3 indicator.Parent = contentFrame local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 10) corner.Parent = indicator local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(70, 70, 90) stroke.Thickness = 1 stroke.Transparency = 0.6 stroke.Parent = indicator local label = Instance.new("TextLabel") label.Size = UDim2.new(1, 0, 1, 0) label.BackgroundTransparency = 1 label.Text = "0" label.TextColor3 = Color3.fromRGB(255, 255, 255) label.Font = Enum.Font.GothamBold label.TextSize = 20 label.ZIndex = 4 label.Parent = indicator return indicator, label, stroke end -- Create buttons and indicators local staminaButton, staminaBtnText, staminaBtnStroke = createButton("Inf Stamina", 0, 0) local staminaIndicator, staminaLabel, staminaStroke = createStatusIndicator(0) local blockButton, blockBtnText, blockBtnStroke = createButton("Auto Block", 0, 50) local blockIndicator, blockLabel, blockStroke = createStatusIndicator(50) local safeZoneButton, safeZoneBtnText, safeZoneBtnStroke = createButton("Safe Zone", 0, 100) local safeZoneIndicator, safeZoneLabel, safeZoneStroke = createStatusIndicator(100) -- Camera mode info with icon local cameraInfo = Instance.new("Frame") cameraInfo.Size = UDim2.new(1, 0, 0, 35) cameraInfo.Position = UDim2.new(0, 0, 0, 150) cameraInfo.BackgroundColor3 = Color3.fromRGB(30, 30, 42) cameraInfo.BorderSizePixel = 0 cameraInfo.ZIndex = 3 cameraInfo.Parent = contentFrame local cameraCorner = Instance.new("UICorner") cameraCorner.CornerRadius = UDim.new(0, 8) cameraCorner.Parent = cameraInfo local cameraIcon = Instance.new("TextLabel") cameraIcon.Size = UDim2.new(0, 30, 1, 0) cameraIcon.Position = UDim2.new(0, 5, 0, 0) cameraIcon.BackgroundTransparency = 1 cameraIcon.Text = "📷" cameraIcon.TextSize = 16 cameraIcon.ZIndex = 4 cameraIcon.Parent = cameraInfo local cameraLabel = Instance.new("TextLabel") cameraLabel.Size = UDim2.new(1, -40, 1, 0) cameraLabel.Position = UDim2.new(0, 35, 0, 0) cameraLabel.BackgroundTransparency = 1 cameraLabel.Text = "Press Z: 3rd Person" cameraLabel.TextColor3 = Color3.fromRGB(180, 180, 200) cameraLabel.Font = Enum.Font.Gotham cameraLabel.TextSize = 12 cameraLabel.TextXAlignment = Enum.TextXAlignment.Left cameraLabel.ZIndex = 4 cameraLabel.Parent = cameraInfo -- Function to show cat (disabled - no cat popup) local function showCat() -- Cat popup disabled end -- Drag functionality local function updateDrag(input) local delta = input.Position - mousePos local newPos = UDim2.new( framePos.X.Scale, framePos.X.Offset + delta.X, framePos.Y.Scale, framePos.Y.Offset + delta.Y ) TweenService:Create(mainFrame, TweenInfo.new(0.1), {Position = newPos}):Play() end titleBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true mousePos = input.Position framePos = mainFrame.Position TweenService:Create(titleBar, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(35, 35, 48)}):Play() input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false TweenService:Create(titleBar, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(28, 28, 38)}):Play() end end) end end) titleBar.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then updateDrag(input) end end) -- Function to toggle camera local function toggleCamera() isFirstPerson = not isFirstPerson if isFirstPerson then player.CameraMaxZoomDistance = 0.5 player.CameraMinZoomDistance = 0.5 cameraLabel.Text = "Press Z: 1st Person ✓" cameraIcon.Text = "👁️" else player.CameraMaxZoomDistance = 15 player.CameraMinZoomDistance = 5 cameraLabel.Text = "Press Z: 3rd Person ✓" cameraIcon.Text = "📷" end TweenService:Create(cameraInfo, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(50, 50, 70)}):Play() task.wait(0.2) TweenService:Create(cameraInfo, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(30, 30, 42)}):Play() coroutine.wrap(showCat)() end -- Function to find all stamina-related objects local function getAllStaminaObjects() local staminaObjects = {} local playerGui = player:WaitForChild("PlayerGui") for _, gui in pairs(playerGui:GetDescendants()) do if gui.Name:lower():find("stamina") or gui.Name:lower():find("sprint") then if gui:IsA("NumberValue") or gui:IsA("IntValue") or gui:IsA("IntConstrainedValue") then table.insert(staminaObjects, gui) end end end if character then for _, obj in pairs(character:GetDescendants()) do if obj.Name:lower():find("stamina") or obj.Name:lower():find("sprint") then if obj:IsA("NumberValue") or obj:IsA("IntValue") or obj:IsA("IntConstrainedValue") then table.insert(staminaObjects, obj) end end end end for _, obj in pairs(player:GetDescendants()) do if obj.Name:lower():find("stamina") or obj.Name:lower():find("sprint") then if obj:IsA("NumberValue") or obj:IsA("IntValue") or obj:IsA("IntConstrainedValue") then table.insert(staminaObjects, obj) end end end return staminaObjects end -- Function to toggle infinite stamina local function toggleInfStamina() infStamina = not infStamina if infStamina then TweenService:Create(staminaIndicator, TweenInfo.new(0.3), { BackgroundColor3 = Color3.fromRGB(220, 60, 80) }):Play() TweenService:Create(staminaStroke, TweenInfo.new(0.3), { Color = Color3.fromRGB(255, 100, 120) }):Play() TweenService:Create(staminaButton, TweenInfo.new(0.3), { BackgroundColor3 = Color3.fromRGB(60, 140, 80) }):Play() TweenService:Create(staminaBtnStroke, TweenInfo.new(0.3), { Color = Color3.fromRGB(100, 200, 120) }):Play() staminaLabel.Text = "0" staminaBtnText.Text = "Inf Stamina ON" else TweenService:Create(staminaIndicator, TweenInfo.new(0.3), { BackgroundColor3 = Color3.fromRGB(50, 50, 65) }):Play() TweenService:Create(staminaStroke, TweenInfo.new(0.3), { Color = Color3.fromRGB(70, 70, 90) }):Play() TweenService:Create(staminaButton, TweenInfo.new(0.3), { BackgroundColor3 = Color3.fromRGB(40, 40, 55) }):Play() TweenService:Create(staminaBtnStroke, TweenInfo.new(0.3), { Color = Color3.fromRGB(70, 70, 90) }):Play() staminaLabel.Text = "0" staminaBtnText.Text = "Inf Stamina" end end -- Function to toggle auto block local function toggleAutoBlock() autoBlock = not autoBlock if autoBlock then TweenService:Create(blockIndicator, TweenInfo.new(0.3), { BackgroundColor3 = Color3.fromRGB(220, 60, 80) }):Play() TweenService:Create(blockStroke, TweenInfo.new(0.3), { Color = Color3.fromRGB(255, 100, 120) }):Play() TweenService:Create(blockButton, TweenInfo.new(0.3), { BackgroundColor3 = Color3.fromRGB(60, 140, 80) }):Play() TweenService:Create(blockBtnStroke, TweenInfo.new(0.3), { Color = Color3.fromRGB(100, 200, 120) }):Play() blockLabel.Text = "0" blockBtnText.Text = "Auto Block ON" else TweenService:Create(blockIndicator, TweenInfo.new(0.3), { BackgroundColor3 = Color3.fromRGB(50, 50, 65) }):Play() TweenService:Create(blockStroke, TweenInfo.new(0.3), { Color = Color3.fromRGB(70, 70, 90) }):Play() TweenService:Create(blockButton, TweenInfo.new(0.3), { BackgroundColor3 = Color3.fromRGB(40, 40, 55) }):Play() TweenService:Create(blockBtnStroke, TweenInfo.new(0.3), { Color = Color3.fromRGB(70, 70, 90) }):Play() blockLabel.Text = "0" blockBtnText.Text = "Auto Block" end end -- Create safe zone platform local function createSafePlatform() if safePlatform then return safePlatform end local platform = Instance.new("Part") platform.Name = "SafeZonePlatform" platform.Size = Vector3.new(50, 1, 50) platform.Position = Vector3.new(0, 10000, 0) platform.Anchored = true platform.CanCollide = true platform.Material = Enum.Material.Neon platform.BrickColor = BrickColor.new("Bright green") platform.TopSurface = Enum.SurfaceType.Smooth platform.BottomSurface = Enum.SurfaceType.Smooth platform.Parent = workspace -- Add a spawn location look local decal = Instance.new("Decal") decal.Face = Enum.NormalId.Top decal.Texture = "rbxasset://textures/SpawnLocation.png" decal.Parent = platform safePlatform = platform return platform end -- Function to toggle safe zone local function toggleSafeZone() if not inSafeZone then -- Teleport to safe zone savedPosition = humanoidRootPart.CFrame local platform = createSafePlatform() humanoidRootPart.CFrame = CFrame.new(platform.Position + Vector3.new(0, 10, 0)) inSafeZone = true TweenService:Create(safeZoneIndicator, TweenInfo.new(0.3), { BackgroundColor3 = Color3.fromRGB(220, 60, 80) }):Play() TweenService:Create(safeZoneStroke, TweenInfo.new(0.3), { Color = Color3.fromRGB(255, 100, 120) }):Play() TweenService:Create(safeZoneButton, TweenInfo.new(0.3), { BackgroundColor3 = Color3.fromRGB(60, 140, 80) }):Play() TweenService:Create(safeZoneBtnStroke, TweenInfo.new(0.3), { Color = Color3.fromRGB(100, 200, 120) }):Play() safeZoneLabel.Text = "0" safeZoneBtnText.Text = "In Safe Zone" else -- Teleport back if savedPosition then humanoidRootPart.CFrame = savedPosition end inSafeZone = false TweenService:Create(safeZoneIndicator, TweenInfo.new(0.3), { BackgroundColor3 = Color3.fromRGB(50, 50, 65) }):Play() TweenService:Create(safeZoneStroke, TweenInfo.new(0.3), { Color = Color3.fromRGB(70, 70, 90) }):Play() TweenService:Create(safeZoneButton, TweenInfo.new(0.3), { BackgroundColor3 = Color3.fromRGB(40, 40, 55) }):Play() TweenService:Create(safeZoneBtnStroke, TweenInfo.new(0.3), { Color = Color3.fromRGB(70, 70, 90) }):Play() safeZoneLabel.Text = "0" safeZoneBtnText.Text = "Safe Zone" end end -- Auto block detection local lastBlockTime = 0 local blockCooldown = 0.5 local function checkForKillerNearby() if not autoBlock or not character or not humanoidRootPart then return false end local killerNames = { "Miss Circle", "MissCircle", "Circle", "Miss Thavel", "MissThavel", "Thavel", "Miss Bloomie", "MissBloomie", "Bloomie", "Alice", "Zip", "Edward" } for _, npc in pairs(workspace:GetDescendants()) do if npc:IsA("Model") and npc:FindFirstChild("Humanoid") and npc:FindFirstChild("HumanoidRootPart") then if npc ~= character then for _, killerName in pairs(killerNames) do if npc.Name:lower():find(killerName:lower()) then local distance = (npc.HumanoidRootPart.Position - humanoidRootPart.Position).Magnitude if distance < 15 then return true end end end end end end return false end local function performBlock() local currentTime = tick() if currentTime - lastBlockTime < blockCooldown then return end -- Find block tool or simulate block local backpack = player:FindFirstChild("Backpack") if backpack then for _, tool in pairs(backpack:GetChildren()) do if tool:IsA("Tool") and (tool.Name:lower():find("block") or tool.Name:lower():find("book")) then humanoid:EquipTool(tool) tool:Activate() lastBlockTime = currentTime return end end end -- Check equipped tool local equippedTool = character:FindFirstChildOfClass("Tool") if equippedTool and (equippedTool.Name:lower():find("block") or equippedTool.Name:lower():find("book")) then equippedTool:Activate() lastBlockTime = currentTime end end -- Main loop RunService.Heartbeat:Connect(function() -- Infinite stamina if infStamina then local staminaObjects = getAllStaminaObjects() for _, obj in pairs(staminaObjects) do if obj and obj.Parent then pcall(function() obj.Value = 100 end) end end local attributes = player:GetAttributes() for name, value in pairs(attributes) do if name:lower():find("stamina") or name:lower():find("sprint") then pcall(function() player:SetAttribute(name, 100) end) end end if character then local charAttributes = character:GetAttributes() for name, value in pairs(charAttributes) do if name:lower():find("stamina") or name:lower():find("sprint") then pcall(function() character:SetAttribute(name, 100) end) end end end if humanoid and humanoid.Parent then pcall(function() if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) or UserInputService:IsKeyDown(Enum.KeyCode.RightShift) then humanoid.WalkSpeed = math.max(humanoid.WalkSpeed, 20) end end) end end -- Auto block if autoBlock and checkForKillerNearby() then performBlock() end end) -- Input handling UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == Enum.KeyCode.Z then toggleCamera() end end) -- Button click handlers staminaButton.MouseButton1Click:Connect(toggleInfStamina) blockButton.MouseButton1Click:Connect(toggleAutoBlock) safeZoneButton.MouseButton1Click:Connect(toggleSafeZone) -- Hover effects local function addHoverEffect(button, isActive) button.MouseEnter:Connect(function() if not isActive() then TweenService:Create(button, TweenInfo.new(0.2), { BackgroundColor3 = Color3.fromRGB(50, 50, 70) }):Play() end end) button.MouseLeave:Connect(function() if not isActive() then TweenService:Create(button, TweenInfo.new(0.2), { BackgroundColor3 = Color3.fromRGB(40, 40, 55) }):Play() end end) end addHoverEffect(staminaButton, function() return infStamina end) addHoverEffect(blockButton, function() return autoBlock end) addHoverEffect(safeZoneButton, function() return inSafeZone end) -- Character respawn handler player.CharacterAdded:Connect(function(newChar) character = newChar humanoid = newChar:WaitForChild("Humanoid") humanoidRootPart = newChar:WaitForChild("HumanoidRootPart") inSafeZone = false end) print("✓ FPE Enhanced UI Loaded!") print("✓ Auto Block - Blocks when killers are near") print("✓ Safe Zone - Teleports you to safety") print("✓ Press Z to toggle camera")