-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] --[[ Sniper Arena - Silent Aim + ESP + Tracer + Weapon Chams + Force Third Person ]] -- ====================== LINORIA ====================== local repo = 'https://raw.githubusercontent.com/violin-suzutsuki/LinoriaLib/main/' local Library = loadstring(game:HttpGet(repo .. 'Library.lua'))() local ThemeManager = loadstring(game:HttpGet(repo .. 'addons/ThemeManager.lua'))() local SaveManager = loadstring(game:HttpGet(repo .. 'addons/SaveManager.lua'))() local Window = Library:CreateWindow({ Title = 'Sniper Arena | Silent Aim', Center = true, AutoShow = true, TabPadding = 8, MenuFadeTime = 0.2 }) -- ====================== SERVICES ====================== local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local Camera = workspace.CurrentCamera workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(function() Camera = workspace.CurrentCamera end) local LocalPlayer = Players.LocalPlayer -- ====================== SETTINGS ====================== local Settings = { Enabled = true, FOVRadius = 180, ESPEnabled = true, ESPMaxDistance = 2000, ShowFOV = true, Tracer = true, WeaponChams = true, ChamsColor = Color3.fromRGB(0, 100, 255), ChamsFillTransparency = 0.55, ChamsOutlineTransparency = 0, CameraFOV = 70, CameraFOVEnabled = false, ForceThirdPerson = false, -- NEU } -- ====================== TABS ====================== local Tabs = { Main = Window:AddTab('Silent Aim'), ESP = Window:AddTab('ESP'), Visuals = Window:AddTab('Visuals'), Settings = Window:AddTab('Settings'), } local AimGroup = Tabs.Main:AddLeftGroupbox('Silent Aim') AimGroup:AddToggle('SilentAim', {Text = 'Silent Aim', Default = true, Callback = function(v) Settings.Enabled = v end}) AimGroup:AddToggle('ShowFOV', {Text = 'FOV Kreis', Default = true, Callback = function(v) Settings.ShowFOV = v end}) AimGroup:AddSlider('FOVRadius', {Text = 'Silent FOV', Default = 180, Min = 50, Max = 500, Rounding = 0, Callback = function(v) Settings.FOVRadius = v end}) local MiscGroup = Tabs.Main:AddRightGroupbox('Misc') MiscGroup:AddToggle('ForceThirdPerson', { Text = 'Force Third Person', Default = false, Callback = function(v) Settings.ForceThirdPerson = v end }) local ESPGroup = Tabs.ESP:AddLeftGroupbox('ESP') ESPGroup:AddToggle('ESPEnabled', {Text = 'ESP', Default = true, Callback = function(v) Settings.ESPEnabled = v end}) ESPGroup:AddToggle('Tracer', {Text = 'Tracer', Default = true, Callback = function(v) Settings.Tracer = v end}) ESPGroup:AddSlider('ESPMaxDistance', {Text = 'Max Distance', Default = 2000, Min = 100, Max = 5000, Rounding = 0, Callback = function(v) Settings.ESPMaxDistance = v end}) local ChamsGroup = Tabs.Visuals:AddLeftGroupbox('Weapon Chams') ChamsGroup:AddToggle('WeaponChams', {Text = 'Weapon + Hand Chams', Default = true, Callback = function(v) Settings.WeaponChams = v end}) ChamsGroup:AddLabel('Chams Farbe'):AddColorPicker('ChamsColor', {Default = Color3.fromRGB(0, 100, 255), Callback = function(v) Settings.ChamsColor = v end}) ChamsGroup:AddSlider('ChamsFillTransparency', {Text = 'Fill Transparenz', Default = 0.55, Min = 0, Max = 1, Rounding = 2, Callback = function(v) Settings.ChamsFillTransparency = v end}) ChamsGroup:AddSlider('ChamsOutlineTransparency', {Text = 'Outline Transparenz', Default = 0, Min = 0, Max = 1, Rounding = 2, Callback = function(v) Settings.ChamsOutlineTransparency = v end}) local FOVGroup = Tabs.Visuals:AddRightGroupbox('FOV') FOVGroup:AddToggle('CameraFOVEnabled', {Text = 'Camera FOV', Default = false, Callback = function(v) Settings.CameraFOVEnabled = v end}) FOVGroup:AddSlider('CameraFOV', {Text = 'Camera FOV Wert', Default = 70, Min = 50, Max = 120, Rounding = 0, Callback = function(v) Settings.CameraFOV = v end}) ThemeManager:SetLibrary(Library) SaveManager:SetLibrary(Library) SaveManager:IgnoreThemeSettings() ThemeManager:SetFolder('SniperArena') SaveManager:SetFolder('SniperArena/configs') SaveManager:BuildConfigSection(Tabs.Settings) ThemeManager:ApplyToTab(Tabs.Settings) -- ====================== FOV CIRCLE ====================== local FOVCircle = Drawing.new("Circle") FOVCircle.Thickness = 1 FOVCircle.Transparency = 0.7 FOVCircle.Color = Color3.fromRGB(255, 255, 255) FOVCircle.Filled = false FOVCircle.NumSides = 64 FOVCircle.Visible = false -- ====================== SILENT AIM ====================== local EntityService = require(ReplicatedStorage.Remote.EntityService) local ClientShootableComponent = require(ReplicatedStorage.Client.CombatController.ClientComponent.ClientShootableComponent) local function GetEntityPosition(EntityModel) local TargetPart = EntityModel:FindFirstChild("HumanoidRootPart") or EntityModel:FindFirstChild("Head") if TargetPart and TargetPart:IsA("BasePart") then return TargetPart, TargetPart.Position end return nil, nil end local function IsInFOV(WorldPosition) if not Camera then return false, math.huge end local ScreenPos, OnScreen = Camera:WorldToViewportPoint(WorldPosition) if not OnScreen then return false, math.huge end local MousePos = UserInputService:GetMouseLocation() local Distance = (Vector2.new(ScreenPos.X, ScreenPos.Y) - MousePos).Magnitude return Distance <= Settings.FOVRadius, Distance end local function GetClosestEnemyInFOV() local LocalEntity = EntityService.GetLocalEntity() if not LocalEntity or not LocalEntity.World or not LocalEntity.World.EntitiesByTeam then return nil end local ClosestTarget, ClosestDistance = nil, math.huge for _, TeamDict in pairs(LocalEntity.World.EntitiesByTeam) do local Items = TeamDict._items or TeamDict for _, Entity in pairs(Items) do if not EntityService.IsLocalEntity(Entity) and Entity:IsAlive() then local Inst = Entity.Instance local Character = (Inst and Inst:IsA("Player")) and Inst.Character or Inst if Character then local Humanoid = Character:FindFirstChildOfClass("Humanoid") if Humanoid and Humanoid.Health > 0 then local Part, Position = GetEntityPosition(Character) if Position then local InFOV, Distance = IsInFOV(Position) if InFOV and Distance < ClosestDistance then ClosestTarget = { Part = Part, Position = Position } ClosestDistance = Distance end end end end end end end return ClosestTarget end local SilentTarget = nil local OrigLocalShoot = ClientShootableComponent.LocalShoot local OrigOriginFn, OrigTargetFn for i = 1, 20 do local success, val = pcall(debug.getupvalue, OrigLocalShoot, i) if success and type(val) == "function" then local testSuccess, ret1, ret2, ret3 = pcall(val) if testSuccess then if typeof(ret1) == "CFrame" and typeof(ret3) == "table" then OrigOriginFn = val elseif typeof(ret1) == "Vector3" and typeof(ret2) == "Instance" then OrigTargetFn = val end end end end if OrigOriginFn then local OldOriginFn OldOriginFn = hookfunction(OrigOriginFn, function(...) local cf, pos, meta = OldOriginFn(...) if SilentTarget and Settings.Enabled then return CFrame.lookAt(cf.Position, SilentTarget.Position), pos, meta end return cf, pos, meta end) end if OrigTargetFn then local OldTargetFn OldTargetFn = hookfunction(OrigTargetFn, function(...) if SilentTarget and Settings.Enabled then return SilentTarget.Position, SilentTarget.Part end return OldTargetFn(...) end) end local OldLocalShoot OldLocalShoot = hookfunction(ClientShootableComponent.LocalShoot, function(Self, ...) if Settings.Enabled then SilentTarget = GetClosestEnemyInFOV() end local Result = OldLocalShoot(Self, ...) SilentTarget = nil return Result end) -- ====================== FORCE THIRD PERSON ====================== RunService.RenderStepped:Connect(function() if Settings.ForceThirdPerson then LocalPlayer.CameraMode = Enum.CameraMode.Classic Camera.CameraType = Enum.CameraType.Custom -- Zoom erzwingen if LocalPlayer.CameraMaxZoomDistance < 20 then LocalPlayer.CameraMaxZoomDistance = 25 end if LocalPlayer.CameraMinZoomDistance > 8 then LocalPlayer.CameraMinZoomDistance = 8 end -- Kamera etwas nach hinten schieben falls sie zu nah ist if Camera.CameraSubject then local zoom = (Camera.CFrame.Position - Camera.Focus.Position).Magnitude if zoom < 6 then LocalPlayer.CameraMinZoomDistance = 10 end end end end) -- ====================== ESP + TRACER ====================== local ESPData = {} local function NewDrawing(kind, props) local d = Drawing.new(kind) d.Visible = false for k, v in pairs(props) do d[k] = v end return d end local function AddESP(player) if player == LocalPlayer or ESPData[player] then return end ESPData[player] = { Outline = NewDrawing("Square", {Color = Color3.new(0,0,0), Thickness = 3, Filled = false}), Box = NewDrawing("Square", {Color = Color3.fromRGB(255,50,50), Thickness = 1.5, Filled = false}), Name = NewDrawing("Text", {Color = Color3.fromRGB(255,255,255), Size = 14, Center = true, Outline = true, OutlineColor = Color3.new(0,0,0), Text = player.Name}), Dist = NewDrawing("Text", {Color = Color3.fromRGB(180,180,180), Size = 12, Center = true, Outline = true, OutlineColor = Color3.new(0,0,0)}), HpBg = NewDrawing("Square", {Color = Color3.new(0,0,0), Thickness = 1, Filled = true}), Hp = NewDrawing("Square", {Color = Color3.fromRGB(50,255,50), Thickness = 1, Filled = true}), Tracer = NewDrawing("Line", {Color = Color3.fromRGB(255, 40, 40), Thickness = 1.4}), } end local function DropESP(player) if ESPData[player] then for _, d in pairs(ESPData[player]) do d:Remove() end ESPData[player] = nil end end local function HideESP(t) for _, d in pairs(t) do d.Visible = false end end local function UpdateESP() if not Settings.ESPEnabled then for _, d in pairs(ESPData) do HideESP(d) end return end local screenBottom = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y) for player, d in pairs(ESPData) do local char = player.Character local head = char and char:FindFirstChild("Head") local root = char and char:FindFirstChild("HumanoidRootPart") local hum = char and char:FindFirstChildOfClass("Humanoid") if not char or not head or not root or not hum or hum.Health <= 0 then HideESP(d) continue end local localRoot = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") local dist = localRoot and (localRoot.Position - root.Position).Magnitude or 0 if dist > Settings.ESPMaxDistance then HideESP(d) continue end local topSP, topVis = Camera:WorldToViewportPoint(head.Position + Vector3.new(0, head.Size.Y/2, 0)) local botSP = Camera:WorldToViewportPoint(root.Position - Vector3.new(0, 3, 0)) local rootSP, rootVis = Camera:WorldToViewportPoint(root.Position) if not topVis then HideESP(d) continue end local h = math.abs(botSP.Y - topSP.Y) local w = h * 0.6 local x = topSP.X - w/2 local y = topSP.Y d.Outline.Size = Vector2.new(w, h) d.Outline.Position = Vector2.new(x, y) d.Outline.Visible = true d.Box.Size = Vector2.new(w, h) d.Box.Position = Vector2.new(x, y) d.Box.Visible = true d.Name.Position = Vector2.new(x + w/2, y - 16) d.Name.Visible = true d.Dist.Text = math.floor(dist) .. "m" d.Dist.Position = Vector2.new(x + w/2, y + h + 2) d.Dist.Visible = true local hp = math.clamp(hum.Health / hum.MaxHealth, 0, 1) local barX = x - 6 d.HpBg.Size = Vector2.new(4, h) d.HpBg.Position = Vector2.new(barX, y) d.HpBg.Visible = true local fh = h * hp d.Hp.Size = Vector2.new(4, fh) d.Hp.Position = Vector2.new(barX, y + (h - fh)) d.Hp.Color = Color3.fromRGB(math.floor(255*(1-hp)), math.floor(255*hp), 0) d.Hp.Visible = true if Settings.Tracer and rootVis then d.Tracer.From = screenBottom d.Tracer.To = Vector2.new(rootSP.X, rootSP.Y) d.Tracer.Visible = true else d.Tracer.Visible = false end end end for _, p in ipairs(Players:GetPlayers()) do AddESP(p) end Players.PlayerAdded:Connect(AddESP) Players.PlayerRemoving:Connect(DropESP) -- ====================== WEAPON CHAMS ====================== local ActiveHighlights = {} local function ClearChams() for _, hl in pairs(ActiveHighlights) do pcall(function() hl:Destroy() end) end table.clear(ActiveHighlights) end local function AddHighlight(adornee) if not adornee then return end for _, hl in pairs(ActiveHighlights) do if hl.Adornee == adornee then return end end local hl = Instance.new("Highlight") hl.Name = "SA_WeaponChams" hl.Adornee = adornee hl.FillColor = Settings.ChamsColor hl.OutlineColor = Settings.ChamsColor hl.FillTransparency = Settings.ChamsFillTransparency hl.OutlineTransparency = Settings.ChamsOutlineTransparency hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.Parent = game:GetService("CoreGui") table.insert(ActiveHighlights, hl) end local function ApplyWeaponChams() ClearChams() if not Settings.WeaponChams then return end local char = LocalPlayer.Character if not char then return end local armNames = {"LeftHand", "RightHand", "LeftLowerArm", "RightLowerArm", "LeftUpperArm", "RightUpperArm", "Left Arm", "Right Arm"} for _, name in ipairs(armNames) do local part = char:FindFirstChild(name) if part then AddHighlight(part) end end local tool = char:FindFirstChildOfClass("Tool") if tool then AddHighlight(tool) end for _, child in ipairs(Camera:GetChildren()) do if child:IsA("Model") or child:IsA("Folder") then AddHighlight(child) end end end RunService.RenderStepped:Connect(function() if Settings.WeaponChams then for _, hl in pairs(ActiveHighlights) do if hl and hl.Parent then hl.FillColor = Settings.ChamsColor hl.OutlineColor = Settings.ChamsColor hl.FillTransparency = Settings.ChamsFillTransparency hl.OutlineTransparency = Settings.ChamsOutlineTransparency end end end end) task.spawn(function() while true do pcall(ApplyWeaponChams) task.wait(0.4) end end) LocalPlayer.CharacterAdded:Connect(function() task.wait(0.8) pcall(ApplyWeaponChams) end) -- ====================== CAMERA FOV ====================== RunService.RenderStepped:Connect(function() if Settings.CameraFOVEnabled then Camera.FieldOfView = Settings.CameraFOV end end) RunService.RenderStepped:Connect(function() local mousePos = UserInputService:GetMouseLocation() FOVCircle.Position = mousePos FOVCircle.Radius = Settings.FOVRadius FOVCircle.Visible = Settings.ShowFOV and Settings.Enabled pcall(UpdateESP) end)