local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local CamlockState = false
local Prediction = 0.1768521
local Key = "q"
local Locked = true
local function FindNearestEnemy()
local ClosestDistance, ClosestPlayer = math.huge, nil
local CenterPosition = Vector2.new(game:GetService("GuiService"):GetScreenResolution().X / 2, game:GetService("GuiService"):GetScreenResolution().Y / 2)
for _, Player in ipairs(Players:GetPlayers()) do
if Player ~= LocalPlayer then
local Character = Player.Character
if Character and Character:FindFirstChild("HumanoidRootPart") and Character.Humanoid.Health > 0 then
local Position, IsVisibleOnViewport = game:GetService("Workspace").CurrentCamera:WorldToViewportPoint(Character.HumanoidRootPart.Position)
if IsVisibleOnViewport then
local Distance = (CenterPosition - Vector2.new(Position.X, Position.Y)).Magnitude
if Distance < ClosestDistance then
ClosestPlayer = Character.HumanoidRootPart
ClosestDistance = Distance
end
end
end
end
end
return ClosestPlayer
end
local enemy = nil
RunService.Heartbeat:Connect(function()
if CamlockState and enemy then
local camera = workspace.CurrentCamera
local enemyPosition = enemy.Position + (enemy.Velocity * Prediction)
camera.CFrame = CFrame.new(camera.CFrame.Position, enemyPosition)
end
end)
Mouse.KeyDown:Connect(function(k)
if k == Key then
Locked = not Locked
if Locked then
enemy = FindNearestEnemy()
CamlockState = true
else
enemy = nil
CamlockState = false
end
end
end)
local Awaken = Instance.new("ScreenGui")
local Frame = Instance.new("Frame")
local UICorner = Instance.new("UICorner")
local Logo = Instance.new("ImageLabel")
local TextButton = Instance.new("TextButton")
local UICorner_2 = Instance.new("UICorner")
Awaken.Name = "Awaken"
Awaken.Parent = game.CoreGui
Awaken.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
Frame.Parent = Awaken
Frame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
Frame.BorderColor3 = Color3.fromRGB(0, 0, 0)
Frame.BorderSizePixel = 0
Frame.Position = UDim2.new(0.133798108, 0, 0.20107238, 0)
Frame.Size = UDim2.new(0, 202, 0, 70)
Frame.Active = true
Frame.Draggable = true
local function TopContainer()
Frame.Position = UDim2.new(0.5, -Frame.AbsoluteSize.X / 2, 0, -Frame.AbsoluteSize.Y / 2)
end
TopContainer()
Frame:GetPropertyChangedSignal("AbsoluteSize"):Connect(TopContainer)
UICorner.Parent = Frame
Logo.Name = "Logo"
Logo.Parent = Frame
Logo.BackgroundColor3 = Color3.fromRGB(100, 255, 100)
Logo.BackgroundTransparency = 3.000
Logo.BorderColor3 = Color3.fromRGB(0, 0, 0)
Logo.BorderSizePixel = 0
Logo.Position = UDim2.new(0.326732665, 0, 0, 0)
Logo.Size = UDim2.new(0, 70, 0, 70)
Logo.Image = "rbxassetid://830610397"
Logo.ImageTransparency = 0.300
TextButton.Parent = Frame
TextButton.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
TextButton.BackgroundTransparency = 0.000
TextButton.BorderColor3 = Color3.fromRGB(0, 0, 0)
TextButton.BorderSizePixel = 0
TextButton.Position = UDim2.new(0.0792079195, 0, 0.18571429, 0)
TextButton.Size = UDim2.new(0, 170, 0, 44)
TextButton.Font = Enum.Font.SourceSansSemibold
TextButton.Text = "Toggle Awaken"
TextButton.TextColor3 = Color3.fromRGB(255, 0, 0)
TextButton.TextScaled = true
TextButton.TextSize = 18.000
TextButton.TextWrapped = true
TextButton.AutoButtonColor = false
local state = true
TextButton.MouseButton1Click:Connect(function()
state = not state
if state then
TextButton.Text = "Awaken OFF"
CamlockState = false
enemy = nil
else
TextButton.Text = "Awaken ON"
CamlockState = true
enemy = FindNearestEnemy()
end
end)
1 answer
```lua
-- Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local GuiService = game:GetService("GuiService")
-- Local Player Instance
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
-- Variables
local CamlockState = false
local Prediction = 0.1768521
local ToggleKey = "q"
local Locked = true
-- Functions
local function FindNearestEnemy()
local closestDistance, closestPlayer = math.huge, nil
local centerPosition = Vector2.new(GuiService:GetScreenResolution().X / 2, GuiService:GetScreenResolution().Y / 2)
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
local character = player.Character
if character and character:FindFirstChild("HumanoidRootPart") and character.Humanoid.Health > 0 then
local position, onScreen = Workspace.CurrentCamera:WorldToViewportPoint(character.HumanoidRootPart.Position)
if onScreen then
local distance = (centerPosition - Vector2.new(position.X, position.Y)).Magnitude
if distance < closestDistance then
closestPlayer = character.HumanoidRootPart
closestDistance = distance
end
end
end
end
end
return closestPlayer
end
local enemy = nil
-- Lock Camera to Enemy
RunService.Heartbeat:Connect(function()
if CamlockState and enemy then
local camera = Workspace.CurrentCamera
local enemyPosition = enemy.Position + (enemy.Velocity * Prediction)
camera.CFrame = CFrame.new(camera.CFrame.Position, enemyPosition)
end
end)
-- Toggle Lock on key press
Mouse.KeyDown:Connect(function(key)
if key == ToggleKey then
Locked = not Locked
if Locked then
enemy = FindNearestEnemy()
CamlockState = true
else
enemy = nil
CamlockState = false
end
end
end)
-- GUI
local function createGui()
local awakenGui = Instance.new("ScreenGui")
local frame = Instance.new("Frame")
local uicorner = Instance.new("UICorner")
local logo = Instance.new("ImageLabel")
local textButton = Instance.new("TextButton")
local uicorner2 = Instance.new("UICorner")
-- Setup GUI Elements
awakenGui.Name = "Awaken"
awakenGui.Parent = game.CoreGui
awakenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
frame.Parent = awakenGui
frame.BackgroundColor3 = Color3.new(0, 0, 0)
frame.BorderColor3 = Color3.new(0, 0, 0)
frame.BorderSizePixel = 0
frame.Position = UDim2.new(0.134, 0, 0.201, 0)
frame.Size = UDim2.new(0, 202, 0, 70)
frame.Active = true
frame.Draggable = true
-- Center frame
local function topContainer()
frame.Position = UDim2.new(0.5, -frame.AbsoluteSize.X / 2, 0, -frame.AbsoluteSize.Y / 2)
end
topContainer()
frame:GetPropertyChangedSignal("AbsoluteSize"):Connect(topContainer)
uicorner.Parent = frame
logo.Name = "Logo"
logo.Parent = frame
logo.BackgroundColor3 = Color3.fromRGB(100, 255, 100)
logo.BackgroundTransparency = 3
logo.BorderColor3 = Color3.new(0, 0, 0)
logo.BorderSizePixel = 0
logo.Position = UDim2.new(0.327, 0, 0, 0)
logo.Size = UDim2.new(0, 70, 0, 70)
logo.Image = "rbxassetid://830610397"
logo.ImageTransparency = 0.3
textButton.Parent = frame
textButton.BackgroundColor3 = Color3.new(0, 0, 0)
textButton.BorderColor3 = Color3.new(0, 0, 0)
textButton.BorderSizePixel = 0
textButton.Position = UDim2.new(0.079, 0, 0.186, 0)
textButton.Size = UDim2.new(0, 170, 0, 44)
textButton.Font = Enum.Font.SourceSansSemibold
textButton.Text = "Toggle Awaken"
textButton.TextColor3 = Color3.new(255, 0, 0)
textButton.TextScaled = true
textButton.TextSize = 18
textButton.TextWrapped = true
textButton.AutoButtonColor = false
-- Button State
local state = true
textButton.MouseButton1Click:Connect(function()
state = not state
if state then
textButton.Text = "Awaken OFF"
CamlockState = false
enemy = nil
else
textButton.Text = "Awaken ON"
CamlockState = true
enemy = FindNearestEnemy()
end
end)
end
createGui()
```
### Explanation
1. **Refactor Structure:** Improved readability by grouping related elements and using functions to initialize GUI.
2. **Consistent Naming:** Used consistent variable naming conventions.
3. **Gui Elements Initialization:** Refactored GUI creation into a separate function to isolate UI logic.
4. **Inline Comments:** Provided inline explanations where necessary for clarity.