
Key Required Verified

--[[
================================================================================
BloxStrike - Complete Cheat Script with Auto Fire, Vector Silent Aim,
3rd Person Camera & Anti-Aim (At-Targets Backwards + Pitch Down)
Documentation / API: https://docs.projectreal.gg/
================================================================================
--]]
local Rayfield = loadstring(game:HttpGet("https://sirius.menu/gen2"))()
local Window = Rayfield:CreateWindow({
Name = "BloxStrike",
Subtitle = "Auto Fire & Vector Silent Aim",
})
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local CoreGui = game:GetService("CoreGui")
local Lighting = game:GetService("Lighting")
local LocalPlayer = Players.LocalPlayer
-- Global Settings Integration
getgenv().ParsaIntegratedSettings = {
-- Auto Fire Settings
AutoFireEnabled = true,
AutoFireDelay = 0.05,
AutoFireAngleFOV = 15, -- Векторный FOV (градусы)
-- Silent Aim Settings
SilentEnabled = true,
WallCheck = true,
Wallbang = false,
HitPart = "Head",
UseFOV = true,
FOVRadius = 140,
FOVColor = Color3.fromRGB(255, 0, 0),
TeamCheck = true, -- Проверка на свои команды (не стрелять по своим)
-- Precision Chams, Bullet Tracers & Effects
ChamsEnabled = true,
ChamsMode = "Precision Body Chams", -- "Precision Body Chams", "Highlight Chams"
ChamsColor = Color3.fromRGB(255, 41, 116),
UseTeamColorChams = false,
ChamsFillTransparency = 0.3,
BulletTracers = true,
TracerColor = Color3.fromRGB(255, 41, 116),
TracerDuration = 1.2,
NightMode = false,
HitExplosion = true,
-- Visuals & Camera Settings
ThirdPerson = false,
ThirdPersonDist = 12,
HideViewModelInThirdPerson = true, -- Скрывать 1st person оружие в режиме 3 лица
-- Anti-Aim Settings
AntiAim = false,
AntiAimPitchMode = "Down", -- "Down", "Up", "Jitter", "Custom"
AntiAimAngle = -89,
AntiAimYawMode = "AtTargets",-- "AtTargets" (СПИНОЙ ИМЕННО К ВРАГУ), "Backwards", "Spinbot", "Jitter", "Sideways", "Off"
AntiAimSpinSpeed = 15,
AntiAimDisableOnFire = true,
IsFiringState = false,
-- ESP Settings
ESPEnabled = false,
ESPBoxes = false,
ESPSkeletons = false,
ESPNames = false,
ESPHealth = false,
ESPDistance = false,
ESPMaxDistance = 2500,
BoxColor = Color3.fromRGB(0, 186, 186),
OutlineColor = Color3.fromRGB(15, 15, 15),
NameColor = Color3.fromRGB(255, 255, 255),
DistanceColor = Color3.fromRGB(179, 179, 179)
}
getgenv().ParsaTeamColors = {
["Terrorists"] = Color3.fromRGB(204, 170, 80),
["Counter-Terrorists"] = Color3.fromRGB(100, 149, 200)
}
getgenv().ParsaSilentTarget = nil
local Settings = getgenv().ParsaIntegratedSettings
-- ==========================================
-- Векторная математика (Vector Math Functions)
-- ==========================================
local VectorMath = {}
function VectorMath.getDirectionUnit(origin: Vector3, target: Vector3): Vector3
local delta = target - origin
if delta.Magnitude < 0.0001 then
return Vector3.new(0, 0, 1)
end
return delta.Unit
end
function VectorMath.getAngleDegrees(lookVector: Vector3, targetDirUnit: Vector3): number
local dot = math.clamp(lookVector:Dot(targetDirUnit), -1, 1)
return math.deg(math.acos(dot))
end
function VectorMath.isInVectorFOV(origin: Vector3, lookVector: Vector3, targetPos: Vector3, maxAngleDeg: number): (boolean, number)
local dirUnit = VectorMath.getDirectionUnit(origin, targetPos)
local angleDeg = VectorMath.getAngleDegrees(lookVector, dirUnit)
return (angleDeg <= maxAngleDeg), angleDeg
end
-- ==========================================
-- Логика Определения Противоположной Команды
-- ==========================================
local function getNormalizedSide(player: Player): string?
if not player then return nil end
local ok, teamObj = pcall(function() return player.Team end)
if ok and teamObj and teamObj.Name then
local name = teamObj.Name:lower()
if name:find("counter") or name == "ct" or name:find("blue") or name:find("guard") or name:find("cop") then
return "CT"
end
if name:find("terror") or name == "t" or name:find("red") or name:find("robber") or name:find("inmate") then
return "T"
end
end
local okC, teamColor = pcall(function() return player.TeamColor end)
if okC and teamColor then
local cName = teamColor.Name:lower()
if cName:find("blue") or cName:find("navy") or cName:find("cyan") then return "CT" end
if cName:find("red") or cName:find("orange") or cName:find("yellow") or cName:find("brown") then return "T" end
end
local char = player.Character
if char and char.Parent then
local pName = char.Parent.Name:lower()
if pName:find("counter") or pName == "ct" then return "CT" end
if pName:find("terror") or pName == "t" then return "T" end
end
local attr = player:GetAttribute("Team") or player:GetAttribute("Side") or (char and (char:GetAttribute("Team") or char:GetAttribute("Side")))
if attr ~= nil then
local s = tostring(attr):lower()
if s:find("counter") or s == "ct" or s == "2" then return "CT" end
if s:find("terror") or s == "t" or s == "1" then return "T" end
end
local val = (char and (char:FindFirstChild("Team") or char:FindFirstChild("Side"))) or player:FindFirstChild("Team") or player:FindFirstChild("Side")
if val and val:IsA("ValueBase") then
local s = tostring(val.Value):lower()
if s:find("counter") or s == "ct" or s == "2" then return "CT" end
if s:find("terror") or s == "t" or s == "1" then return "T" end
end
local leaderstats = player:FindFirstChild("leaderstats")
if leaderstats then
local stat = leaderstats:FindFirstChild("Team") or leaderstats:FindFirstChild("Side")
if stat and stat:IsA("ValueBase") then
local s = tostring(stat.Value):lower()
if s:find("counter") or s == "ct" or s == "2" then return "CT" end
if s:find("terror") or s == "t" or s == "1" then return "T" end
end
end
return nil
end
local function isOppositeTeam(myPlayer: Player, targetPlayer: Player): boolean
if not myPlayer or not targetPlayer then return false end
if myPlayer == targetPlayer then return false end
local mySide = getNormalizedSide(myPlayer)
local targetSide = getNormalizedSide(targetPlayer)
if mySide and targetSide then
return (mySide ~= targetSide)
end
local ok1, team1 = pcall(function() return myPlayer.Team end)
local ok2, team2 = pcall(function() return targetPlayer.Team end)
if ok1 and ok2 and team1 ~= nil and team2 ~= nil then
return team1 ~= team2
end
local okC1, color1 = pcall(function() return myPlayer.TeamColor end)
local okC2, color2 = pcall(function() return targetPlayer.TeamColor end)
if okC1 and okC2 and color1 ~= nil and color2 ~= nil then
return color1 ~= color2
end
return true
end
getgenv().ParsaGetTeam = getNormalizedSide
getgenv().ParsaIsOpposite = isOppositeTeam
local function get_player_team(player: Player): string?
local side = getNormalizedSide(player)
if side == "CT" then return "Counter-Terrorists" end
if side == "T" then return "Terrorists" end
return nil
end
local function getGuiContainer()
local container
pcall(function()
if typeof(gethui) == "function" then
container = gethui()
elseif CoreGui then
container = CoreGui
end
end)
if not container then
pcall(function()
container = LocalPlayer:WaitForChild("PlayerGui")
end)
end
return container or Workspace
end
-- ==========================================
-- Спавн 3D Neon Bullet Tracers
-- ==========================================
local function spawnBulletTracer(fromPos: Vector3, toPos: Vector3)
if not Settings.BulletTracers then return end
local distance = (toPos - fromPos).Magnitude
if distance < 0.2 then return end
local beamPart = Instance.new("Part")
beamPart.Name = "ParsaBulletTracer"
beamPart.Anchored = true
beamPart.CanCollide = false
beamPart.CastShadow = false
beamPart.Material = Enum.Material.Neon
beamPart.Color = Settings.TracerColor or Color3.fromRGB(255, 41, 116)
beamPart.Transparency = 0.15
beamPart.Size = Vector3.new(0.08, 0.08, distance)
beamPart.CFrame = CFrame.new(fromPos, toPos) * CFrame.new(0, 0, -distance / 2)
beamPart.Parent = Workspace
local tweenInfo = TweenInfo.new(Settings.TracerDuration or 1.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local tween = TweenService:Create(beamPart, tweenInfo, { Transparency = 1 })
tween:Play()
tween.Completed:Connect(function() beamPart:Destroy() end)
task.delay((Settings.TracerDuration or 1.2) + 0.2, function()
if beamPart and beamPart.Parent then beamPart:Destroy() end
end)
end
-- ==========================================
-- Спавн Эффекта Взрыва (Hit / Explosion Effect)
-- ==========================================
local function spawnHitExplosion(pos: Vector3)
if not Settings.HitExplosion or not pos then return end
pcall(function()
local exp = Instance.new("Explosion")
exp.BlastPressure = 0
exp.BlastRadius = 0
exp.DestroyColliderRadius = 0
exp.ExplosionType = Enum.ExplosionType.NoCulling
exp.Position = pos
exp.Parent = Workspace
local shockwave = Instance.new("Part")
shockwave.Name = "ParsaExplosionShockwave"
shockwave.Shape = Enum.PartType.Ball
shockwave.Material = Enum.Material.Neon
shockwave.Color = Color3.fromRGB(255, 120, 30)
shockwave.Transparency = 0.2
shockwave.Anchored = true
shockwave.CanCollide = false
shockwave.Size = Vector3.new(0.5, 0.5, 0.5)
shockwave.CFrame = CFrame.new(pos)
shockwave.Parent = Workspace
local shockwaveTween = TweenService:Create(shockwave, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
Size = Vector3.new(7, 7, 7),
Transparency = 1
})
shockwaveTween:Play()
shockwaveTween.Completed:Connect(function() shockwave:Destroy() end)
end)
end
-- ==========================================
-- Night Bot (Атмосфера Ночного Режима)
-- ==========================================
local function applyNightState()
if Settings.NightMode then
Lighting.ClockTime = 0
Lighting.Brightness = 2
Lighting.OutdoorAmbient = Color3.fromRGB(70, 70, 90)
Lighting.Ambient = Color3.fromRGB(60, 60, 70)
Lighting.GlobalShadows = true
Lighting.ExposureCompensation = 0.5
else
Lighting.ClockTime = 14
Lighting.Brightness = 3
Lighting.OutdoorAmbient = Color3.fromRGB(127, 127, 127)
Lighting.Ambient = Color3.fromRGB(0, 0, 0)
Lighting.ExposureCompensation = 0
end
end
-- ==========================================
-- Высокоточные Чамсы Скелета и Тела
-- ==========================================
local partChamsCache = {}
local highlightChamsCache = {}
local function isVisibleBodyPart(part)
if not part:IsA("BasePart") then return false end
local name = part.Name:lower()
if name == "humanoidrootpart" or name == "root" or name == "hitbox" or name == "collision" then
return false
end
if part.Transparency >= 0.99 then return false end
return true
end
local function updateChams()
if not Settings.ChamsEnabled then
for player, partMap in pairs(partChamsCache) do
for part, adornment in pairs(partMap) do
if adornment and typeof(adornment) == "Instance" then adornment:Destroy() end
end
end
partChamsCache = {}
for player, highlight in pairs(highlightChamsCache) do
if highlight and typeof(highlight) == "Instance" then highlight:Destroy() end
end
highlightChamsCache = {}
return
end
for player, partMap in pairs(partChamsCache) do
if not player or not player.Parent then
for part, adornment in pairs(partMap) do
if adornment then adornment:Destroy() end
end
partChamsCache[player] = nil
end
end
for player, highlight in pairs(highlightChamsCache) do
if not player or not player.Parent then
if highlight then highlight:Destroy() end
highlightChamsCache[player] = nil
end
end
for _, player in ipairs(Players:GetPlayers()) do
if player == LocalPlayer then continue end
local char = player.Character
local humanoid = char and char:FindFirstChildOfClass("Humanoid")
local isDead = char and (char:GetAttribute("Dead") == true or (humanoid and humanoid.Health <= 0))
local allowed = char and not isDead and (not Settings.TeamCheck or isOppositeTeam(LocalPlayer, player))
if allowed then
local chamColor = Settings.ChamsColor
if Settings.UseTeamColorChams then
local side = getNormalizedSide(player)
if side == "T" then chamColor = Color3.fromRGB(240, 160, 40)
elseif side == "CT" then chamColor = Color3.fromRGB(50, 140, 240) end
end
if Settings.ChamsMode == "Precision Body Chams" then
if highlightChamsCache[player] then
highlightChamsCache[player]:Destroy()
highlightChamsCache[player] = nil
end
if not partChamsCache[player] then partChamsCache[player] = {} end
local partMap = partChamsCache[player]
for _, child in ipairs(char:GetChildren()) do
if isVisibleBodyPart(child) then
local adornment = partMap[child]
if not adornment or not adornment.Parent or adornment.Parent ~= child then
if adornment then adornment:Destroy() end
adornment = Instance.new("BoxHandleAdornment")
adornment.Name = "Cham_" .. child.Name
adornment.AlwaysOnTop = true
adornment.ZIndex = 10
adornment.Parent = child
partMap[child] = adornment
end
adornment.Adornee = child
adornment.Size = child.Size
adornment.Color3 = chamColor
adornment.Transparency = Settings.ChamsFillTransparency or 0.3
adornment.Visible = true
end
end
for part, adornment in pairs(partMap) do
if not part or not part.Parent or part.Parent ~= char then
if adornment then adornment:Destroy() end
partMap[part] = nil
end
end
elseif Settings.ChamsMode == "Highlight Chams" then
if partChamsCache[player] then
for part, adornment in pairs(partChamsCache[player]) do
if adornment then adornment:Destroy() end
end
partChamsCache[player] = nil
end
local highlight = highlightChamsCache[player]
if not highlight or not highlight.Parent then
highlight = Instance.new("Highlight")
highlight.Name = "FatalityChams_" .. player.Name
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Parent = char
highlightChamsCache[player] = highlight
end
if highlight.Adornee ~= char then highlight.Adornee = char end
highlight.Enabled = true
highlight.FillColor = chamColor
highlight.OutlineColor = chamColor
highlight.FillTransparency = Settings.ChamsFillTransparency or 0.4
highlight.OutlineTransparency = 0
end
else
if partChamsCache[player] then
for part, adornment in pairs(partMap) do
if adornment then adornment:Destroy() end
end
partChamsCache[player] = nil
end
if highlightChamsCache[player] then
highlightChamsCache[player]:Destroy()
highlightChamsCache[player] = nil
end
end
end
end
-- ==========================================
-- Поиск Ближайшего Противника (Противоположная Команда)
-- ==========================================
local function getClosestEnemyPart(): BasePart?
local Camera = Workspace.CurrentCamera
local char = LocalPlayer.Character
if not char then return nil end
local root = char:FindFirstChild("HumanoidRootPart")
if not root then return nil end
local myPos = root.Position
local closestDist = math.huge
local closestPart = nil
for _, player in ipairs(Players:GetPlayers()) do
if player == LocalPlayer then continue end
local pChar = player.Character
if not pChar then continue end
local humanoid = pChar:FindFirstChildOfClass("Humanoid")
local isDead = pChar:GetAttribute("Dead") == true or (humanoid and humanoid.Health <= 0)
local isInvincible = pChar:GetAttribute("Invincible") == true
if isDead or isInvincible then continue end
if pChar.Parent and pChar.Parent.Name == "Debris" then continue end
-- Атакуем ТОЛЬКО противоположную команду!
if not isOppositeTeam(LocalPlayer, player) then continue end
local ePart = pChar:FindFirstChild("HumanoidRootPart") or pChar:FindFirstChild("Head") or pChar.PrimaryPart
if ePart then
local dist = (ePart.Position - myPos).Magnitude
if dist < closestDist then
closestDist = dist
closestPart = ePart
end
end
end
return closestPart
end
-- ==========================================
-- Интерфейс Пользователя (UI Tabs)
-- ==========================================
local CombatTab = Window:CreateTab({ Name = "Main", Icon = 10734950309 })
local VisualsTab = Window:CreateTab({ Name = "Visuals & Camera", Icon = 10723345474 })
-- Combat Controls
CombatTab:CreateToggle({
Name = "Auto Fire",
CurrentValue = Settings.AutoFireEnabled,
Callback = function(Value) Settings.AutoFireEnabled = Value end,
})
CombatTab:CreateSlider({
Name = "Vector FOV Angle",
Range = {1, 60},
Increment = 1,
Suffix = "°",
CurrentValue = Settings.AutoFireAngleFOV,
Callback = function(Value) Settings.AutoFireAngleFOV = Value end,
})
CombatTab:CreateToggle({
Name = "Silent Aim",
CurrentValue = Settings.SilentEnabled,
Callback = function(Value) Settings.SilentEnabled = Value end,
})
CombatTab:CreateToggle({
Name = "Wallbang",
CurrentValue = Settings.Wallbang,
Callback = function(Value) Settings.Wallbang = Value end,
})
CombatTab:CreateToggle({
Name = "Team Check (Атаковать только врагов)",
CurrentValue = Settings.TeamCheck,
Callback = function(Value) Settings.TeamCheck = Value end,
})
CombatTab:CreateDropdown({
Name = "Target Hitpart",
Options = {"Head", "UpperTorso", "LowerTorso"},
CurrentOption = {Settings.HitPart},
MultipleOptions = false,
Callback = function(Options)
if type(Options) == "table" then
Settings.HitPart = Options[1]
else
Settings.HitPart = Options
end
end,
})
CombatTab:CreateToggle({
Name = "Show Screen FOV",
CurrentValue = Settings.UseFOV,
Callback = function(Value) Settings.UseFOV = Value end,
})
CombatTab:CreateSlider({
Name = "FOV Radius",
Range = {10, 500},
Increment = 5,
Suffix = "px",
CurrentValue = Settings.FOVRadius,
Callback = function(Value) Settings.FOVRadius = Value end,
})
-- Visuals & Camera Controls
VisualsTab:CreateToggle({
Name = "Chams Master Enable (Чамсы)",
CurrentValue = Settings.ChamsEnabled,
Callback = function(Value) Settings.ChamsEnabled = Value end,
})
VisualsTab:CreateDropdown({
Name = "Chams Style Mode",
Options = {"Precision Body Chams", "Highlight Chams"},
CurrentOption = {Settings.ChamsMode},
MultipleOptions = false,
Callback = function(Options)
Settings.ChamsMode = type(Options) == "table" and Options[1] or Options
end,
})
VisualsTab:CreateToggle({
Name = "3D Neon Bullet Tracers (Трейсеры пуль)",
CurrentValue = Settings.BulletTracers,
Callback = function(Value) Settings.BulletTracers = Value end,
})
VisualsTab:CreateSlider({
Name = "Tracer Fade Duration",
Range = {0.5, 4},
Increment = 0.1,
Suffix = "s",
CurrentValue = Settings.TracerDuration,
Callback = function(Value) Settings.TracerDuration = Value end,
})
VisualsTab:CreateToggle({
Name = "Night Mode / Night Bot (Ночной режим)",
CurrentValue = Settings.NightMode,
Callback = function(Value) Settings.NightMode = Value end,
})
VisualsTab:CreateToggle({
Name = "Hit Explosion Effect (Эффект взрыва)",
CurrentValue = Settings.HitExplosion,
Callback = function(Value) Settings.HitExplosion = Value end,
})
VisualsTab:CreateToggle({
Name = "3rd Person View (Вид от 3 лица)",
CurrentValue = Settings.ThirdPerson,
Callback = function(Value) Settings.ThirdPerson = Value end,
})
VisualsTab:CreateSlider({
Name = "3rd Person Distance",
Range = {5, 30},
Increment = 1,
Suffix = " studs",
CurrentValue = Settings.ThirdPersonDist,
Callback = function(Value) Settings.ThirdPersonDist = Value end,
})
VisualsTab:CreateToggle({
Name = "Hide 1st Person ViewModel (Вырубать оружие в 3-м лице)",
CurrentValue = Settings.HideViewModelInThirdPerson,
Callback = function(Value) Settings.HideViewModelInThirdPerson = Value end,
})
VisualsTab:CreateToggle({
Name = "Anti-Aim (Включить Анти-Аим)",
CurrentValue = Settings.AntiAim,
Callback = function(Value) Settings.AntiAim = Value end,
})
VisualsTab:CreateDropdown({
Name = "Anti-Aim Pitch Mode (Режим наклона)",
Options = {"Down", "Up", "Jitter", "Custom"},
CurrentOption = {Settings.AntiAimPitchMode},
MultipleOptions = false,
Callback = function(Options)
Settings.AntiAimPitchMode = type(Options) == "table" and Options[1] or Options
end,
})
VisualsTab:CreateSlider({
Name = "Anti-Aim Custom Pitch Angle",
Range = {-89, 89},
Increment = 1,
Suffix = "°",
CurrentValue = Settings.AntiAimAngle,
Callback = function(Value) Settings.AntiAimAngle = Value end,
})
VisualsTab:CreateDropdown({
Name = "Anti-Aim Yaw Mode (Режим вращения)",
Options = {"AtTargets", "Backwards", "Spinbot", "Jitter", "Sideways", "Off"},
CurrentOption = {Settings.AntiAimYawMode},
MultipleOptions = false,
Callback = function(Options)
Settings.AntiAimYawMode = type(Options) == "table" and Options[1] or Options
end,
})
VisualsTab:CreateSlider({
Name = "Spinbot Speed",
Range = {1, 50},
Increment = 1,
Suffix = " deg/f",
CurrentValue = Settings.AntiAimSpinSpeed,
Callback = function(Value) Settings.AntiAimSpinSpeed = Value end,
})
VisualsTab:CreateToggle({
Name = "Disable Anti-Aim On Fire (Пауза AA при стрельбе)",
CurrentValue = Settings.AntiAimDisableOnFire,
Callback = function(Value) Settings.AntiAimDisableOnFire = Value end,
})
VisualsTab:CreateToggle({
Name = "ESP",
CurrentValue = Settings.ESPEnabled,
Callback = function(Value) Settings.ESPEnabled = Value end,
})
VisualsTab:CreateToggle({
Name = "Draw Boxes",
CurrentValue = Settings.ESPBoxes,
Callback = function(Value) Settings.ESPBoxes = Value end,
})
VisualsTab:CreateToggle({
Name = "Draw Skeletons",
CurrentValue = Settings.ESPSkeletons,
Callback = function(Value) Settings.ESPSkeletons = Value end,
})
VisualsTab:CreateToggle({
Name = "Display Names",
CurrentValue = Settings.ESPNames,
Callback = function(Value) Settings.ESPNames = Value end,
})
VisualsTab:CreateToggle({
Name = "Display Health",
CurrentValue = Settings.ESPHealth,
Callback = function(Value) Settings.ESPHealth = Value end,
})
VisualsTab:CreateToggle({
Name = "Display Distance",
CurrentValue = Settings.ESPDistance,
Callback = function(Value) Settings.ESPDistance = Value end,
})
-- ==========================================
-- ESP Системы (Drawing API)
-- ==========================================
local Camera = Workspace.CurrentCamera
getgenv().ParsaEspInstances = getgenv().ParsaEspInstances or {}
local espInstances = getgenv().ParsaEspInstances
local BONE_MAP_R15 = {
{"Head", "UpperTorso"}, {"UpperTorso", "LowerTorso"},
{"UpperTorso", "LeftUpperArm"}, {"LeftUpperArm", "LeftLowerArm"}, {"LeftLowerArm", "LeftHand"},
{"UpperTorso", "RightUpperArm"}, {"RightUpperArm", "RightLowerArm"}, {"RightLowerArm", "RightHand"},
{"LowerTorso", "LeftUpperLeg"}, {"LeftUpperLeg", "LeftLowerLeg"}, {"LeftLowerLeg", "LeftFoot"},
{"LowerTorso", "RightUpperLeg"}, {"RightUpperLeg", "RightLowerLeg"}, {"RightLowerLeg", "RightFoot"}
}
local BONE_MAP_R6 = {
{"Head", "Torso"}, {"Torso", "Left Arm"}, {"Torso", "Right Arm"},
{"Torso", "Left Leg"}, {"Torso", "Right Leg"}
}
local function createESP(player)
if espInstances[player] then return end
local objects = {
BoxOutline = Drawing.new("Square"),
Box = Drawing.new("Square"),
Name = Drawing.new("Text"),
Distance = Drawing.new("Text"),
HealthOutline = Drawing.new("Square"),
Health = Drawing.new("Square"),
Bones = {}
}
objects.BoxOutline.Thickness = 2
objects.BoxOutline.Filled = false
objects.BoxOutline.Transparency = 0.5
objects.BoxOutline.Color = Settings.OutlineColor
objects.Box.Thickness = 1
objects.Box.Filled = false
objects.Box.Transparency = 1
objects.Name.Center = true
objects.Name.Outline = true
objects.Name.Font = 1
objects.Name.Size = 13
objects.Name.Color = Settings.NameColor
objects.Distance.Center = true
objects.Distance.Outline = true
objects.Distance.Font = 1
objects.Distance.Size = 12
objects.Distance.Color = Settings.DistanceColor
objects.HealthOutline.Thickness = 1
objects.HealthOutline.Filled = true
objects.HealthOutline.Transparency = 0.5
objects.HealthOutline.Color = Settings.OutlineColor
objects.Health.Filled = true
objects.Health.Transparency = 1
for i = 1, 15 do
local boneLine = Drawing.new("Line")
boneLine.Thickness = 1
boneLine.Transparency = 1
boneLine.Visible = false
table.insert(objects.Bones, boneLine)
end
espInstances[player] = objects
end
local function removeESP(player)
local objects = espInstances[player]
if objects then
for _, obj in pairs(objects) do
if type(obj) == "table" then
for _, bone in pairs(obj) do bone:Remove() end
else
obj:Remove()
end
end
espInstances[player] = nil
end
end
getgenv().ParsaRemoveEsp = removeESP
-- ==========================================
-- Логика Поиска Цели и Векторных Проверок
-- ==========================================
local FOVCircle = Drawing.new("Circle")
FOVCircle.Filled = false
FOVCircle.Thickness = 1
FOVCircle.NumSides = 64
FOVCircle.Color = Settings.FOVColor
local rayParams = RaycastParams.new()
rayParams.FilterType = Enum.RaycastFilterType.Exclude
rayParams.IgnoreWater = true
local function isVisible(target)
if Settings.Wallbang then return true end
if not target or not target.Parent or not Camera then return false end
rayParams.FilterDescendantsInstances = LocalPlayer.Character and { LocalPlayer.Character } or {}
local origin = Camera.CFrame.Position
local result = Workspace:Raycast(origin, target.Position - origin, rayParams)
if not result then return true end
local model = result.Instance and result.Instance:FindFirstAncestorOfClass("Model")
return model and Players:GetPlayerFromCharacter(model) ~= nil
end
local function FindSilentTarget()
Camera = Workspace.CurrentCamera
if not Camera or not LocalPlayer.Character then
getgenv().ParsaSilentTarget = nil
return nil
end
local camPos = Camera.CFrame.Position
local lookVec = Camera.CFrame.LookVector
local screenCenter = Camera.ViewportSize / 2
local closestDist = math.huge
local closestPart = nil
for _, player in next, Players:GetPlayers() do
if player == LocalPlayer then continue end
local char = player.Character
if not char or char:GetAttribute("Dead") or char:GetAttribute("Invincible") then continue end
if char.Parent and char.Parent.Name == "Debris" then continue end
-- АТАКА ТОЛЬКО ПРОТИВОПОЛОЖНОЙ КОМАНДЫ
if Settings.TeamCheck and not isOppositeTeam(LocalPlayer, player) then continue end
local targetPart = char:FindFirstChild(Settings.HitPart) or char:FindFirstChild("Head") or char.PrimaryPart
if not targetPart then continue end
-- Векторная проверка угла (Vector3 & Unit Vector & Dot Product)
local inVectorFOV, angleDeg = VectorMath.isInVectorFOV(camPos, lookVec, targetPart.Position, Settings.AutoFireAngleFOV)
local screenPos, onScreen = Camera:WorldToViewportPoint(targetPart.Position)
if onScreen then
local distFromCenter = (Vector2.new(screenPos.X, screenPos.Y) - screenCenter).Magnitude
local maxRadius = Settings.UseFOV and Settings.FOVRadius or math.huge
if inVectorFOV and distFromCenter <= maxRadius and distFromCenter < closestDist then
if Settings.Wallbang or isVisible(targetPart) then
closestDist = distFromCenter
closestPart = targetPart
end
end
end
end
getgenv().ParsaSilentTarget = closestPart
return closestPart
end
-- ==========================================
-- Исполнение Выстрелов (Real API)
-- ==========================================
local lastFireTime = 0
local function executeAutoFire()
local now = os.clock()
if now - lastFireTime < Settings.AutoFireDelay then return end
lastFireTime = now
if typeof(isrbxactive) == "function" and isrbxactive() then
if typeof(mouse1click) == "function" then
mouse1click()
elseif typeof(mouse1press) == "function" and typeof(mouse1release) == "function" then
mouse1press()
task.delay(0.02, mouse1release)
end
else
pcall(function()
local vim = game:GetService("VirtualInputManager")
vim:SendMouseButtonEvent(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2, 0, true, game, 0)
task.delay(0.02, function()
vim:SendMouseButtonEvent(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2, 0, false, game, 0)
end)
end)
end
end
-- ==========================================
-- Anti-Aim Pitch & Yaw (СПИНОЙ ИМЕННО К ВРАГУ)
-- ==========================================
local originalNeckC0 = nil
local originalWaistC0 = nil
local originalRootC0 = nil
local lastCharAA = nil
local spinAngle = 0
local function getJoints()
local char = LocalPlayer.Character
if not char then return nil, nil, nil, nil end
local head = char:FindFirstChild("Head")
local upperTorso = char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso")
local lowerTorso = char:FindFirstChild("LowerTorso")
local rootPart = char:FindFirstChild("HumanoidRootPart")
local humanoid = char:FindFirstChildOfClass("Humanoid")
local neck = (head and head:FindFirstChild("Neck")) or (upperTorso and upperTorso:FindFirstChild("Neck"))
local waist = (upperTorso and upperTorso:FindFirstChild("Waist")) or (lowerTorso and lowerTorso:FindFirstChild("Waist"))
local rootJoint = rootPart and rootPart:FindFirstChild("RootJoint")
return neck, waist, rootJoint, humanoid
end
local function updateAntiAimState()
local char = LocalPlayer.Character
if not char then return end
if char ~= lastCharAA then
lastCharAA = char
originalNeckC0 = nil
originalWaistC0 = nil
originalRootC0 = nil
end
local neck, waist, rootJoint, humanoid = getJoints()
if neck and not originalNeckC0 then originalNeckC0 = neck.C0 end
if waist and not originalWaistC0 then originalWaistC0 = waist.C0 end
if rootJoint and not originalRootC0 then originalRootC0 = rootJoint.C0 end
if not Settings.AntiAim then
if neck and originalNeckC0 then neck.C0 = originalNeckC0 end
if waist and originalWaistC0 then waist.C0 = originalWaistC0 end
if rootJoint and originalRootC0 then rootJoint.C0 = originalRootC0 end
if humanoid then humanoid.AutoRotate = true end
return
end
if humanoid then humanoid.AutoRotate = false end
-- Если включена пауза при стрельбе и идет выстрел, выпрямляем персонажа
if Settings.AntiAimDisableOnFire and Settings.IsFiringState then
if neck and originalNeckC0 then neck.C0 = originalNeckC0 end
if waist and originalWaistC0 then waist.C0 = originalWaistC0 end
if rootJoint and originalRootC0 then rootJoint.C0 = originalRootC0 end
return
end
-- Находим противника из противоположной команды
local enemyPart = getgenv().ParsaSilentTarget or getClosestEnemyPart()
local rootPart = char:FindFirstChild("HumanoidRootPart")
-- Динамически разворачиваем персонажа СПИНОЙ ИМЕННО К ПОЗИЦИИ ВРАГА!
if rootPart then
local myPos = rootPart.Position
local enemyPos = enemyPart and enemyPart.Position
if enemyPos then
local delta = Vector3.new(enemyPos.X - myPos.X, 0, enemyPos.Z - myPos.Z)
if delta.Magnitude > 0.001 then
-- Лицом от врага -> СПИНА НАПРАВЛЕНА ПРЯМО НА ВРАГА
rootPart.CFrame = CFrame.lookAt(myPos, myPos - delta.Unit)
end
elseif Camera then
local lookDir = Camera.CFrame.LookVector
local flatLook = Vector3.new(lookDir.X, 0, lookDir.Z)
if flatLook.Magnitude > 0.001 then
rootPart.CFrame = CFrame.lookAt(myPos, myPos - flatLook.Unit)
end
end
end
-- Расчет Pitch
local pitchRad = 0
local pitchMode = Settings.AntiAimPitchMode or "Down"
if pitchMode == "Down" then
pitchRad = math.rad(-89)
elseif pitchMode == "Up" then
pitchRad = math.rad(89)
elseif pitchMode == "Jitter" then
pitchRad = math.rad(math.random() > 0.5 and -89 or 89)
elseif pitchMode == "Custom" then
pitchRad = math.rad(Settings.AntiAimAngle or -89)
end
-- Расчет Yaw
local yawRad = 0
local yawMode = Settings.AntiAimYawMode or "AtTargets"
if yawMode == "Spinbot" then
spinAngle = (spinAngle + (Settings.AntiAimSpinSpeed or 15)) % 360
yawRad = math.rad(spinAngle)
elseif yawMode == "Jitter" then
yawRad = math.rad(math.random() > 0.5 and 90 or -90)
elseif yawMode == "Sideways" then
yawRad = math.rad(90)
elseif yawMode == "Backwards" then
yawRad = math.pi
end
-- Применяем CFrame к суставам
if neck and originalNeckC0 then
neck.C0 = originalNeckC0 * CFrame.Angles(pitchRad, yawRad, 0)
end
if waist and originalWaistC0 then
waist.C0 = originalWaistC0 * CFrame.Angles(pitchRad * 0.4, 0, 0)
end
if rootJoint and originalRootC0 and yawMode == "Spinbot" then
rootJoint.C0 = originalRootC0 * CFrame.Angles(0, 0, yawRad)
elseif rootJoint and originalRootC0 then
rootJoint.C0 = originalRootC0
end
end
-- ==========================================
-- Скрытие 1st Person Viewmodel при 3rd Person
-- ==========================================
local function setViewModelVisibility(visible: boolean)
Camera = Workspace.CurrentCamera
local targetAlpha = visible and 0 or 1
if Camera then
for _, child in ipairs(Camera:GetChildren()) do
if child:IsA("Model") or child:IsA("Folder") or child:IsA("BasePart") or child.Name:lower():find("view") or child.Name:lower():find("arm") or child.Name:lower():find("gun") then
for _, part in ipairs(child:GetDescendants()) do
if part:IsA("BasePart") then
part.LocalTransparencyModifier = targetAlpha
part.Transparency = targetAlpha
elseif part:IsA("Decal") or part:IsA("Texture") then
part.Transparency = targetAlpha
end
end
if child:IsA("BasePart") then
child.LocalTransparencyModifier = targetAlpha
child.Transparency = targetAlpha
end
end
end
end
for _, child in ipairs(Workspace:GetChildren()) do
local n = child.Name:lower()
if (n:find("viewmodel") or n == "vmodel" or n:find("fps")) and (child:IsA("Model") or child:IsA("Folder") or child:IsA("BasePart")) then
for _, part in ipairs(child:GetDescendants()) do
if part:IsA("BasePart") then
part.LocalTransparencyModifier = targetAlpha
part.Transparency = targetAlpha
elseif part:IsA("Decal") or part:IsA("Texture") then
part.Transparency = targetAlpha
end
end
if child:IsA("BasePart") then
child.LocalTransparencyModifier = targetAlpha
child.Transparency = targetAlpha
end
end
end
local char = LocalPlayer.Character
if char then
for _, child in ipairs(char:GetChildren()) do
local n = child.Name:lower()
if (n:find("viewmodel") or n == "vmodel" or n:find("fps")) and (child:IsA("Model") or child:IsA("Folder")) then
for _, part in ipairs(child:GetDescendants()) do
if part:IsA("BasePart") then
part.LocalTransparencyModifier = targetAlpha
part.Transparency = targetAlpha
elseif part:IsA("Decal") or part:IsA("Texture") then
part.Transparency = targetAlpha
end
end
end
end
end
end
-- ==========================================
-- 3rd Person View Logic
-- ==========================================
local lastThirdPersonState = false
local originalMinZoom = 0.5
local originalMaxZoom = 128
local function updateThirdPersonState()
if not LocalPlayer then return end
local char = LocalPlayer.Character
Camera = Workspace.CurrentCamera
if Settings.ThirdPerson then
local dist = Settings.ThirdPersonDist or 12
LocalPlayer.CameraMode = Enum.CameraMode.Classic
LocalPlayer.CameraMinZoomDistance = dist
LocalPlayer.CameraMaxZoomDistance = dist
if char and Camera then
local head = char:FindFirstChild("Head") or char:FindFirstChild("HumanoidRootPart")
if head then
for _, descendant in ipairs(char:GetDescendants()) do
if descendant:IsA("BasePart") then
descendant.LocalTransparencyModifier = 0
end
end
if Settings.HideViewModelInThirdPerson then
setViewModelVisibility(false)
end
local focusPos = head.Position + Vector3.new(0, 1.5, 0)
local lookDir = Camera.CFrame.LookVector
local targetCamPos = focusPos - (lookDir * dist)
local tpRayParams = RaycastParams.new()
tpRayParams.FilterType = Enum.RaycastFilterType.Exclude
tpRayParams.FilterDescendantsInstances = { char }
local hitResult = Workspace:Raycast(focusPos, -lookDir * dist, tpRayParams)
if hitResult then
targetCamPos = hitResult.Position + (lookDir * 0.5)
end
Camera.CFrame = CFrame.new(targetCamPos, focusPos)
end
end
lastThirdPersonState = true
else
if lastThirdPersonState then
LocalPlayer.CameraMinZoomDistance = originalMinZoom
LocalPlayer.CameraMaxZoomDistance = originalMaxZoom
setViewModelVisibility(true)
lastThirdPersonState = false
end
end
end
-- ==========================================
-- Главный Цикл Рендера (RenderStepped Loop)
-- ==========================================
RunService.RenderStepped:Connect(function()
Camera = Workspace.CurrentCamera
if not Camera then return end
-- Отрисовка FOV
FOVCircle.Visible = Settings.UseFOV
if FOVCircle.Visible then
FOVCircle.Position = Camera.ViewportSize / 2
FOVCircle.Radius = Settings.FOVRadius
FOVCircle.Color = Settings.FOVColor
end
-- Обновление вида от 3 лица
updateThirdPersonState()
-- Поиск цели
local target = FindSilentTarget()
-- Auto Fire выстрел
if Settings.AutoFireEnabled and target then
Settings.IsFiringState = true
executeAutoFire()
else
Settings.IsFiringState = false
end
-- Обновление Anti-Aim (СПИНОЙ ИМЕННО К БЛИЖАЙШЕМУ ВРАГУ)
updateAntiAimState()
-- Обновление Чамсов
updateChams()
-- Обновление Ночного Режима (Night Bot)
applyNightState()
-- ESP обновление игроков
local camPos = Camera.CFrame.Position
for _, player in next, Players:GetPlayers() do
local objects = espInstances[player]
if player == LocalPlayer then
if objects then removeESP(player) end
continue
end
local char = player.Character
local humanoid = char and char:FindFirstChildOfClass("Humanoid")
local rootPart = char and (char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("UpperTorso") or char.PrimaryPart)
local isDead = char and (char:GetAttribute("Dead") == true or (humanoid and humanoid.Health <= 0))
local allowed = Settings.ESPEnabled and char and rootPart and not isDead
if allowed and (camPos - rootPart.Position).Magnitude > Settings.ESPMaxDistance then allowed = false end
if not allowed then
if objects then
for _, obj in pairs(objects) do if type(obj) ~= "table" then obj.Visible = false end end
for _, bone in pairs(objects and objects.Bones or {}) do bone.Visible = false end
end
continue
end
if not objects then
createESP(player)
objects = espInstances[player]
end
local playerTeam = get_player_team(player)
local targetColor = Settings.BoxColor
if playerTeam and getgenv().ParsaTeamColors[playerTeam] then
targetColor = getgenv().ParsaTeamColors[playerTeam]
end
local rootPos, onScreen = Camera:WorldToViewportPoint(rootPart.Position)
if onScreen then
local head = char:FindFirstChild("Head")
local headPos = head and Camera:WorldToViewportPoint(head.Position) or Camera:WorldToViewportPoint(rootPart.Position + Vector3.new(0, 2, 0))
local legPos = Camera:WorldToViewportPoint(rootPart.Position - Vector3.new(0, 3, 0))
local height = math.abs(headPos.Y - legPos.Y)
local width = height / 1.6
local boxX = rootPos.X - (width / 2)
local boxY = headPos.Y
objects.Box.Visible = Settings.ESPBoxes
objects.BoxOutline.Visible = Settings.ESPBoxes
if Settings.ESPBoxes then
local size = Vector2.new(width, height)
local pos = Vector2.new(boxX, boxY)
objects.Box.Size = size
objects.Box.Position = pos
objects.Box.Color = targetColor
objects.BoxOutline.Size = size
objects.BoxOutline.Position = pos
end
local isR15 = char:FindFirstChild("UpperTorso") ~= nil
local activeBoneMap = isR15 and BONE_MAP_R15 or BONE_MAP_R6
for i, boneLine in ipairs(objects.Bones) do
local connection = activeBoneMap[i]
if Settings.ESPSkeletons and connection then
local partA = char:FindFirstChild(connection[1])
local partB = char:FindFirstChild(connection[2])
if partA and partB then
local posA, visA = Camera:WorldToViewportPoint(partA.Position)
local posB, visB = Camera:WorldToViewportPoint(partB.Position)
if visA and visB then
boneLine.From = Vector2.new(posA.X, posA.Y)
boneLine.To = Vector2.new(posB.X, posB.Y)
boneLine.Color = targetColor
boneLine.Visible = true
else boneLine.Visible = false end
else boneLine.Visible = false end
else boneLine.Visible = false end
end
if Settings.ESPNames then
objects.Name.Text = player.Name
objects.Name.Position = Vector2.new(rootPos.X, boxY - 15)
objects.Name.Visible = true
else objects.Name.Visible = false end
if Settings.ESPDistance then
local distance = math.floor((camPos - rootPart.Position).Magnitude)
objects.Distance.Text = tostring(distance) .. "m"
objects.Distance.Position = Vector2.new(rootPos.X, boxY + height + 2)
objects.Distance.Visible = true
else objects.Distance.Visible = false end
if Settings.ESPHealth and humanoid then
local barPadding, barWidth = 4, 2
local barX = boxX - barPadding - barWidth
local healthPercentage = math.clamp(humanoid.Health / humanoid.MaxHealth, 0, 1)
local healthHeight = height * healthPercentage
objects.Health.Color = Color3.fromHex("#32CD32"):Lerp(Color3.fromHex("#FF0000"), 1 - healthPercentage)
objects.HealthOutline.Position = Vector2.new(barX - 1, boxY - 1)
objects.HealthOutline.Size = Vector2.new(barWidth + 2, height + 2)
objects.Health.Position = Vector2.new(barX, boxY + (height - healthHeight))
objects.Health.Size = Vector2.new(barWidth, healthHeight)
objects.Health.Visible = true
objects.HealthOutline.Visible = true
else
objects.Health.Visible = false
objects.HealthOutline.Visible = false
end
else
for _, obj in pairs(objects) do if type(obj) ~= "table" then obj.Visible = false end end
for _, bone in pairs(objects.Bones) do bone.Visible = false end
end
end
end)
Players.PlayerRemoving:Connect(removeESP)
-- ==========================================
-- Silent Aim Raycast Хук (Hooking)
-- ==========================================
task.spawn(function()
if typeof(hookfunction) ~= "function" or typeof(getgc) ~= "function" then
return
end
local bulletClass = nil
for attempt = 1, 45 do
for _, obj in next, getgc(true) do
if type(obj) == "table" and typeof(rawget(obj, "_performRaycast")) == "function" and rawget(obj, "getTrueSpread") ~= nil then
bulletClass = obj
break
end
end
if bulletClass then break end
task.wait(0.5)
end
if bulletClass then
local oldRaycast
oldRaycast = hookfunction(bulletClass._performRaycast, function(...)
local returns = table.pack(oldRaycast(...))
local result = returns[1]
local SilentTarget = getgenv().ParsaSilentTarget
if type(result) == "table" then
pcall(function()
local origin = rawget(result, "Origin") or (Workspace.CurrentCamera and Workspace.CurrentCamera.CFrame.Position)
local targetPos = nil
if Settings.SilentEnabled and SilentTarget and SilentTarget.Parent then
targetPos = SilentTarget.Position
else
local hits = rawget(result, "Hits")
if type(hits) == "table" and #hits > 0 and hits[#hits] and hits[#hits].Position then
targetPos = hits[#hits].Position
elseif rawget(result, "Direction") and origin then
targetPos = origin + (result.Direction * (result.Distance or 500))
end
end
if origin and targetPos then
spawnBulletTracer(origin, targetPos)
spawnHitExplosion(targetPos)
end
if Settings.SilentEnabled and SilentTarget and SilentTarget.Parent then
local hits = rawget(result, "Hits")
if type(hits) ~= "table" then return end
local aimPos = SilentTarget.Position
local lastIndex = nil
for index, hit in pairs(hits) do
if type(hit) == "table" then
if lastIndex == nil or index > lastIndex then lastIndex = index end
end
end
local finalHit = lastIndex and hits[lastIndex]
if type(finalHit) ~= "table" then return end
finalHit.Instance = SilentTarget
finalHit.Position = aimPos
if finalHit.Exit ~= nil then finalHit.Exit = false end
if typeof(origin) == "Vector3" then
local delta = aimPos - origin
local length = delta.Magnitude
if length > 0.001 then
result.Distance = length
result.Direction = delta.Unit
local unit = delta.Unit
for index, hit in pairs(hits) do
if index ~= lastIndex and type(hit) == "table" and typeof(hit.Position) == "Vector3" then
local along = (hit.Position - origin):Dot(unit)
if along > length then
hit.Position = origin + unit * (length * 0.5)
end
end
end
end
end
end
end)
end
return table.unpack(returns, 1, returns.n)
end)
end
end)



works perfectly esp is a bit wired but it's alright.