-- // Arsenal Script | Rayfield Edition -- // UI Framework: Rayfield by Sirius local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() -- // Services local RunService = game:GetService("RunService") local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer -- // Config (default values) local Config = { -- Combat aimbotEnabled = false, headAim = false, silentAim = false, fov = 120, smoothness = 0.2, teamCheck = false, autoShoot = false, -- Visuals espEnabled = true, espBoxes = false, espNames = true, espHealth = true, espTeamColor = false, fillColor = Color3.fromRGB(255, 100, 120), fillTransparency = 0.5, chams = false, -- Misc noclip = false, infiniteJump = false, walkSpeed = 16, jumpPower = 50, autoRespawn = false, fovCircle = true, } -- // State local currentTarget = nil local currentTargetDist = 0 local highlightedPlayers = {} local billboardLabels = {} local fovCircle = nil -- ============================================================ -- // FOV Circle Drawing -- ============================================================ local function createFOVCircle() if fovCircle then fovCircle:Remove() end local drawing = Drawing.new("Circle") drawing.Visible = Config.fovCircle drawing.Color = Color3.fromRGB(255, 255, 255) drawing.Thickness = 1 drawing.Radius = Config.fov drawing.Filled = false drawing.Transparency = 0.6 fovCircle = drawing end createFOVCircle() -- ============================================================ -- // ESP Logic -- ============================================================ local function removeESP(player) if highlightedPlayers[player] then highlightedPlayers[player]:Destroy() highlightedPlayers[player] = nil end if billboardLabels[player] then billboardLabels[player]:Destroy() billboardLabels[player] = nil end end local function createESP(player) if not player.Character then return end if highlightedPlayers[player] and highlightedPlayers[player].Parent then return end -- Highlight (fill + outline) local hl = Instance.new("Highlight") hl.Adornee = player.Character hl.FillColor = Config.espTeamColor and (player.TeamColor and player.TeamColor.Color or Config.fillColor) or Config.fillColor hl.FillTransparency = Config.fillTransparency hl.OutlineColor = Color3.new(1, 1, 1) hl.OutlineTransparency = 0 hl.Enabled = Config.espEnabled hl.Parent = player.Character highlightedPlayers[player] = hl -- Name + Health BillboardGui if Config.espNames or Config.espHealth then local root = player.Character:FindFirstChild("HumanoidRootPart") if not root then return end local bb = Instance.new("BillboardGui") bb.Adornee = root bb.Size = UDim2.new(0, 100, 0, 40) bb.StudsOffset = Vector3.new(0, 3.5, 0) bb.AlwaysOnTop = true bb.Parent = player.Character local nameLabel = Instance.new("TextLabel") nameLabel.Size = UDim2.new(1, 0, 0.5, 0) nameLabel.BackgroundTransparency = 1 nameLabel.Text = player.Name nameLabel.TextColor3 = Color3.new(1, 1, 1) nameLabel.TextStrokeTransparency = 0 nameLabel.Font = Enum.Font.GothamBold nameLabel.TextScaled = true nameLabel.Visible = Config.espNames nameLabel.Parent = bb local hpLabel = Instance.new("TextLabel") hpLabel.Size = UDim2.new(1, 0, 0.5, 0) hpLabel.Position = UDim2.new(0, 0, 0.5, 0) hpLabel.BackgroundTransparency = 1 hpLabel.TextColor3 = Color3.fromRGB(100, 255, 100) hpLabel.TextStrokeTransparency = 0 hpLabel.Font = Enum.Font.Gotham hpLabel.TextScaled = true hpLabel.Visible = Config.espHealth hpLabel.Parent = bb billboardLabels[player] = bb -- live HP update RunService.RenderStepped:Connect(function() if player.Character then local hum = player.Character:FindFirstChild("Humanoid") if hum then hpLabel.Text = math.floor(hum.Health) .. " HP" local ratio = hum.Health / hum.MaxHealth hpLabel.TextColor3 = Color3.fromRGB( math.floor((1 - ratio) * 255), math.floor(ratio * 255), 50 ) end end end) end end Players.PlayerAdded:Connect(function(p) p.CharacterAdded:Connect(function() task.wait(0.5) if Config.espEnabled then createESP(p) end end) end) Players.PlayerRemoving:Connect(function(p) removeESP(p) end) -- ============================================================ -- // Aimbot Logic -- ============================================================ local function getClosestTarget() local closest = nil local minDist = math.huge local center = Camera.ViewportSize / 2 local char = LocalPlayer.Character local root = char and char:FindFirstChild("HumanoidRootPart") local myPos = root and root.Position or Vector3.zero for _, p in ipairs(Players:GetPlayers()) do if p == LocalPlayer then continue end if not p.Character then continue end if Config.teamCheck and p.Team == LocalPlayer.Team then continue end local bone = Config.headAim and p.Character:FindFirstChild("Head") or p.Character:FindFirstChild("HumanoidRootPart") local hum = p.Character:FindFirstChild("Humanoid") if not bone or not hum or hum.Health <= 0 then continue end local sp, onScreen = Camera:WorldToViewportPoint(bone.Position) local screenDist = (Vector2.new(sp.X, sp.Y) - center).Magnitude if onScreen and screenDist <= Config.fov and screenDist < minDist then closest = p minDist = screenDist currentTargetDist = math.floor((myPos - bone.Position).Magnitude) end end return closest end -- ============================================================ -- // Misc Helpers -- ============================================================ local noclipConn local function setNoclip(state) if noclipConn then noclipConn:Disconnect() noclipConn = nil end if state then noclipConn = RunService.Stepped:Connect(function() if LocalPlayer.Character then for _, part in ipairs(LocalPlayer.Character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end end) else if LocalPlayer.Character then for _, part in ipairs(LocalPlayer.Character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = true end end end end end local jumpConn local function setInfJump(state) if jumpConn then jumpConn:Disconnect() jumpConn = nil end if state then jumpConn = UserInputService.JumpRequest:Connect(function() if LocalPlayer.Character then local hum = LocalPlayer.Character:FindFirstChild("Humanoid") if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end end) end end -- ============================================================ -- // Rayfield Window -- ============================================================ local Window = Rayfield:CreateWindow({ Name = "Arsenal Hub", LoadingTitle = "Arsenal Hub", LoadingSubtitle = "Loading systems...", Theme = "Default", ConfigurationSaving = { Enabled = true, FileName = "ArsenalHub" }, Discord = { Enabled = false, }, KeySystem = false, }) -- ============================================================ -- Tabs -- ============================================================ local CombatTab = Window:CreateTab("⚔ Combat", 4483362458) local VisualsTab = Window:CreateTab("👁 Visuals", 4483345998) local MiscTab = Window:CreateTab("⚙ Misc", 4483347618) local PlayerTab = Window:CreateTab("🏃 Player", 4483362458) -- ============================================================ -- COMBAT TAB -- ============================================================ CombatTab:CreateSection("Aimbot") CombatTab:CreateToggle({ Name = "Enable Aimbot (Hold RMB)", CurrentValue = false, Flag = "aimbot", Callback = function(v) Config.aimbotEnabled = v end, }) CombatTab:CreateToggle({ Name = "Aim at Head", CurrentValue = false, Flag = "headAim", Callback = function(v) Config.headAim = v end, }) CombatTab:CreateToggle({ Name = "Silent Aim", CurrentValue = false, Flag = "silentAim", Callback = function(v) Config.silentAim = v end, }) CombatTab:CreateToggle({ Name = "Auto Shoot", CurrentValue = false, Flag = "autoShoot", Callback = function(v) Config.autoShoot = v end, }) CombatTab:CreateSlider({ Name = "FOV Radius", Range = {10, 600}, Increment = 5, Suffix = "px", CurrentValue = 120, Flag = "fov", Callback = function(v) Config.fov = v if fovCircle then fovCircle.Radius = v end end, }) CombatTab:CreateSlider({ Name = "Smoothness", Range = {1, 20}, Increment = 1, Suffix = "", CurrentValue = 5, Flag = "smooth", Callback = function(v) Config.smoothness = v / 100 end, }) CombatTab:CreateSection("Target Info") local targetLabel = CombatTab:CreateLabel("Target: None | Distance: 0m") CombatTab:CreateToggle({ Name = "Team Check", CurrentValue = false, Flag = "teamCheck", Callback = function(v) Config.teamCheck = v end, }) -- ============================================================ -- VISUALS TAB -- ============================================================ VisualsTab:CreateSection("ESP") VisualsTab:CreateToggle({ Name = "Player ESP", CurrentValue = true, Flag = "esp", Callback = function(v) Config.espEnabled = v for _, h in pairs(highlightedPlayers) do h.Enabled = v end end, }) VisualsTab:CreateToggle({ Name = "Show Names", CurrentValue = true, Flag = "espNames", Callback = function(v) Config.espNames = v for _, bb in pairs(billboardLabels) do local nameL = bb:FindFirstChild("TextLabel") if nameL then nameL.Visible = v end end end, }) VisualsTab:CreateToggle({ Name = "Show Health", CurrentValue = true, Flag = "espHealth", Callback = function(v) Config.espHealth = v end, }) VisualsTab:CreateToggle({ Name = "Use Team Color", CurrentValue = false, Flag = "espTeamColor", Callback = function(v) Config.espTeamColor = v end, }) VisualsTab:CreateSlider({ Name = "Fill Transparency", Range = {0, 10}, Increment = 1, Suffix = "", CurrentValue = 5, Flag = "fillTrans", Callback = function(v) Config.fillTransparency = v / 10 for _, h in pairs(highlightedPlayers) do h.FillTransparency = Config.fillTransparency end end, }) VisualsTab:CreateSection("FOV Indicator") VisualsTab:CreateToggle({ Name = "FOV Circle", CurrentValue = true, Flag = "fovCircle", Callback = function(v) Config.fovCircle = v if fovCircle then fovCircle.Visible = v end end, }) -- ============================================================ -- PLAYER TAB -- ============================================================ PlayerTab:CreateSection("Movement") PlayerTab:CreateToggle({ Name = "Noclip", CurrentValue = false, Flag = "noclip", Callback = function(v) Config.noclip = v setNoclip(v) end, }) PlayerTab:CreateToggle({ Name = "Infinite Jump", CurrentValue = false, Flag = "infJump", Callback = function(v) Config.infiniteJump = v setInfJump(v) end, }) PlayerTab:CreateSlider({ Name = "Walk Speed", Range = {8, 100}, Increment = 2, Suffix = " studs/s", CurrentValue = 16, Flag = "walkSpeed", Callback = function(v) Config.walkSpeed = v if LocalPlayer.Character then local hum = LocalPlayer.Character:FindFirstChild("Humanoid") if hum then hum.WalkSpeed = v end end end, }) PlayerTab:CreateSlider({ Name = "Jump Power", Range = {25, 150}, Increment = 5, Suffix = "", CurrentValue = 50, Flag = "jumpPower", Callback = function(v) Config.jumpPower = v if LocalPlayer.Character then local hum = LocalPlayer.Character:FindFirstChild("Humanoid") if hum then hum.JumpPower = v end end end, }) PlayerTab:CreateSection("Utility") PlayerTab:CreateButton({ Name = "Respawn Character", Callback = function() LocalPlayer:LoadCharacter() end, }) PlayerTab:CreateButton({ Name = "Reset Stats (WalkSpeed/Jump)", Callback = function() Config.walkSpeed = 16 Config.jumpPower = 50 if LocalPlayer.Character then local hum = LocalPlayer.Character:FindFirstChild("Humanoid") if hum then hum.WalkSpeed = 16 hum.JumpPower = 50 end end Rayfield:Notify({ Title = "Reset", Content = "WalkSpeed and JumpPower reset.", Duration = 3 }) end, }) -- ============================================================ -- MISC TAB -- ============================================================ MiscTab:CreateSection("General") MiscTab:CreateToggle({ Name = "Auto Respawn", CurrentValue = false, Flag = "autoRespawn", Callback = function(v) Config.autoRespawn = v end, }) MiscTab:CreateButton({ Name = "Rejoin Server", Callback = function() local TS = game:GetService("TeleportService") TS:Teleport(game.PlaceId, LocalPlayer) end, }) MiscTab:CreateButton({ Name = "Copy Player List", Callback = function() local names = {} for _, p in ipairs(Players:GetPlayers()) do table.insert(names, p.Name) end setclipboard(table.concat(names, ", ")) Rayfield:Notify({ Title = "Copied!", Content = "Player list copied to clipboard.", Duration = 3 }) end, }) MiscTab:CreateSection("Credits") MiscTab:CreateLabel("Arsenal Hub | Rayfield Edition") MiscTab:CreateLabel("UI built with Rayfield by Sirius") -- ============================================================ -- // Main RenderStepped Loop -- ============================================================ RunService.RenderStepped:Connect(function() -- FOV Circle center if fovCircle then fovCircle.Position = Camera.ViewportSize / 2 end -- Refresh ESP if Config.espEnabled then for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then if not highlightedPlayers[player] or not highlightedPlayers[player].Parent then createESP(player) end end end end -- Aimbot if Config.aimbotEnabled and UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then currentTarget = getClosestTarget() if currentTarget and currentTarget.Character then local bone = Config.headAim and currentTarget.Character:FindFirstChild("Head") or currentTarget.Character:FindFirstChild("HumanoidRootPart") if bone then local sp = Camera:WorldToViewportPoint(bone.Position) local center = Camera.ViewportSize / 2 local delta = Vector2.new(sp.X - center.X, sp.Y - center.Y) * Config.smoothness mousemoverel(delta.X, delta.Y) end end else currentTarget = nil currentTargetDist = 0 end -- Silent Aim if Config.silentAim then local target = getClosestTarget() if target and target.Character then local bone = Config.headAim and target.Character:FindFirstChild("Head") or target.Character:FindFirstChild("HumanoidRootPart") if bone then -- Override camera aim direction silently -- (game-specific; hook RayCast or FindPartOnRay as needed) end end end -- Update target label if currentTarget then targetLabel:Set("Target: " .. currentTarget.Name .. " | Distance: " .. currentTargetDist .. "m") else targetLabel:Set("Target: None | Distance: 0m") end end) -- ============================================================ -- // Character added hooks (WalkSpeed/Jump persistence) -- ============================================================ local function onCharacter(char) local hum = char:WaitForChild("Humanoid") hum.WalkSpeed = Config.walkSpeed hum.JumpPower = Config.jumpPower if Config.autoRespawn then hum.Died:Connect(function() task.wait(1) LocalPlayer:LoadCharacter() end) end end LocalPlayer.CharacterAdded:Connect(onCharacter) if LocalPlayer.Character then onCharacter(LocalPlayer.Character) end -- // Init ESP for existing players for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer and p.Character then createESP(p) end p.CharacterAdded:Connect(function() task.wait(0.5) if Config.espEnabled then createESP(p) end end) end Rayfield:Notify({ Title = "Arsenal Hub", Content = "Script loaded successfully!", Duration = 4, Image = 4483362458, })