작동 중
XCMEN HUB - DEFUSAL AIMBOT/ESP LEGIT

스크립트 코드
Lua
--[[
Defusal Suite | Rayfield UI | Hold RMB Aimbot
Paste into executor while in-game.
--]]
-- ===================== [ SERVICES ] =====================
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local CollectionService = game:GetService("CollectionService")
local Lighting = game:GetService("Lighting")
local LocalPlayer = Players.LocalPlayer
local Camera = Workspace.CurrentCamera
Workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(function()
Camera = Workspace.CurrentCamera
end)
-- ===================== [ GAME REFERENCES ] =====================
local GAME = {
PlayersFolder = Workspace:WaitForChild("Players"),
Values = ReplicatedStorage:WaitForChild("Values"),
Modules = ReplicatedStorage:WaitForChild("Modules"),
Events = ReplicatedStorage:WaitForChild("Events"),
Weapons = ReplicatedStorage:WaitForChild("Weapons"),
Map = Workspace:WaitForChild("Map"),
}
-- ===================== [ CONFIGURATION ] =====================
local Config = {
ESP = {
Enabled = true,
TeamCheck = true,
MaxDistance = 2000,
ShowBox = true,
ShowTracer = true,
ShowName = true,
ShowHealth = true,
ShowDistance = true,
ShowWeapon = true,
ShowHeadDot = true,
HighlightColor = Color3.fromRGB(255, 60, 60),
VisibleColor = Color3.fromRGB(60, 255, 60),
TracerOrigin = "Bottom",
TextSize = 13,
},
Combat = {
NoRecoil = false,
NoFlash = false,
NoSmoke = false,
},
Visuals = {
DynamicCrosshair = true,
HideDefaultCrosshair = true,
CrosshairSize = 8,
CrosshairColor = Color3.fromRGB(255, 255, 255),
HitMarker = true,
HeadshotMarker = true,
FullBright = false,
CameraFOV = 90,
},
Audio = {
FootstepIndicator = true,
GunshotIndicator = true,
IndicatorSize = 6,
IndicatorColor = Color3.fromRGB(255, 170, 0),
MaxAudioDist = 600,
},
Misc = {
BombESP = true,
},
Aimbot = {
Enabled = false,
Smoothness = 0.08,
FOV = 150,
MaxDistance = 1000,
TeamCheck = true,
VisibilityCheck = true,
TargetPart = "Head",
ShowFOV = true,
}
}
-- ===================== [ RAYFIELD UI LOADER ] =====================
local Rayfield = nil
local loadOk, loadErr = pcall(function()
Rayfield = loadstring(game:HttpGet("https://sirius.menu/rayfield"))()
end)
if not Rayfield then
warn("[DefusalLib] Rayfield load failed: "..tostring(loadErr or "unknown")..". Using built-in fallback.")
local fallbackGui = Instance.new("ScreenGui")
pcall(function() fallbackGui.Parent = game:GetService("CoreGui") end)
if not fallbackGui.Parent then fallbackGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end
local main = Instance.new("Frame", fallbackGui)
main.Size = UDim2.new(0, 420, 0, 540)
main.Position = UDim2.new(0.5, -210, 0.5, -270)
main.BackgroundColor3 = Color3.fromRGB(30,30,30); main.BorderSizePixel = 0; main.Active = true; main.Draggable = true
local title = Instance.new("TextLabel", main); title.Text = "Defusal Suite (Fallback)"; title.Size = UDim2.new(1,0,0,28)
title.BackgroundColor3 = Color3.fromRGB(45,45,45); title.TextColor3 = Color3.new(1,1,1); title.Font = Enum.Font.SourceSansBold; title.TextSize = 18
local tabBar = Instance.new("Frame", main); tabBar.Size = UDim2.new(0,100,1,-28); tabBar.Position = UDim2.new(0,0,0,28); tabBar.BackgroundColor3 = Color3.fromRGB(35,35,35)
local content = Instance.new("Frame", main); content.Size = UDim2.new(1,-100,1,-28); content.Position = UDim2.new(0,100,0,28); content.BackgroundTransparency = 1
Rayfield = { _tabs = {}, _content = content }
function Rayfield:CreateWindow(cfg) return self end
function Rayfield:CreateTab(name)
local btn = Instance.new("TextButton", tabBar)
btn.Size = UDim2.new(1,-4,0,26); btn.Position = UDim2.new(0,2,0,2 + #self._tabs*28)
btn.Text = name; btn.TextColor3 = Color3.new(1,1,1); btn.BackgroundColor3 = Color3.fromRGB(55,55,55); btn.Font = Enum.Font.SourceSansBold; btn.TextSize = 14; btn.BorderSizePixel = 0
local panel = Instance.new("ScrollingFrame", content)
panel.Size = UDim2.new(1,0,1,0); panel.BackgroundTransparency = 1; panel.ScrollBarThickness = 4; panel.Visible = false
panel.CanvasSize = UDim2.new(0,0,0,0)
local list = Instance.new("UIListLayout", panel); list.Padding = UDim.new(0,5)
list:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
panel.CanvasSize = UDim2.new(0,0,0,list.AbsoluteContentSize.Y + 10)
end)
local tabObj = {
_panel = panel,
CreateSection = function(s, txt)
local l = Instance.new("TextLabel", panel); l.Text = txt; l.Size = UDim2.new(1,-10,0,20); l.TextColor3 = Color3.fromRGB(200,200,200)
l.Font = Enum.Font.SourceSansBold; l.TextSize = 15; l.BackgroundTransparency = 1
end,
CreateToggle = function(s, args)
local b = Instance.new("TextButton", panel); b.Size = UDim2.new(1,-10,0,24); b.Text = args.Name .. ": OFF"
b.BackgroundColor3 = Color3.fromRGB(55,55,55); b.TextColor3 = Color3.new(1,1,1); b.BorderSizePixel = 0
local st = args.CurrentValue or false
b.MouseButton1Click:Connect(function()
st = not st; b.Text = args.Name .. (st and ": ON" or ": OFF")
b.BackgroundColor3 = st and Color3.fromRGB(0,130,0) or Color3.fromRGB(55,55,55)
pcall(args.Callback, st)
end)
if st then b.Text = args.Name .. ": ON"; b.BackgroundColor3 = Color3.fromRGB(0,130,0) end
end,
CreateSlider = function(s, args)
local f = Instance.new("Frame", panel); f.Size = UDim2.new(1,-10,0,42); f.BackgroundTransparency = 1
local lbl = Instance.new("TextLabel", f); lbl.Size = UDim2.new(1,0,0,16); lbl.Text = args.Name .. ": " .. tostring(args.CurrentValue or args.Range[1]); lbl.TextColor3 = Color3.new(1,1,1); lbl.BackgroundTransparency = 1; lbl.TextSize = 14
local track = Instance.new("Frame", f); track.Size = UDim2.new(1,0,0,10); track.Position = UDim2.new(0,0,0,18); track.BackgroundColor3 = Color3.fromRGB(40,40,40); track.BorderSizePixel = 0
local fill = Instance.new("Frame", track); fill.Size = UDim2.new(0,0,1,0); fill.BackgroundColor3 = Color3.fromRGB(0,120,255); fill.BorderSizePixel = 0
local min, max = args.Range[1], args.Range[2]
local function update(inp)
local scale = math.clamp((inp.Position.X - track.AbsolutePosition.X)/track.AbsoluteSize.X, 0, 1)
local val = math.floor((min + scale*(max-min)) / (args.Increment or 1)) * (args.Increment or 1)
fill.Size = UDim2.new(scale,0,1,0)
lbl.Text = args.Name .. ": " .. val
pcall(args.Callback, val)
end
local dragging = false
track.InputBegan:Connect(function(inp) if inp.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true; update(inp) end end)
UserInputService.InputChanged:Connect(function(inp) if dragging and inp.UserInputType == Enum.UserInputType.MouseMovement then update(inp) end end)
UserInputService.InputEnded:Connect(function(inp) if inp.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end)
end,
CreateDropdown = function(s, args)
local b = Instance.new("TextButton", panel); b.Size = UDim2.new(1,-10,0,24); b.Text = args.Name .. ": " .. tostring(args.CurrentOption or args.Options[1])
b.BackgroundColor3 = Color3.fromRGB(55,55,55); b.TextColor3 = Color3.new(1,1,1); b.BorderSizePixel = 0
b.MouseButton1Click:Connect(function()
local idx = table.find(args.Options, args.CurrentOption) or 1
idx = idx % #args.Options + 1
args.CurrentOption = args.Options[idx]
b.Text = args.Name .. ": " .. tostring(args.CurrentOption)
pcall(args.Callback, args.CurrentOption)
end)
end,
CreateColorPicker = function(s, args)
pcall(args.Callback, args.Color)
end,
CreateButton = function(s, args)
local b = Instance.new("TextButton", panel); b.Size = UDim2.new(1,-10,0,24); b.Text = args.Name
b.BackgroundColor3 = Color3.fromRGB(70,70,70); b.TextColor3 = Color3.new(1,1,1); b.BorderSizePixel = 0
b.MouseButton1Click:Connect(function() pcall(args.Callback) end)
end,
}
btn.MouseButton1Click:Connect(function()
for _, t in ipairs(self._tabs) do t._panel.Visible = false; t._btn.BackgroundColor3 = Color3.fromRGB(55,55,55) end
panel.Visible = true; btn.BackgroundColor3 = Color3.fromRGB(80,80,80)
end)
tabObj._btn = btn
table.insert(self._tabs, tabObj)
if #self._tabs == 1 then panel.Visible = true; btn.BackgroundColor3 = Color3.fromRGB(80,80,80) end
return tabObj
end
Rayfield = Rayfield:CreateWindow({})
end
local Window = Rayfield:CreateWindow({
Name = "XCMEN HUB - DEFUSAL",
LoadingTitle = "XCMEN HUB - DEFUSAL",
LoadingSubtitle = "wait its loading...",
ConfigurationSaving = { Enabled = true, FolderName = "DefusalSuite", FileName = "Config" },
Discord = { Enabled = false },
KeySystem = false,
})
-- ===================== [ UTILITY ] =====================
local Utils = {}
function Utils.GetCharacter(player)
if player.Character and player.Character.Parent then return player.Character end
return GAME.PlayersFolder:FindFirstChild(player.Name)
end
function Utils.GetTeam(player)
return player:GetAttribute("Team") or "Spectator"
end
function Utils.IsEnemy(player)
if not Config.ESP.TeamCheck then return true end
if player == LocalPlayer then return false end
return Utils.GetTeam(LocalPlayer) ~= Utils.GetTeam(player) and Utils.GetTeam(player) ~= "Spectator"
end
function Utils.IsAlivePlayer(player)
local h = player:GetAttribute("Health")
return h and h > 0 and Utils.GetTeam(player) ~= "Spectator"
end
function Utils.IsValidTarget(character)
if not character then return false end
if not character:IsDescendantOf(Workspace) then return false end
local hum = character:FindFirstChildOfClass("Humanoid")
local hrp = character:FindFirstChild("HumanoidRootPart")
return hum and hrp and hum.Health > 0
end
function Utils.WorldToScreen(pos)
local sp, onScreen = Camera:WorldToViewportPoint(pos)
return Vector2.new(sp.X, sp.Y), onScreen, sp.Z
end
function Utils.GetWeaponName(character)
local g = character:GetAttribute("WhatGun")
if g and g ~= "" then return g end
local tool = character:FindFirstChildOfClass("Tool")
return tool and tool.Name or "Hands"
end
-- ===================== [ OVERLAY GUI ] =====================
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "DefusalSuiteOverlay"
ScreenGui.ResetOnSpawn = false
ScreenGui.IgnoreGuiInset = true
ScreenGui.DisplayOrder = 999998
pcall(function() ScreenGui.Parent = game.CoreGui end)
if not ScreenGui.Parent then ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end
-- ===================== [ ESP SYSTEM ] =====================
local ESP = { objects = {} }
function ESP:CreateObject(player)
local t = {}
local hl = Instance.new("Highlight")
hl.Name = "D_HL"; hl.FillTransparency = 0.65; hl.OutlineTransparency = 0
hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop; hl.Enabled = false; hl.Parent = ScreenGui
t.Highlight = hl
local bb = Instance.new("BillboardGui")
bb.Name = "D_BB"; bb.AlwaysOnTop = true; bb.Size = UDim2.new(0, 200, 0, 100)
bb.StudsOffset = Vector3.new(0, 2.6, 0)
local nl = Instance.new("TextLabel", bb); nl.Name = "Name"
nl.BackgroundTransparency = 1; nl.Size = UDim2.new(1, 0, 0, 15)
nl.TextColor3 = Color3.new(1, 1, 1); nl.TextStrokeTransparency = 0
nl.Font = Enum.Font.SourceSansBold; nl.TextSize = Config.ESP.TextSize
local hbBg = Instance.new("Frame", bb); hbBg.Name = "HBbg"
hbBg.BackgroundColor3 = Color3.new(0.12, 0.12, 0.12); hbBg.BorderSizePixel = 0
hbBg.Size = UDim2.new(0.55, 0, 0, 3); hbBg.Position = UDim2.new(0.225, 0, 0, 17)
local hb = Instance.new("Frame", hbBg); hb.Name = "HB"
hb.BackgroundColor3 = Color3.fromRGB(0, 255, 0); hb.BorderSizePixel = 0; hb.Size = UDim2.new(1, 0, 1, 0)
local il = Instance.new("TextLabel", bb); il.Name = "Info"
il.BackgroundTransparency = 1; il.Position = UDim2.new(0, 0, 0, 22)
il.Size = UDim2.new(1, 0, 0, 13); il.TextColor3 = Color3.new(1, 1, 1)
il.TextStrokeTransparency = 0; il.Font = Enum.Font.SourceSans; il.TextSize = Config.ESP.TextSize - 1
bb.Parent = ScreenGui
t.Billboard = bb; t.NameLabel = nl; t.HealthBar = hb; t.HealthBg = hbBg; t.InfoLabel = il
t.BoxLines = {}
for i = 1, 4 do
local f = Instance.new("Frame", ScreenGui); f.Name = "BL"..i; f.BorderSizePixel = 0
f.BackgroundColor3 = Config.ESP.HighlightColor; f.Visible = false
table.insert(t.BoxLines, f)
end
local dot = Instance.new("Frame", ScreenGui); dot.Name = "HD"; dot.BorderSizePixel = 0
dot.BackgroundColor3 = Color3.new(1,1,1); dot.Size = UDim2.new(0,4,0,4)
dot.AnchorPoint = Vector2.new(0.5,0.5); dot.Visible = false
Instance.new("UICorner", dot).CornerRadius = UDim.new(1,0)
t.HeadDot = dot
local tr = Instance.new("Frame", ScreenGui); tr.Name = "TR"; tr.BorderSizePixel = 0
tr.BackgroundColor3 = Config.ESP.HighlightColor; tr.Visible = false; tr.AnchorPoint = Vector2.new(0.5,0.5)
t.Tracer = tr
self.objects[player] = t
return t
end
function ESP:CleanPlayer(player)
local t = self.objects[player]; if not t then return end
if t.Highlight then t.Highlight:Destroy() end
if t.Billboard then t.Billboard:Destroy() end
for _, l in ipairs(t.BoxLines or {}) do l:Destroy() end
if t.HeadDot then t.HeadDot:Destroy() end
if t.Tracer then t.Tracer:Destroy() end
self.objects[player] = nil
end
function ESP:SetVisible(t, state)
if not t then return end
if t.Highlight then t.Highlight.Enabled = state and Config.ESP.Enabled end
if t.Billboard then t.Billboard.Enabled = state end
for _, l in ipairs(t.BoxLines or {}) do l.Visible = state and Config.ESP.ShowBox end
if t.Tracer then t.Tracer.Visible = state and Config.ESP.ShowTracer end
if t.HeadDot then t.HeadDot.Visible = state and Config.ESP.ShowHeadDot end
end
function ESP:Update()
if not Config.ESP.Enabled then
for _, t in pairs(self.objects) do self:SetVisible(t, false) end
return
end
local myChar = Utils.GetCharacter(LocalPlayer)
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
for _, plr in ipairs(Players:GetPlayers()) do
if plr == LocalPlayer then continue end
if not Utils.IsEnemy(plr) then
if self.objects[plr] then self:SetVisible(self.objects[plr], false) end
continue
end
if not Utils.IsAlivePlayer(plr) then
if self.objects[plr] then self:SetVisible(self.objects[plr], false) end
continue
end
local char = Utils.GetCharacter(plr)
if not Utils.IsValidTarget(char) then
if self.objects[plr] then self:SetVisible(self.objects[plr], false) end
continue
end
local hrp = char:FindFirstChild("HumanoidRootPart")
local head = char:FindFirstChild("Head")
local hum = char:FindFirstChildOfClass("Humanoid")
if not hrp or not head or not hum then continue end
local dist = myRoot and (hrp.Position - myRoot.Position).Magnitude or 0
if dist > Config.ESP.MaxDistance then
if self.objects[plr] then self:SetVisible(self.objects[plr], false) end
continue
end
local obj = self.objects[plr] or self:CreateObject(plr)
self:SetVisible(obj, true)
if Config.ESP.Enabled then
obj.Highlight.Parent = char
local rp = RaycastParams.new(); rp.FilterType = Enum.RaycastFilterType.Blacklist; rp.FilterDescendantsInstances = {Camera, myChar}
local res = Workspace:Raycast(Camera.CFrame.Position, head.Position - Camera.CFrame.Position, rp)
local visible = not res or res.Instance:IsDescendantOf(char)
local col = visible and Config.ESP.VisibleColor or Config.ESP.HighlightColor
obj.Highlight.FillColor = col; obj.Highlight.OutlineColor = col
end
obj.Billboard.Adornee = head
obj.NameLabel.Text = plr.Name; obj.NameLabel.Visible = Config.ESP.ShowName
local r = math.clamp(hum.Health / hum.MaxHealth, 0, 1)
obj.HealthBar.Size = UDim2.new(r, 0, 1, 0)
obj.HealthBar.BackgroundColor3 = Color3.fromRGB(255*(1-r), 255*r, 0)
obj.HealthBar.Visible = Config.ESP.ShowHealth; obj.HealthBg.Visible = Config.ESP.ShowHealth
local info = {}
if Config.ESP.ShowDistance then table.insert(info, math.floor(dist).."m") end
if Config.ESP.ShowWeapon then table.insert(info, "["..Utils.GetWeaponName(char).."]") end
obj.InfoLabel.Text = table.concat(info, " "); obj.InfoLabel.Visible = #info > 0
local tp, tv = Utils.WorldToScreen(head.Position + Vector3.new(0, 0.5, 0))
local bp, bv = Utils.WorldToScreen(hrp.Position - Vector3.new(0, 3, 0))
if Config.ESP.ShowBox and tv and bv then
local h = math.abs(bp.Y-tp.Y); local w = h*0.55; local cx=(tp.X+bp.X)/2; local cy=(tp.Y+bp.Y)/2
local function line(i,px,py,sx,sy)
local f=obj.BoxLines[i]; f.Position=UDim2.new(0,px,0,py); f.Size=UDim2.new(0,sx,0,sy); f.Visible=true
end
line(1,cx-w/2,cy-h/2,w,1); line(2,cx-w/2,cy+h/2,w,1); line(3,cx-w/2,cy-h/2,1,h); line(4,cx+w/2,cy-h/2,1,h)
else
for _, f in ipairs(obj.BoxLines) do f.Visible=false end
end
if Config.ESP.ShowTracer then
local origin = Config.ESP.TracerOrigin=="Center" and Vector2.new(Camera.ViewportSize.X/2,Camera.ViewportSize.Y/2)
or (Config.ESP.TracerOrigin=="Mouse" and UserInputService:GetMouseLocation() or Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y))
local tgt = Vector2.new(tp.X,tp.Y); local d=tgt-origin; local len=d.Magnitude
if len>0 then
local mid=origin+d/2; local ang=math.deg(math.atan2(d.Y,d.X))
obj.Tracer.Position=UDim2.new(0,mid.X,0,mid.Y); obj.Tracer.Size=UDim2.new(0,len,0,1.2); obj.Tracer.Rotation=ang; obj.Tracer.Visible=true
else
obj.Tracer.Visible=false
end
else
obj.Tracer.Visible=false
end
if Config.ESP.ShowHeadDot then
local hp,hv = Utils.WorldToScreen(head.Position)
obj.HeadDot.Position = UDim2.new(0,hp.X,0,hp.Y); obj.HeadDot.Visible = hv
end
end
end
-- ===================== [ TARGET HIGHLIGHT ] =====================
local Targeting = {}
function Targeting:Update()
for _,obj in pairs(ESP.objects) do if obj.NameLabel then obj.NameLabel.TextColor3 = Color3.new(1,1,1) end end
local best,bestDist,center = nil,math.huge,Camera.ViewportSize/2
for _,plr in ipairs(Players:GetPlayers()) do
if plr==LocalPlayer or not Utils.IsEnemy(plr) then continue end
local char=Utils.GetCharacter(plr); if not Utils.IsValidTarget(char) then continue end
local head=char:FindFirstChild("Head"); if not head then continue end
local p,o=Utils.WorldToScreen(head.Position); if not o then continue end
local d=(p-center).Magnitude; if d<bestDist and d<250 then bestDist=d; best=ESP.objects[plr] end
end
if best and best.NameLabel then best.NameLabel.TextColor3 = Color3.fromRGB(255,0,255) end
end
-- ===================== [ VISUALS ] =====================
local Visuals = { crossLines = {}, defaultCrosshairParts = {} }
function Visuals:InitCrosshair()
for i = 1, 4 do
local f = Instance.new("Frame", ScreenGui)
f.Name = "CC"..i; f.BorderSizePixel = 0; f.BackgroundColor3 = Config.Visuals.CrosshairColor; f.Visible = false; f.ZIndex = 10
table.insert(self.crossLines, f)
end
end
function Visuals:FindDefaultCrosshair()
local hud = LocalPlayer.PlayerGui:FindFirstChild("HUD", true); if not hud then return end
local cross = hud:FindFirstChild("Crosshair", true) or hud:FindFirstChild("reticle", true); if not cross then return end
for _,v in ipairs(cross:GetDescendants()) do if v:IsA("GuiObject") then table.insert(self.defaultCrosshairParts, v) end end
end
function Visuals:UpdateDefaultCrosshair()
for _,v in ipairs(self.defaultCrosshairParts) do
v.Visible = not (Config.Visuals.HideDefaultCrosshair and Config.Visuals.DynamicCrosshair)
end
end
function Visuals:UpdateCrosshair()
self:UpdateDefaultCrosshair()
if not Config.Visuals.DynamicCrosshair then
for _,f in ipairs(self.crossLines) do f.Visible=false end
return
end
local c = Camera.ViewportSize/2; local base = Config.Visuals.CrosshairSize
local char = Utils.GetCharacter(LocalPlayer); local hum = char and char:FindFirstChildOfClass("Humanoid")
local spread = base
if hum then
if hum.MoveDirection.Magnitude > 0.1 then spread = spread + 4 end
local s = hum:GetState()
if s == Enum.HumanoidStateType.Jumping or s == Enum.HumanoidStateType.Freefall then spread = spread + 8 end
end
local l = self.crossLines
l[1].Position = UDim2.new(0, c.X, 0, c.Y - spread - 6); l[1].Size = UDim2.new(0, 2, 0, 5)
l[2].Position = UDim2.new(0, c.X, 0, c.Y + spread + 1); l[2].Size = UDim2.new(0, 2, 0, 5)
l[3].Position = UDim2.new(0, c.X - spread - 6, 0, c.Y); l[3].Size = UDim2.new(0, 5, 0, 2)
l[4].Position = UDim2.new(0, c.X + spread + 1, 0, c.Y); l[4].Size = UDim2.new(0, 5, 0, 2)
for _,f in ipairs(l) do f.Visible = true; f.BackgroundColor3 = Config.Visuals.CrosshairColor end
end
function Visuals:HitMarker(headshot)
if headshot and not Config.Visuals.HeadshotMarker then return end
if not headshot and not Config.Visuals.HitMarker then return end
local col = headshot and Color3.fromRGB(255, 215, 0) or Config.Visuals.CrosshairColor
local size = headshot and 28 or 18
local f = Instance.new("Frame", ScreenGui)
f.AnchorPoint = Vector2.new(0.5, 0.5); f.Position = UDim2.new(0, Camera.ViewportSize.X/2, 0, Camera.ViewportSize.Y/2)
f.Size = UDim2.new(0, size, 0, size); f.BackgroundTransparency = 1; f.ZIndex = 20
local t = Instance.new("TextLabel", f); t.Text = headshot and "" or "+"; t.Size = UDim2.new(1, 0, 1, 0)
t.BackgroundTransparency = 1; t.TextColor3 = col; t.TextStrokeTransparency = 0
t.TextSize = size; t.Font = Enum.Font.SourceSansBold
task.delay(0.25, function()
local tw = TweenService:Create(f, TweenInfo.new(0.2), {Size = UDim2.new(0, 0, 0, 0), Rotation = 90})
tw:Play(); tw.Completed:Wait(); f:Destroy()
end)
end
local fovFrame = Instance.new("Frame", ScreenGui)
fovFrame.Name = "FOVC"; fovFrame.AnchorPoint = Vector2.new(0.5, 0.5); fovFrame.BackgroundTransparency = 1
fovFrame.BorderSizePixel = 2; fovFrame.BorderColor3 = Color3.new(1, 1, 1); fovFrame.Size = UDim2.new(0, 300, 0, 300)
fovFrame.Position = UDim2.new(0.5, 0, 0.5, 0); fovFrame.Visible = false; fovFrame.ZIndex = 5
Instance.new("UICorner", fovFrame).CornerRadius = UDim.new(1, 0)
-- ===================== [ COMBAT ] =====================
local Combat = {}
function Combat:ApplyRecoil()
if not Config.Combat.NoRecoil then return end
local vm = Workspace:FindFirstChild("DummyVM"); if not vm then return end
for _, v in ipairs(vm:GetChildren()) do
if v:IsA("CFrameValue") then v.Value = CFrame.new()
elseif v:IsA("Vector3Value") then v.Value = Vector3.zero end
end
end
function Combat:UpdateFrame()
if Config.Combat.NoFlash then
local pg = LocalPlayer:FindFirstChild("PlayerGui"); if pg then
for _, g in ipairs(pg:GetDescendants()) do
if g:IsA("Frame") and g.BackgroundColor3 == Color3.new(1, 1, 1) and g.Size.X.Scale >= 1 and g.Size.Y.Scale >= 1 and g.BackgroundTransparency < 1 then
g.BackgroundTransparency = 1
end
end
end
for _, e in ipairs(Lighting:GetChildren()) do
if e.Name:lower():find("flash") and (e:IsA("BlurEffect") or e:IsA("ColorCorrectionEffect")) then e.Enabled = false end
end
end
if Config.Combat.NoSmoke then
for _, obj in ipairs(CollectionService:GetTagged("Smoke")) do
if obj:IsA("BasePart") then obj.Transparency = 1 end
for _, d in ipairs(obj:GetDescendants()) do
if d:IsA("ParticleEmitter") or d:IsA("Smoke") then d.Enabled = false end
end
end
end
end
-- ===================== [ AUDIO ESP ] =====================
local AudioESP = {}
function AudioESP:CreateIndicator(pos, icon)
local myChar = Utils.GetCharacter(LocalPlayer); local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart"); if not myRoot then return end
if (pos - myRoot.Position).Magnitude > Config.Audio.MaxAudioDist then return end
local part = Instance.new("Part")
part.Anchored = true; part.CanCollide = false; part.Transparency = 1; part.Size = Vector3.new(1, 1, 1)
part.Position = pos; part.Parent = Workspace.Terrain
local bb = Instance.new("BillboardGui")
bb.Size = UDim2.new(0, 40, 0, 40); bb.AlwaysOnTop = true; bb.StudsOffset = Vector3.new(0, 2.5, 0)
bb.Adornee = part; bb.Parent = ScreenGui
local lbl = Instance.new("TextLabel", bb); lbl.Text = icon; lbl.Size = UDim2.new(1, 0, 1, 0)
lbl.BackgroundTransparency = 1; lbl.TextSize = Config.Audio.IndicatorSize * 3; lbl.TextStrokeTransparency = 0
task.delay(1.2, function() bb:Destroy(); part:Destroy() end)
end
function AudioESP:Listen()
CollectionService:GetInstanceAddedSignal("SoundYes"):Connect(function(inst)
if not inst:IsA("Sound") then return end
local parent = inst.Parent; if not parent then return end; if parent:IsA("Camera") then return end
local isGun = inst:GetAttribute("ShootSound") or (inst.Name and inst.Name:lower():find("shoot"))
local isStep = inst.Name and inst.Name:lower():find("step")
local pos = nil
if parent:IsA("BasePart") then pos = parent.Position elseif parent:IsA("Attachment") then pos = parent.WorldPosition end
if isGun and Config.Audio.GunshotIndicator and pos then self:CreateIndicator(pos, "") end
if isStep and Config.Audio.FootstepIndicator and pos then self:CreateIndicator(pos, "") end
end)
end
-- ===================== [ EXTRAS ] =====================
local Extras = { bombGui = nil, lastBombSearch = 0, bombCache = nil }
function Extras:FindBomb()
local now = tick(); if now - self.lastBombSearch < 2 then return self.bombCache end; self.lastBombSearch = now
for _, n in ipairs({"C4", "Bomb", "PlantedBomb", "PlantedC4"}) do
local b = Workspace:FindFirstChild(n); if b then self.bombCache = b; return b end
end
for _, obj in ipairs(Workspace:GetChildren()) do
for _, n in ipairs({"C4", "Bomb", "PlantedBomb", "PlantedC4"}) do
if obj.Name == n then self.bombCache = obj; return obj end
end
end
self.bombCache = nil; return nil
end
function Extras:BombESP()
if not Config.Misc.BombESP then
if self.bombGui then self.bombGui.Enabled = false end
return
end
local bomb = self:FindBomb()
if not bomb then
if self.bombGui then self.bombGui.Enabled = false end
return
end
if not self.bombGui then
local bb = Instance.new("BillboardGui")
bb.Size = UDim2.new(0, 120, 0, 36); bb.AlwaysOnTop = true; bb.StudsOffset = Vector3.new(0, 3, 0)
local lbl = Instance.new("TextLabel", bb); lbl.Text = " BOMB"; lbl.TextColor3 = Color3.fromRGB(255, 0, 0)
lbl.TextStrokeTransparency = 0; lbl.Size = UDim2.new(1, 0, 1, 0); lbl.BackgroundTransparency = 1
lbl.Font = Enum.Font.SourceSansBold; lbl.TextSize = 18; bb.Parent = ScreenGui; self.bombGui = bb
end
self.bombGui.Adornee = bomb:IsA("Model") and bomb:FindFirstChildWhichIsA("BasePart", true) or bomb
self.bombGui.Enabled = true
end
local defBrightness, defShadows = Lighting.Brightness, Lighting.GlobalShadows
function Extras:Fullbright()
if Config.Visuals.FullBright then Lighting.Brightness = 8; Lighting.GlobalShadows = false
else Lighting.Brightness = defBrightness; Lighting.GlobalShadows = defShadows end
end
-- ===================== [ AIMBOT ] =====================
local Aimbot = { Lock = false }
function Aimbot:GetTarget()
local bestDist, bestPart, center = math.huge, nil, Camera.ViewportSize / 2
local myChar = Utils.GetCharacter(LocalPlayer); local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
for _, plr in ipairs(Players:GetPlayers()) do
if plr == LocalPlayer then continue end
if Config.Aimbot.TeamCheck and not Utils.IsEnemy(plr) then continue end
if not Utils.IsAlivePlayer(plr) then continue end
local char = Utils.GetCharacter(plr)
if not Utils.IsValidTarget(char) then continue end
local part = char:FindFirstChild(Config.Aimbot.TargetPart)
if not part then continue end
local d3d = myRoot and (part.Position - myRoot.Position).Magnitude or 0
if d3d > Config.Aimbot.MaxDistance then continue end
local pos, onScreen = Utils.WorldToScreen(part.Position)
if not onScreen then continue end
local dist2D = (pos - center).Magnitude
if dist2D > Config.Aimbot.FOV then continue end
if Config.Aimbot.VisibilityCheck then
local rp = RaycastParams.new()
rp.FilterType = Enum.RaycastFilterType.Blacklist
rp.FilterDescendantsInstances = {Camera, myChar}
local res = Workspace:Raycast(Camera.CFrame.Position, part.Position - Camera.CFrame.Position, rp)
if res and not res.Instance:IsDescendantOf(char) then continue end
end
if dist2D < bestDist then
bestDist = dist2D
bestPart = part
end
end
return bestPart
end
-- ===================== [ SAFE UI BUILDER ] =====================
local function safeCreate(tab, method, args)
if not tab then return end
local fn = tab[method]
if type(fn) ~= "function" then return end
local ok, res = pcall(fn, tab, args)
if not ok then warn("[UI] " .. tostring(method) .. " failed: " .. tostring(res)) end
return res
end
-- TAB ORDER: Aimbot, ESP, Combat, Visuals, Audio, Misc
local TabAimbot = Window:CreateTab("Aimbot")
local TabESP = Window:CreateTab("ESP")
local TabCombat = Window:CreateTab("Combat")
local TabVis = Window:CreateTab("Visuals")
local TabAudio = Window:CreateTab("Audio")
local TabMisc = Window:CreateTab("Misc")
-- Aimbot Tab
TabAimbot:CreateSection("Aimbot (Hold RMB)")
safeCreate(TabAimbot, "CreateToggle", {Name="Enabled", CurrentValue=Config.Aimbot.Enabled, Flag="Aim_Enabled", Callback=function(v) Config.Aimbot.Enabled=v end})
safeCreate(TabAimbot, "CreateSlider", {Name="Smoothness (0.1 Hard / 1 Smooth)", Range={0.01,1}, Increment=0.01, CurrentValue=Config.Aimbot.Smoothness, Flag="Aim_Smooth", Callback=function(v) Config.Aimbot.Smoothness=v end})
safeCreate(TabAimbot, "CreateSlider", {Name="Aim FOV", Range={10,800}, Increment=10, CurrentValue=Config.Aimbot.FOV, Flag="Aim_FOV", Callback=function(v) Config.Aimbot.FOV=v end})
safeCreate(TabAimbot, "CreateSlider", {Name="Max Distance", Range={0,5000}, Increment=50, CurrentValue=Config.Aimbot.MaxDistance, Flag="Aim_MaxDist", Callback=function(v) Config.Aimbot.MaxDistance=v end})
safeCreate(TabAimbot, "CreateToggle", {Name="Team Check", CurrentValue=Config.Aimbot.TeamCheck, Flag="Aim_Team", Callback=function(v) Config.Aimbot.TeamCheck=v end})
safeCreate(TabAimbot, "CreateToggle", {Name="Visibility Check", CurrentValue=Config.Aimbot.VisibilityCheck, Flag="Aim_Vis", Callback=function(v) Config.Aimbot.VisibilityCheck=v end})
safeCreate(TabAimbot, "CreateDropdown", {Name="Target Part", Options={"Head","HumanoidRootPart","Torso"}, CurrentOption=Config.Aimbot.TargetPart, Flag="Aim_Part", Callback=function(v) Config.Aimbot.TargetPart=v end})
safeCreate(TabAimbot, "CreateToggle", {Name="Show FOV Circle", CurrentValue=Config.Aimbot.ShowFOV, Flag="Aim_ShowFOV", Callback=function(v) Config.Aimbot.ShowFOV=v end})
-- ESP Tab
TabESP:CreateSection("Enemy ESP")
safeCreate(TabESP, "CreateToggle", {Name="Enabled", CurrentValue=Config.ESP.Enabled, Flag="ESP_Enabled", Callback=function(v) Config.ESP.Enabled=v end})
safeCreate(TabESP, "CreateToggle", {Name="Team Check", CurrentValue=Config.ESP.TeamCheck, Flag="ESP_Team", Callback=function(v) Config.ESP.TeamCheck=v end})
safeCreate(TabESP, "CreateToggle", {Name="Box", CurrentValue=Config.ESP.ShowBox, Flag="ESP_Box", Callback=function(v) Config.ESP.ShowBox=v end})
safeCreate(TabESP, "CreateToggle", {Name="Tracers", CurrentValue=Config.ESP.ShowTracer, Flag="ESP_Tracer", Callback=function(v) Config.ESP.ShowTracer=v end})
safeCreate(TabESP, "CreateToggle", {Name="Names", CurrentValue=Config.ESP.ShowName, Flag="ESP_Name", Callback=function(v) Config.ESP.ShowName=v end})
safeCreate(TabESP, "CreateToggle", {Name="Health", CurrentValue=Config.ESP.ShowHealth, Flag="ESP_HP", Callback=function(v) Config.ESP.ShowHealth=v end})
safeCreate(TabESP, "CreateToggle", {Name="Distance", CurrentValue=Config.ESP.ShowDistance, Flag="ESP_Dist", Callback=function(v) Config.ESP.ShowDistance=v end})
safeCreate(TabESP, "CreateToggle", {Name="Weapon", CurrentValue=Config.ESP.ShowWeapon, Flag="ESP_Weap", Callback=function(v) Config.ESP.ShowWeapon=v end})
safeCreate(TabESP, "CreateToggle", {Name="Head Dot", CurrentValue=Config.ESP.ShowHeadDot, Flag="ESP_Dot", Callback=function(v) Config.ESP.ShowHeadDot=v end})
safeCreate(TabESP, "CreateSlider", {Name="Max Distance", Range={0,5000}, Increment=10, CurrentValue=Config.ESP.MaxDistance, Flag="ESP_MaxDist", Callback=function(v) Config.ESP.MaxDistance=v end})
safeCreate(TabESP, "CreateDropdown", {Name="Tracer Origin", Options={"Bottom","Center","Mouse"}, CurrentOption=Config.ESP.TracerOrigin, Flag="ESP_TracerOrg", Callback=function(v) Config.ESP.TracerOrigin=v end})
-- Combat Tab
TabCombat:CreateSection("Combat")
safeCreate(TabCombat, "CreateToggle", {Name="No Recoil", CurrentValue=Config.Combat.NoRecoil, Flag="Cbt_Recoil", Callback=function(v) Config.Combat.NoRecoil=v end})
safeCreate(TabCombat, "CreateToggle", {Name="No Flash", CurrentValue=Config.Combat.NoFlash, Flag="Cbt_Flash", Callback=function(v) Config.Combat.NoFlash=v end})
safeCreate(TabCombat, "CreateToggle", {Name="No Smoke", CurrentValue=Config.Combat.NoSmoke, Flag="Cbt_Smoke", Callback=function(v) Config.Combat.NoSmoke=v end})
-- Visuals Tab
TabVis:CreateSection("Visuals")
safeCreate(TabVis, "CreateToggle", {Name="Dynamic Crosshair", CurrentValue=Config.Visuals.DynamicCrosshair, Flag="Vis_Cross", Callback=function(v) Config.Visuals.DynamicCrosshair=v end})
safeCreate(TabVis, "CreateToggle", {Name="Hide Default Crosshair", CurrentValue=Config.Visuals.HideDefaultCrosshair, Flag="Vis_HideDef", Callback=function(v) Config.Visuals.HideDefaultCrosshair=v end})
safeCreate(TabVis, "CreateSlider", {Name="Crosshair Size", Range={0,50}, Increment=1, CurrentValue=Config.Visuals.CrosshairSize, Flag="Vis_CrossSize", Callback=function(v) Config.Visuals.CrosshairSize=v end})
safeCreate(TabVis, "CreateToggle", {Name="Hit Markers", CurrentValue=Config.Visuals.HitMarker, Flag="Vis_Hit", Callback=function(v) Config.Visuals.HitMarker=v end})
safeCreate(TabVis, "CreateToggle", {Name="Headshot Markers", CurrentValue=Config.Visuals.HeadshotMarker, Flag="Vis_Headshot", Callback=function(v) Config.Visuals.HeadshotMarker=v end})
safeCreate(TabVis, "CreateToggle", {Name="Full Bright", CurrentValue=Config.Visuals.FullBright, Flag="Vis_FB", Callback=function(v) Config.Visuals.FullBright=v end})
safeCreate(TabVis, "CreateSlider", {Name="Camera FOV", Range={30,120}, Increment=1, CurrentValue=Config.Visuals.CameraFOV, Flag="Vis_FOV", Callback=function(v) Config.Visuals.CameraFOV=v; Camera.FieldOfView=v end})
-- Audio Tab
TabAudio:CreateSection("Audio ESP")
safeCreate(TabAudio, "CreateToggle", {Name="Footsteps", CurrentValue=Config.Audio.FootstepIndicator, Flag="Aud_Step", Callback=function(v) Config.Audio.FootstepIndicator=v end})
safeCreate(TabAudio, "CreateToggle", {Name="Gunshots", CurrentValue=Config.Audio.GunshotIndicator, Flag="Aud_Gun", Callback=function(v) Config.Audio.GunshotIndicator=v end})
safeCreate(TabAudio, "CreateSlider", {Name="Max Audio Dist", Range={0,2000}, Increment=10, CurrentValue=Config.Audio.MaxAudioDist, Flag="Aud_Max", Callback=function(v) Config.Audio.MaxAudioDist=v end})
-- Misc Tab
TabMisc:CreateSection("Extras")
safeCreate(TabMisc, "CreateToggle", {Name="Bomb ESP", CurrentValue=Config.Misc.BombESP, Flag="Misc_Bomb", Callback=function(v) Config.Misc.BombESP=v end})
-- ===================== [ MAIN LOOPS ] =====================
Visuals:InitCrosshair()
Visuals:FindDefaultCrosshair()
RunService.RenderStepped:Connect(function()
ESP:Update(); Targeting:Update(); Visuals:UpdateCrosshair(); Combat:UpdateFrame(); Extras:BombESP(); Extras:Fullbright()
Camera.FieldOfView = Config.Visuals.CameraFOV
if Config.Aimbot.ShowFOV then
fovFrame.Visible = true
local d = Config.Aimbot.FOV * 2
fovFrame.Size = UDim2.new(0, d, 0, d)
else
fovFrame.Visible = false
end
if Config.Aimbot.Enabled and Aimbot.Lock then
local target = Aimbot:GetTarget()
if target then
local alpha = math.clamp(1.05 - Config.Aimbot.Smoothness, 0.02, 1)
Camera.CFrame = Camera.CFrame:Lerp(CFrame.new(Camera.CFrame.Position, target.Position), alpha)
end
end
end)
RunService.Heartbeat:Connect(function()
Combat:ApplyRecoil()
end)
UserInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if input.UserInputType == Enum.UserInputType.MouseButton2 then
Aimbot.Lock = true
end
if input.UserInputType ~= Enum.UserInputType.MouseButton1 then return end
if not (Config.Visuals.HitMarker or Config.Visuals.HeadshotMarker) then return end
if not Utils.IsAlivePlayer(LocalPlayer) then return end
local myChar = Utils.GetCharacter(LocalPlayer); if not myChar then return end
if not myChar:GetAttribute("WhatGun") then return end
local rp = RaycastParams.new(); rp.FilterType = Enum.RaycastFilterType.Blacklist; rp.FilterDescendantsInstances = {Camera, myChar}
local res = Workspace:Raycast(Camera.CFrame.Position, Camera.CFrame.LookVector * 5000, rp)
if not res then return end
local hitModel = res.Instance:FindFirstAncestorOfClass("Model")
if not hitModel or hitModel:IsDescendantOf(myChar) then return end
local humanoid = hitModel:FindFirstChildOfClass("Humanoid"); if not humanoid then return end
local head = hitModel:FindFirstChild("Head")
if head and (res.Instance == head or res.Instance:IsDescendantOf(head)) then
if Config.Visuals.HeadshotMarker then Visuals:HitMarker(true) end
else
if Config.Visuals.HitMarker then Visuals:HitMaker(false) end
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton2 then
Aimbot.Lock = false
end
end)
AudioESP:Listen()
Players.PlayerRemoving:Connect(function(plr) ESP:CleanPlayer(plr) end)
print("[Defusal Suite] Loaded | Hold RMB to aimbot | Tabs: Aimbot, ESP, Combat, Visuals, Audio, Misc")설명
🎯 Aimbot Hold RMB lock-on Adjustable FOV & smoothness Team & visibility check Head/Torso targeting 👀 ESP Boxes 📦 Tracers ➖ Names 🏷️ Health ❤️ Distance 📏 Weapon 🔫 Head Dot 🎯 💣 Extra: Bomb ESP 💣
댓글 (0)
- 첫 댓글을 작성하세요.
자주 묻는 질문
- XCMEN HUB - DEFUSAL AIMBOT/ESP LEGIT 스크립트는 어떻게 사용하나요?
- 위의 스크립트 코드를 복사하고, Roblox 엑시큐터를 열어 붙여넣은 후, 게임 중에 실행을 누르세요. 스크립트가 실행되면 기능이 즉시 활성화됩니다.
- XCMEN HUB - DEFUSAL AIMBOT/ESP LEGIT 스크립트는 무료인가요?
- 네. 이 스크립트는 무료로 복사하고 사용할 수 있습니다. 키 시스템을 사용하는 경우, 링크를 통해 무료로 키를 받으세요.
- XCMEN HUB - DEFUSAL AIMBOT/ESP LEGIT 스크립트는 안전한가요?
- 전체 소스 코드가 이 페이지에 표시되어 실행 전에 정확히 무엇을 하는지 확인할 수 있습니다. 항상 신뢰할 수 있는 엑시큐터를 사용하고, 스크립트 사용은 Roblox 이용 약관에 위반되므로 자의적 위험으로 사용하세요.
- XCMEN HUB - DEFUSAL AIMBOT/ESP LEGIT에 호환되는 엑시큐터는?
- 이 스크립트는 대부분의 인기 Roblox 엑시큐터에서 작동합니다. 기기에 맞는 신뢰할 수 있는 무료 또는 유료 엑시큐터를 찾으려면 엑시큐터 페이지를 확인하세요.