M
ScriptKeyless
celestial 1.12.2
[KITS!🏹] 1.8 ArenaDesktop compatibleWave · Codex · Delta · Synapse Z · Volt · Potassium · Seliware · OpiumWare · Real · Matcha
Description
loadstring(game:HttpGet(" https://raw.githubusercontent.com/debil332261-boop/1.8-ARENA/refs/heads/main/1.8arena.lua"))()
GAME[KITS!🏹] 1.8 Arena
UPDATEDOct 14, 2026
ACCESSKeyless
PLATFORMDesktop
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. 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 BloxScripts Risk Notice ]]
-- language: Lua, target: 1.8 Arena, executor: Xeno
-- *Celestial 1.12.2 — Rayfield Gen2 GUI*
-- *KillAura | SpeedHack | ESP | Fly | TargetESP | Watermark*
-- *Trails | Chams | Blur | Target Strafe | China Hat*
-- *FOV Changer | Fullbright | Click Tp*
local Rayfield = loadstring(game:HttpGet("https://sirius.menu/gen2"))()
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Lighting = game:GetService("Lighting")
local LocalPlayer = Players.LocalPlayer
local Camera = Workspace.CurrentCamera
-- ======================
-- НАСТРОЙКИ
-- ======================
local CONFIG = {
KillAura = true,
SpeedHack = true,
ESP = true,
Fly = false,
TargetESP = true,
Watermark = true,
Trails = false,
Chams = false,
Blur = false,
TargetStrafe = false,
ChinaHat = false,
FOVChanger = false,
Fullbright = false,
ClickTp = false,
ESPColor = Color3.fromRGB(200, 100, 255),
ESPFill = 0.5,
ChamsColor = Color3.fromRGB(200, 100, 255),
TrailColor = Color3.fromRGB(200, 100, 255),
BlurSize = 10,
StrafeRadius = 6.5,
StrafeSpeed = 180,
ChinaHatColor = Color3.fromRGB(255, 50, 50),
FOVValue = 100,
ClickTpKey = "E",
}
-- ======================
-- СОСТОЯНИЕ
-- ======================
local killauraEnabled = CONFIG.KillAura
local speedEnabled = CONFIG.SpeedHack
local espEnabled = CONFIG.ESP
local flyEnabled = CONFIG.Fly
local targetESPEnabled = CONFIG.TargetESP
local watermarkEnabled = CONFIG.Watermark
local trailsEnabled = CONFIG.Trails
local chamsEnabled = CONFIG.Chams
local blurEnabled = CONFIG.Blur
local targetStrafeEnabled = CONFIG.TargetStrafe
local chinaHatEnabled = CONFIG.ChinaHat
local fovEnabled = CONFIG.FOVChanger
local fullbrightEnabled = CONFIG.Fullbright
local clickTpEnabled = CONFIG.ClickTp
local targetESPMode = "по центру игрока"
local watermarkSide = "слева"
local watermarkSize = 13
local espColor = CONFIG.ESPColor
local espFill = CONFIG.ESPFill
local chamsColor = CONFIG.ChamsColor
local trailColor = CONFIG.TrailColor
local blurSize = CONFIG.BlurSize
local strafeRadius = CONFIG.StrafeRadius
local strafeSpeed = CONFIG.StrafeSpeed
local chinaHatColor = CONFIG.ChinaHatColor
local fovValue = CONFIG.FOVValue
local clickTpKey = CONFIG.ClickTpKey
local targetDist = 19.0
local speedBoost = 35.0
local flySpeed = 40.0
local lastHit = 0
local hitCooldown = 0.2
local currentFlyY = 0
local PlayerControls = nil
local espCache = {}
local window = nil
local targetMarker = nil
local targetScreenGui = nil
local currentTargetChar = nil
-- strafe
local strafeAngle = 0
local lastStrafeTarget = nil
-- watermark
local wmGui = nil
local wmHolder = nil
local wmHolderLayout = nil
local wmHeader = nil
local wmHeaderBar = nil
local wmHeaderLabel = nil
local wmListFrame = nil
local wmListLayout = nil
local wmModuleRows = {}
local wmMaxWidth = 0
local fpsCounter = 0
local fpsTime = 0
local currentFps = 0
-- trails
local trailObj = nil
local trailParticle = nil
-- chams
local chamsHighlights = {}
-- blur
local blurEffect = nil
-- china hat
local chinaHat = nil
-- fullbright
local savedLighting = nil
local fullbrightEffects = {}
-- ======================
-- ТЕМЫ
-- ======================
local THEMES = {
["Classic (красная)"] = {
accent = Color3.fromRGB(220, 50, 50),
esp = Color3.fromRGB(255, 0, 0),
bg = Color3.fromRGB(20, 20, 20),
button = Color3.fromRGB(220, 50, 50),
toggle = Color3.fromRGB(220, 50, 50),
},
["Celestial (фиолетовая)"] = {
accent = Color3.fromRGB(200, 100, 255),
esp = Color3.fromRGB(200, 100, 255),
bg = Color3.fromRGB(18, 14, 28),
button = Color3.fromRGB(200, 100, 255),
toggle = Color3.fromRGB(200, 100, 255),
},
["Ocean (синяя)"] = {
accent = Color3.fromRGB(50, 130, 220),
esp = Color3.fromRGB(50, 180, 255),
bg = Color3.fromRGB(14, 18, 28),
button = Color3.fromRGB(50, 130, 220),
toggle = Color3.fromRGB(50, 130, 220),
},
["Matrix (зелёная)"] = {
accent = Color3.fromRGB(50, 200, 80),
esp = Color3.fromRGB(0, 255, 100),
bg = Color3.fromRGB(10, 18, 12),
button = Color3.fromRGB(50, 200, 80),
toggle = Color3.fromRGB(50, 200, 80),
},
["Mono (серая)"] = {
accent = Color3.fromRGB(150, 150, 150),
esp = Color3.fromRGB(220, 220, 220),
bg = Color3.fromRGB(18, 18, 18),
button = Color3.fromRGB(150, 150, 150),
toggle = Color3.fromRGB(150, 150, 150),
},
}
-- ======================
-- ХЕЛПЕРЫ
-- ======================
local function getMyChar()
return Workspace:FindFirstChild("LocalCharacter_" .. LocalPlayer.Name) or LocalPlayer.Character
end
local function getCurrentTime()
local t = tick()
local secs = math.floor(t % 86400)
local h = math.floor(secs / 3600) % 24
local m = math.floor(secs / 60) % 60
local s = secs % 60
return string.format("%02d:%02d:%02d", h, m, s)
end
local function keyFromString(str)
if not str or str == "" then return Enum.KeyCode.E end
local ok, key = pcall(function() return Enum.KeyCode[str] end)
if ok then return key end
return Enum.KeyCode.E
end
function applyESPColor()
for char, _ in pairs(espCache) do
if char and char.Parent then
local hl = char:FindFirstChild("CelestialESP")
if hl then
hl.FillColor = espColor
hl.OutlineColor = espColor
hl.FillTransparency = espFill
end
end
end
if targetMarker then
for _, d in ipairs(targetMarker:GetDescendants()) do
if d:IsA("Frame") then d.BackgroundColor3 = espColor end
if d:IsA("UIStroke") then d.Color = espColor end
end
end
if targetScreenGui then
for _, d in ipairs(targetScreenGui:GetDescendants()) do
if d:IsA("Frame") then d.BackgroundColor3 = espColor end
if d:IsA("UIStroke") then d.Color = espColor end
end
end
if wmHeaderBar then wmHeaderBar.BackgroundColor3 = espColor end
if wmHeaderLabel then wmHeaderLabel.TextColor3 = espColor end
for _, row in ipairs(wmModuleRows) do
if row.bar then row.bar.BackgroundColor3 = espColor end
end
end
local function clearESP()
for char, _ in pairs(espCache) do
if char and char.Parent then
local hl = char:FindFirstChild("CelestialESP")
if hl then hl:Destroy() end
end
espCache[char] = nil
end
end
-- ======================
-- TRAILS
-- ======================
local function destroyTrail()
if trailObj then trailObj:Destroy() trailObj = nil end
if trailParticle then trailParticle:Destroy() trailParticle = nil end
end
local function createTrail()
destroyTrail()
local myChar = getMyChar()
if not myChar then return end
local hitbox = myChar:FindFirstChild("PlayerHitbox")
local torso = myChar:FindFirstChild("HeadTorso") or myChar:FindFirstChild("Torso")
local base = hitbox or torso
if not base then return end
local att0 = Instance.new("Attachment")
att0.Name = "CelestialTrailA0"
att0.Position = Vector3.new(0, 1, 0)
att0.Parent = base
local att1 = Instance.new("Attachment")
att1.Name = "CelestialTrailA1"
att1.Position = Vector3.new(0, -1, 0)
att1.Parent = base
local trail = Instance.new("Trail")
trail.Name = "CelestialTrail"
trail.Attachment0 = att0
trail.Attachment1 = att1
trail.Lifetime = 1.2
trail.MinLength = 0
trail.FaceCamera = true
trail.LightEmission = 1
trail.LightInfluence = 0
trail.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, trailColor),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255)),
})
trail.Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(0.7, 0.4),
NumberSequenceKeypoint.new(1, 1),
})
trail.WidthScale = NumberSequence.new({
NumberSequenceKeypoint.new(0, 1),
NumberSequenceKeypoint.new(1, 0),
})
trail.Parent = base
local emitter = Instance.new("ParticleEmitter")
emitter.Name = "CelestialTrailParticles"
emitter.Texture = "rbxassetid://243660364"
emitter.LightEmission = 1
emitter.LightInfluence = 0
emitter.Size = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0.6),
NumberSequenceKeypoint.new(1, 0),
})
emitter.Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0.2),
NumberSequenceKeypoint.new(1, 1),
})
emitter.Lifetime = NumberRange.new(0.6, 1.0)
emitter.Rate = 40
emitter.Speed = NumberRange.new(0.5, 1.5)
emitter.SpreadAngle = Vector2.new(180, 180)
emitter.Color = ColorSequence.new(trailColor)
emitter.Parent = att0
trailObj = trail
trailParticle = emitter
end
local function updateTrailColor()
if trailObj then
trailObj.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, trailColor),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255)),
})
end
if trailParticle then
trailParticle.Color = ColorSequence.new(trailColor)
end
end
-- ======================
-- CHAMS
-- ======================
local CHAMS_BLACKLIST = {
["PlayerHitbox"] = true,
["HeadTorso"] = true,
["PlayerEyeLevel"] = true,
["HumanoidRootPart"] = true,
["Humanoid"] = true,
["Animate"] = true,
["Torso"] = true,
["Head"] = true,
["Left Arm"] = true,
["Right Arm"] = true,
["Left Leg"] = true,
["Right Leg"] = true,
["UpperTorso"] = true,
["LowerTorso"] = true,
["LeftUpperArm"] = true,
["LeftLowerArm"] = true,
["LeftHand"] = true,
["RightUpperArm"] = true,
["RightLowerArm"] = true,
["RightHand"] = true,
["LeftUpperLeg"] = true,
["LeftLowerLeg"] = true,
["LeftFoot"] = true,
["RightUpperLeg"] = true,
["RightLowerLeg"] = true,
["RightFoot"] = true,
}
local function clearChams()
for obj, _ in pairs(chamsHighlights) do
if obj and obj.Parent then
for _, d in ipairs(obj:GetDescendants()) do
if d.Name == "CelestialChams" or d.Name == "CelestialChamsBox" then
d:Destroy()
end
end
local hl = obj:FindFirstChild("CelestialChams")
if hl then hl:Destroy() end
local sb = obj:FindFirstChild("CelestialChamsBox")
if sb then sb:Destroy() end
end
end
chamsHighlights = {}
end
local function applyChamsToObject(obj)
if not obj or not obj.Parent then return end
if obj:FindFirstChild("CelestialChams") then return end
local hl = Instance.new("Highlight")
hl.Name = "CelestialChams"
hl.FillColor = chamsColor
hl.FillTransparency = 0.2
hl.OutlineColor = chamsColor
hl.OutlineTransparency = 0
hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
hl.Parent = obj
if obj:IsA("Model") then
for _, part in ipairs(obj:GetDescendants()) do
if part:IsA("BasePart") and not part:FindFirstChild("CelestialChamsBox") then
local box = Instance.new("SelectionBox")
box.Name = "CelestialChamsBox"
box.Adornee = part
box.Color3 = chamsColor
box.LineThickness = 0.02
box.SurfaceTransparency = 0.4
box.Parent = part
end
end
elseif obj:IsA("BasePart") then
if not obj:FindFirstChild("CelestialChamsBox") then
local box = Instance.new("SelectionBox")
box.Name = "CelestialChamsBox"
box.Adornee = obj
box.Color3 = chamsColor
box.LineThickness = 0.02
box.SurfaceTransparency = 0.4
box.Parent = obj
end
end
chamsHighlights[obj] = true
end
local function isWeaponOrProp(obj)
if not obj or not obj.Parent then return false end
if CHAMS_BLACKLIST[obj.Name] then return false end
if obj.Name == "CelestialChams" or obj.Name == "CelestialChamsBox" then return false end
if obj.Name == "CelestialESP" or obj.Name == "__vanta_esp" or obj.Name == "ESPHighlight" then return false end
if obj.Name:sub(1, 14) == "CelestialTrail" then return false end
if obj.Name:sub(1, 13) == "CelestialCham" then return false end
if obj.Name:sub(1, 13) == "CelestialChin" then return false end
if obj:IsA("Tool") then return true end
if obj:IsA("Model") then
if obj:FindFirstChild("Handle") then return true end
local n = obj.Name:lower()
if n:find("sword") or n:find("gun") or n:find("knife")
or n:find("axe") or n:find("bow") or n:find("weapon")
or n:find("tool") or n:find("melee") or n:find("staff")
or n:find("spear") or n:find("blade") or n:find("hammer")
or n:find("pistol") or n:find("rifle") or n:find("bat") then
return true
end
end
if obj:IsA("BasePart") or obj:IsA("MeshPart") then
local n = obj.Name:lower()
if n:find("sword") or n:find("gun") or n:find("knife")
or n:find("axe") or n:find("bow") or n:find("weapon")
or n:find("handle") or n:find("blade") or n:find("staff")
or n:find("hammer") or n:find("spear") then
return true
end
end
return false
end
local function updateChams()
if not chamsEnabled then
if next(chamsHighlights) then clearChams() end
return
end
local myChar = getMyChar()
if myChar then
for _, obj in ipairs(myChar:GetDescendants()) do
if isWeaponOrProp(obj) then
applyChamsToObject(obj)
end
end
if myChar:IsA("Model") and not chamsHighlights[myChar] then
applyChamsToObject(myChar)
end
end
local otherChars = Workspace:FindFirstChild("OtherCharacters")
if otherChars then
for _, char in ipairs(otherChars:GetChildren()) do
for _, obj in ipairs(char:GetDescendants()) do
if isWeaponOrProp(obj) then
applyChamsToObject(obj)
end
end
end
end
end
local function updateChamsColor()
for obj, _ in pairs(chamsHighlights) do
if obj and obj.Parent then
local hl = obj:FindFirstChild("CelestialChams")
if hl then
hl.FillColor = chamsColor
hl.OutlineColor = chamsColor
end
for _, d in ipairs(obj:GetDescendants()) do
if d:IsA("SelectionBox") and d.Name == "CelestialChamsBox" then
d.Color3 = chamsColor
end
end
end
end
end
-- ======================
-- BLUR
-- ======================
local function createBlur()
if blurEffect then return end
blurEffect = Instance.new("BlurEffect")
blurEffect.Name = "CelestialBlur"
blurEffect.Size = blurSize
blurEffect.Parent = Lighting
end
local function destroyBlur()
if blurEffect then blurEffect:Destroy() blurEffect = nil end
for _, obj in ipairs(Lighting:GetChildren()) do
if obj:IsA("BlurEffect") and obj.Name == "CelestialBlur" then
obj:Destroy()
end
end
end
local function updateBlur()
if blurEnabled then
if not blurEffect then createBlur() end
if blurEffect then blurEffect.Size = blurSize end
else
destroyBlur()
end
end
-- ======================
-- CHINA HAT
-- ======================
local function destroyChinaHat()
if not chinaHat then return end
if chinaHat.part then chinaHat.part:Destroy() end
if chinaHat.ring then chinaHat.ring:Destroy() end
chinaHat = nil
end
local function createChinaHat()
destroyChinaHat()
local myChar = getMyChar()
if not myChar then return end
local head = myChar:FindFirstChild("Head")
or myChar:FindFirstChild("HeadTorso")
or myChar:FindFirstChild("Torso")
or myChar:FindFirstChild("PlayerHitbox")
if not head then return end
local part = Instance.new("Part")
part.Name = "CelestialChinaHat"
part.Size = Vector3.new(3, 0.1, 3)
part.Transparency = 0
part.CanCollide = false
part.CanQuery = false
part.CanTouch = false
part.Massless = true
part.Anchored = false
part.Color = chinaHatColor
part.Material = Enum.Material.Neon
part.CastShadow = false
part.Parent = myChar
part.CFrame = head.CFrame * CFrame.new(0, 2.2, 0)
local weld = Instance.new("WeldConstraint")
weld.Part0 = head
weld.Part1 = part
weld.Parent = part
local mesh = Instance.new("SpecialMesh")
mesh.Name = "HatMesh"
mesh.MeshType = Enum.MeshType.FileMesh
mesh.MeshId = "rbxassetid://1033714"
mesh.Scale = Vector3.new(1.4, 1.6, 1.4)
mesh.Parent = part
local highlight = Instance.new("Highlight")
highlight.Name = "CelestialChinaHatHL"
highlight.Adornee = part
highlight.FillColor = chinaHatColor
highlight.FillTransparency = 0.15
highlight.OutlineColor = chinaHatColor
highlight.OutlineTransparency = 0
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Parent = part
local light = Instance.new("PointLight")
light.Name = "HatLight"
light.Color = chinaHatColor
light.Brightness = 3
light.Range = 12
light.Shadows = false
light.Parent = part
local ring = Instance.new("Part")
ring.Name = "CelestialChinaHatRing"
ring.Shape = Enum.PartType.Cylinder
ring.Size = Vector3.new(0.2, 3.2, 3.2)
ring.Transparency = 0
ring.CanCollide = false
ring.CanQuery = false
ring.CanTouch = false
ring.Massless = true
ring.Anchored = false
ring.Color = chinaHatColor
ring.Material = Enum.Material.Neon
ring.CastShadow = false
ring.Parent = myChar
ring.CFrame = head.CFrame * CFrame.new(0, 1.8, 0) * CFrame.Angles(0, 0, math.rad(90))
local ringWeld = Instance.new("WeldConstraint")
ringWeld.Part0 = head
ringWeld.Part1 = ring
ringWeld.Parent = ring
local ringHighlight = Instance.new("Highlight")
ringHighlight.Name = "CelestialChinaHatRingHL"
ringHighlight.Adornee = ring
ringHighlight.FillColor = chinaHatColor
ringHighlight.FillTransparency = 0.1
ringHighlight.OutlineColor = chinaHatColor
ringHighlight.OutlineTransparency = 0
ringHighlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
ringHighlight.Parent = ring
chinaHat = {
part = part,
mesh = mesh,
ring = ring,
highlight = highlight,
ringHighlight = ringHighlight,
light = light,
}
end
local function updateChinaHatColor()
if not chinaHat then return end
if chinaHat.part then chinaHat.part.Color = chinaHatColor end
if chinaHat.ring then chinaHat.ring.Color = chinaHatColor end
if chinaHat.highlight then
chinaHat.highlight.FillColor = chinaHatColor
chinaHat.highlight.OutlineColor = chinaHatColor
end
if chinaHat.ringHighlight then
chinaHat.ringHighlight.FillColor = chinaHatColor
chinaHat.ringHighlight.OutlineColor = chinaHatColor
end
if chinaHat.light then chinaHat.light.Color = chinaHatColor end
end
local function updateChinaHat()
if not chinaHatEnabled then
if chinaHat then destroyChinaHat() end
return
end
local myChar = getMyChar()
if not myChar then
destroyChinaHat()
return
end
if not chinaHat or not chinaHat.part or not chinaHat.part.Parent then
createChinaHat()
end
end
-- ======================
-- FOV CHANGER
-- ======================
local function updateFOV()
if fovEnabled then
Camera.FieldOfView = fovValue
else
-- возвращаем дефолтное значение Roblox
Camera.FieldOfView = 70
end
end
-- ======================
-- FULLBRIGHT
-- ======================
local function createFullbright()
if savedLighting then return end
savedLighting = {
Ambient = Lighting.Ambient,
OutdoorAmbient = Lighting.OutdoorAmbient,
Brightness = Lighting.Brightness,
GlobalShadows = Lighting.GlobalShadows,
FogEnd = Lighting.FogEnd,
FogStart = Lighting.FogStart,
ClockTime = Lighting.ClockTime,
}
Lighting.Ambient = Color3.fromRGB(200, 200, 200)
Lighting.OutdoorAmbient = Color3.fromRGB(200, 200, 200)
Lighting.Brightness = 2
Lighting.GlobalShadows = false
Lighting.FogEnd = 100000
Lighting.FogStart = 100000
Lighting.ClockTime = 12
-- удаляем все затемнения от эффектов
for _, obj in ipairs(Lighting:GetChildren()) do
if obj:IsA("Atmosphere") then
obj.Density = 0
obj.Haze = 0
end
if obj:IsA("ColorCorrectionEffect") then
if not obj:FindFirstChild("CelestialFBMarker") then
local marker = Instance.new("BoolValue")
marker.Name = "CelestialFBMarker"
marker.Parent = obj
table.insert(fullbrightEffects, { obj = obj, brightness = obj.Brightness, contrast = obj.Contrast })
obj.Brightness = 0.2
obj.Contrast = 0
end
end
end
end
local function destroyFullbright()
if not savedLighting then return end
Lighting.Ambient = savedLighting.Ambient
Lighting.OutdoorAmbient = savedLighting.OutdoorAmbient
Lighting.Brightness = savedLighting.Brightness
Lighting.GlobalShadows = savedLighting.GlobalShadows
Lighting.FogEnd = savedLighting.FogEnd
Lighting.FogStart = savedLighting.FogStart
Lighting.ClockTime = savedLighting.ClockTime
for _, entry in ipairs(fullbrightEffects) do
if entry.obj and entry.obj.Parent then
entry.obj.Brightness = entry.brightness
entry.obj.Contrast = entry.contrast
local marker = entry.obj:FindFirstChild("CelestialFBMarker")
if marker then marker:Destroy() end
end
end
fullbrightEffects = {}
savedLighting = nil
end
local function updateFullbright()
if fullbrightEnabled then
createFullbright()
else
destroyFullbright()
end
end
-- ======================
-- CLICK TP
-- ======================
local function getPlayerInCrosshair()
-- ищем игрока, ближайшего к центру экрана в пределах 500 studs
local camPos = Camera.CFrame.Position
local camLook = Camera.CFrame.LookVector
local best = nil
local bestDot = 0.9 -- минимальный косинус угла (примерно 25°)
local otherChars = Workspace:FindFirstChild("OtherCharacters")
if not otherChars then return nil end
for _, char in ipairs(otherChars:GetChildren()) do
local target = char:FindFirstChild("Torso")
or char:FindFirstChild("HumanoidRootPart")
or char:FindFirstChild("PlayerHitbox")
or char:FindFirstChild("HeadTorso")
if target then
local toTarget = (target.Position - camPos)
local dist = toTarget.Magnitude
if dist > 0 and dist < 500 then
local dir = toTarget.Unit
local dot = camLook:Dot(dir)
if dot > bestDot then
bestDot = dot
best = target
end
end
end
end
return best
end
local function doClickTp()
if not clickTpEnabled then return end
local myChar = getMyChar()
if not myChar then return end
local hitbox = myChar:FindFirstChild("PlayerHitbox")
if not hitbox then return end
local target = getPlayerInCrosshair()
if not target then return end
-- телепорт: ставим свою позицию рядом с целью
hitbox.CFrame = CFrame.new(target.Position + Vector3.new(0, 0, 3)) * hitbox.CFrame.Rotation
hitbox.AssemblyLinearVelocity = Vector3.zero
end
-- ======================
-- TARGET STRAFE
-- ======================
local function applyTargetStrafe(target, dt)
if not targetStrafeEnabled or not target then return end
local myChar = getMyChar()
if not myChar then return end
local hitbox = myChar:FindFirstChild("PlayerHitbox")
if not hitbox then return end
local tRoot = target:FindFirstChild("Torso")
or target:FindFirstChild("HumanoidRootPart")
or target:FindFirstChild("PlayerHitbox")
or target:FindFirstChild("HeadTorso")
if not tRoot then return end
if lastStrafeTarget ~= target then
local currentPos = hitbox.Position
local targetPos = tRoot.Position
local offset = Vector3.new(currentPos.X - targetPos.X, 0, currentPos.Z - targetPos.Z)
if offset.Magnitude > 0.1 then
strafeAngle = math.atan2(offset.Z, offset.X)
else
strafeAngle = 0
end
lastStrafeTarget = target
end
local dir = 1
if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) or UserInputService:IsKeyDown(Enum.KeyCode.RightShift) then
dir = -1
end
strafeAngle = strafeAngle + math.rad(strafeSpeed) * dir * dt
local targetPos = tRoot.Position
local desiredX = targetPos.X + math.cos(strafeAngle) * strafeRadius
local desiredZ = targetPos.Z + math.sin(strafeAngle) * strafeRadius
local currentPos = hitbox.Position
local desiredY = currentPos.Y
local yDiff = targetPos.Y - currentPos.Y
if math.abs(yDiff) > 0.5 then
local ySpeed = 25
local step = ySpeed * dt
if yDiff > 0 then
desiredY = currentPos.Y + math.min(step, yDiff)
else
desiredY = currentPos.Y - math.min(step, -yDiff)
end
end
hitbox.CFrame = CFrame.new(desiredX, desiredY, desiredZ) * hitbox.CFrame.Rotation
end
-- ======================
-- WATERMARK
-- ======================
local function getActiveModules()
local list = {}
if killauraEnabled then table.insert(list, "KillAura") end
if speedEnabled then table.insert(list, "SpeedHack") end
if espEnabled then table.insert(list, "ESP") end
if targetESPEnabled then table.insert(list, "TargetESP") end
if flyEnabled then table.insert(list, "Fly") end
if trailsEnabled then table.insert(list, "Trails") end
if chamsEnabled then table.insert(list, "Chams") end
if blurEnabled then table.insert(list, "Blur") end
if targetStrafeEnabled then table.insert(list, "TargetStrafe") end
if chinaHatEnabled then table.insert(list, "ChinaHat") end
if fovEnabled then table.insert(list, "FOV") end
if fullbrightEnabled then table.insert(list, "Fullbright") end
if clickTpEnabled then table.insert(list, "ClickTp") end
return list
end
local function recomputeWidth()
if not wmHolder then return end
local isRight = (watermarkSide == "справа")
local maxW = 0
if wmHeader then
local w = wmHeader.AbsoluteSize.X
if w > maxW then maxW = w end
end
for _, row in ipairs(wmModuleRows) do
if row.frame then
local w = row.frame.AbsoluteSize.X
if w > maxW then maxW = w end
end
end
if maxW < 80 then maxW = 80 end
wmMaxWidth = maxW
wmHolder.Size = UDim2.new(0, maxW, 0, 0)
if wmListFrame then wmListFrame.Size = UDim2.new(0, maxW, 0, 0) end
local align = isRight and Enum.HorizontalAlignment.Right or Enum.HorizontalAlignment.Left
if wmListLayout then wmListLayout.HorizontalAlignment = align end
if wmHolderLayout then wmHolderLayout.HorizontalAlignment = align end
end
local function applyRowOrientation(row)
if not row or not row.frame then return end
local isRight = (watermarkSide == "справа")
local bar = row.bar
local label = row.label
local frame = row.frame
if isRight then
bar.AnchorPoint = Vector2.new(1, 0)
bar.Position = UDim2.new(1, 0, 0, 0)
label.AnchorPoint = Vector2.new(1, 0)
label.Position = UDim2.new(1, -8, 0, 0)
label.TextXAlignment = Enum.TextXAlignment.Right
else
bar.AnchorPoint = Vector2.new(0, 0)
bar.Position = UDim2.new(0, 0, 0, 0)
label.AnchorPoint = Vector2.new(0, 0)
label.Position = UDim2.new(0, 8, 0, 0)
label.TextXAlignment = Enum.TextXAlignment.Left
end
local w = label.AbsoluteSize.X + 20
if w < 40 then w = 40 end
frame.Size = UDim2.new(0, w, 0, watermarkSize + 6)
end
local function applyHeaderOrientation()
if not wmHeaderLabel or not wmHeaderBar then return end
local isRight = (watermarkSide == "справа")
if isRight then
wmHeaderBar.AnchorPoint = Vector2.new(1, 0)
wmHeaderBar.Position = UDim2.new(1, 0, 0, 0)
wmHeaderLabel.AnchorPoint = Vector2.new(1, 0)
wmHeaderLabel.Position = UDim2.new(1, -8, 0, 0)
wmHeaderLabel.TextXAlignment = Enum.TextXAlignment.Right
else
wmHeaderBar.AnchorPoint = Vector2.new(0, 0)
wmHeaderBar.Position = UDim2.new(0, 0, 0, 0)
wmHeaderLabel.AnchorPoint = Vector2.new(0, 0)
wmHeaderLabel.Position = UDim2.new(0, 8, 0, 0)
wmHeaderLabel.TextXAlignment = Enum.TextXAlignment.Left
end
end
local function applyWatermarkLayout()
if not wmHolder then return end
if watermarkSide == "справа" then
wmHolder.AnchorPoint = Vector2.new(1, 0)
wmHolder.Position = UDim2.new(1, -6, 0, 6)
else
wmHolder.AnchorPoint = Vector2.new(0, 0)
wmHolder.Position = UDim2.new(0, 6, 0, 6)
end
if wmHeaderLabel then wmHeaderLabel.TextSize = watermarkSize + 2 end
for _, row in ipairs(wmModuleRows) do
if row.label then row.label.TextSize = watermarkSize end
end
task.defer(function()
applyHeaderOrientation()
for _, row in ipairs(wmModuleRows) do
applyRowOrientation(row)
end
task.defer(recomputeWidth)
end)
end
local function createModuleRow(parent, text, index)
local row = Instance.new("Frame")
row.Name = "Row_" .. text
row.BackgroundColor3 = Color3.fromRGB(28, 28, 36)
row.BackgroundTransparency = 0.15
row.BorderSizePixel = 0
row.Size = UDim2.new(0, 100, 0, watermarkSize + 6)
row.LayoutOrder = index
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 4)
corner.Parent = row
local bar = Instance.new("Frame")
bar.Name = "Bar"
bar.BackgroundColor3 = espColor
bar.BorderSizePixel = 0
bar.Size = UDim2.new(0, 2, 1, 0)
bar.ZIndex = 2
bar.Parent = row
local barCorner = Instance.new("UICorner")
barCorner.CornerRadius = UDim.new(0, 4)
barCorner.Parent = bar
local label = Instance.new("TextLabel")
label.Name = "Label"
label.BackgroundTransparency = 1
label.Font = Enum.Font.Code
label.TextSize = watermarkSize
label.TextColor3 = Color3.fromRGB(255, 255, 255)
label.Text = text
label.Size = UDim2.new(0, 0, 1, 0)
label.AutomaticSize = Enum.AutomaticSize.X
label.ZIndex = 3
label.Parent = row
local entry = { frame = row, label = label, bar = bar }
label:GetPropertyChangedSignal("AbsoluteSize"):Connect(function()
if not row or not row.Parent then return end
local w = label.AbsoluteSize.X + 20
if w < 40 then w = 40 end
row.Size = UDim2.new(0, w, 0, watermarkSize + 6)
task.defer(recomputeWidth)
end)
applyRowOrientation(entry)
row.Parent = parent
return entry
end
local function createWatermark()
if wmGui then return end
wmGui = Instance.new("ScreenGui")
wmGui.Name = "CelestialWatermark"
wmGui.IgnoreGuiInset = true
wmGui.ResetOnSpawn = false
wmGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
wmGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
wmHolder = Instance.new("Frame")
wmHolder.Name = "Holder"
wmHolder.BackgroundTransparency = 1
wmHolder.Size = UDim2.new(0, 200, 0, 0)
wmHolder.AutomaticSize = Enum.AutomaticSize.Y
wmHolder.ZIndex = 3
wmHolder.Parent = wmGui
wmHolderLayout = Instance.new("UIListLayout")
wmHolderLayout.SortOrder = Enum.SortOrder.LayoutOrder
wmHolderLayout.Padding = UDim.new(0, 2)
wmHolderLayout.HorizontalAlignment = Enum.HorizontalAlignment.Left
wmHolderLayout.Parent = wmHolder
wmHeader = Instance.new("Frame")
wmHeader.Name = "Header"
wmHeader.BackgroundColor3 = Color3.fromRGB(28, 28, 36)
wmHeader.BackgroundTransparency = 0.15
wmHeader.BorderSizePixel = 0
wmHeader.Size = UDim2.new(0, 200, 0, watermarkSize + 8)
wmHeader.LayoutOrder = 0
local headerCorner = Instance.new("UICorner")
headerCorner.CornerRadius = UDim.new(0, 4)
headerCorner.Parent = wmHeader
wmHeaderBar = Instance.new("Frame")
wmHeaderBar.Name = "Bar"
wmHeaderBar.BackgroundColor3 = espColor
wmHeaderBar.BorderSizePixel = 0
wmHeaderBar.Size = UDim2.new(0, 2, 1, 0)
wmHeaderBar.ZIndex = 2
wmHeaderBar.Parent = wmHeader
local headerBarCorner = Instance.new("UICorner")
headerBarCorner.CornerRadius = UDim.new(0, 4)
headerBarCorner.Parent = wmHeaderBar
wmHeaderLabel = Instance.new("TextLabel")
wmHeaderLabel.Name = "HeaderText"
wmHeaderLabel.BackgroundTransparency = 1
wmHeaderLabel.Font = Enum.Font.Code
wmHeaderLabel.TextSize = watermarkSize + 2
wmHeaderLabel.TextColor3 = espColor
wmHeaderLabel.Text = "Celestial | 0 FPS | " .. getCurrentTime()
wmHeaderLabel.Size = UDim2.new(0, 0, 1, 0)
wmHeaderLabel.AutomaticSize = Enum.AutomaticSize.X
wmHeaderLabel.ZIndex = 3
wmHeaderLabel.Parent = wmHeader
wmHeaderLabel:GetPropertyChangedSignal("AbsoluteSize"):Connect(function()
if not wmHeader then return end
local w = wmHeaderLabel.AbsoluteSize.X + 20
if w < 80 then w = 80 end
wmHeader.Size = UDim2.new(0, w, 0, watermarkSize + 8)
task.defer(recomputeWidth)
end)
wmHeader.Parent = wmHolder
wmListFrame = Instance.new("Frame")
wmListFrame.Name = "List"
wmListFrame.BackgroundTransparency = 1
wmListFrame.Size = UDim2.new(0, 200, 0, 0)
wmListFrame.AutomaticSize = Enum.AutomaticSize.Y
wmListFrame.LayoutOrder = 1
wmListFrame.Parent = wmHolder
wmListLayout = Instance.new("UIListLayout")
wmListLayout.SortOrder = Enum.SortOrder.LayoutOrder
wmListLayout.Padding = UDim.new(0, 2)
wmListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Left
wmListLayout.Parent = wmListFrame
applyWatermarkLayout()
end
local function rebuildModuleRows()
if not wmListFrame then return end
for _, row in ipairs(wmModuleRows) do
if row.frame then row.frame:Destroy() end
end
wmModuleRows = {}
local modules = getActiveModules()
for i, name in ipairs(modules) do
local row = createModuleRow(wmListFrame, name, i)
table.insert(wmModuleRows, row)
end
task.defer(recomputeWidth)
end
local function destroyWatermark()
if wmGui then
wmGui:Destroy()
wmGui = nil
wmHolder = nil
wmHolderLayout = nil
wmHeader = nil
wmHeaderBar = nil
wmHeaderLabel = nil
wmListFrame = nil
wmListLayout = nil
wmModuleRows = {}
wmMaxWidth = 0
end
end
local function updateWatermark()
if not watermarkEnabled then
if wmGui then destroyWatermark() end
return
end
if not wmGui then createWatermark() end
if wmHeaderLabel then
wmHeaderLabel.Text = "Celestial | " .. currentFps .. " FPS | " .. getCurrentTime()
end
rebuildModuleRows()
applyWatermarkLayout()
end
-- ======================
-- TARGET ESP
-- ======================
local function destroyTargetMarker()
if targetMarker then targetMarker:Destroy() targetMarker = nil end
if targetScreenGui then targetScreenGui:Destroy() targetScreenGui = nil end
currentTargetChar = nil
end
local function buildRings(parent)
local ringConfigs = {
{ size = 90, thickness = 2, transparency = 0.0, speed = 1.0 },
{ size = 70, thickness = 2, transparency = 0.3, speed = 1.4 },
{ size = 50, thickness = 3, transparency = 0.5, speed = 1.8 },
}
for i, cfg in ipairs(ringConfigs) do
local ring = Instance.new("Frame")
ring.Name = "Ring" .. i
ring.AnchorPoint = Vector2.new(0.5, 0.5)
ring.Position = UDim2.new(0.5, 0, 0.5, 0)
ring.Size = UDim2.new(0, cfg.size, 0, cfg.size)
ring.BackgroundTransparency = 1
ring.BorderSizePixel = 0
ring.ZIndex = 10 - i
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(1, 0)
corner.Parent = ring
local stroke = Instance.new("UIStroke")
stroke.Thickness = cfg.thickness
stroke.Color = espColor
stroke.Transparency = cfg.transparency
stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
stroke.Parent = ring
ring:SetAttribute("BaseSize", cfg.size)
ring:SetAttribute("BaseTransparency", cfg.transparency)
ring:SetAttribute("PulseSpeed", cfg.speed)
ring.Parent = parent
end
local dot = Instance.new("Frame")
dot.Name = "CenterDot"
dot.AnchorPoint = Vector2.new(0.5, 0.5)
dot.Position = UDim2.new(0.5, 0, 0.5, 0)
dot.Size = UDim2.new(0, 6, 0, 6)
dot.BackgroundColor3 = espColor
dot.BorderSizePixel = 0
dot.ZIndex = 20
local dotCorner = Instance.new("UICorner")
dotCorner.CornerRadius = UDim.new(1, 0)
dotCorner.Parent = dot
dot.Parent = parent
end
local function createMarkerOverPlayer(char, offsetY)
destroyTargetMarker()
local head = char:FindFirstChild("Head") or char:FindFirstChild("Torso") or char:FindFirstChild("HumanoidRootPart")
if not head then return end
local billboard = Instance.new("BillboardGui")
billboard.Name = "CelestialTargetESP"
billboard.Size = UDim2.new(0, 120, 0, 120)
billboard.StudsOffsetWorldSpace = Vector3.new(0, offsetY, 0)
billboard.AlwaysOnTop = true
billboard.LightInfluence = 0
billboard.Adornee = head
billboard.Parent = head
buildRings(billboard)
targetMarker = billboard
currentTargetChar = char
end
local function createMarkerOnScreen()
destroyTargetMarker()
local sg = Instance.new("ScreenGui")
sg.Name = "CelestialTargetScreen"
sg.IgnoreGuiInset = true
sg.ResetOnSpawn = false
sg.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
sg.Parent = LocalPlayer:WaitForChild("PlayerGui")
local holder = Instance.new("Frame")
holder.Name = "Holder"
holder.AnchorPoint = Vector2.new(0.5, 0.5)
holder.Position = UDim2.new(0.5, 0, 0.5, 0)
holder.Size = UDim2.new(0, 140, 0, 140)
holder.BackgroundTransparency = 1
holder.Parent = sg
buildRings(holder)
targetScreenGui = sg
currentTargetChar = "SCREEN"
end
local function updateTargetMarker(target)
if not targetESPEnabled or not target then
if targetMarker or targetScreenGui then destroyTargetMarker() end
return
end
local needRecreate = false
if targetESPMode == "по центру экрана" then
if targetMarker then needRecreate = true end
if not targetScreenGui then needRecreate = true end
else
if targetScreenGui then needRecreate = true end
if not targetMarker then needRecreate = true end
if targetMarker and currentTargetChar ~= target then needRecreate = true end
end
if needRecreate then
if targetESPMode == "над игроком" then
createMarkerOverPlayer(target, 3.5)
elseif targetESPMode == "по центру игрока" then
createMarkerOverPlayer(target, 0)
else
createMarkerOnScreen()
end
end
local container = targetMarker
if targetScreenGui then container = targetScreenGui:FindFirstChild("Holder") end
if container then
local t = tick()
for _, ring in ipairs(container:GetChildren()) do
if ring:IsA("Frame") and ring.Name:sub(1, 4) == "Ring" then
local baseSize = ring:GetAttribute("BaseSize")
local baseTrans = ring:GetAttribute("BaseTransparency")
local pulseSpeed = ring:GetAttribute("PulseSpeed")
if baseSize then
local pulse = (math.sin(t * pulseSpeed * 3) + 1) / 2
local size = baseSize + pulse * 12
ring.Size = UDim2.new(0, size, 0, size)
local stroke = ring:FindFirstChildOfClass("UIStroke")
if stroke then stroke.Transparency = baseTrans + pulse * 0.3 end
end
end
end
end
end
-- ======================
-- ТЕМА
-- ======================
local function applyTheme(themeName)
local theme = THEMES[themeName]
if not theme then return end
local customTheme = {
TextColor = Color3.fromRGB(240, 240, 240),
Background = theme.bg,
Topbar = theme.bg,
Shadow = Color3.fromRGB(10, 10, 10),
NotificationBackground = theme.bg,
NotificationActionsBackground = theme.button,
TabBackground = theme.bg,
TabStroke = theme.button,
TabBackgroundSelected = theme.button,
TabTextColor = Color3.fromRGB(240, 240, 240),
SelectedTabTextColor = Color3.fromRGB(255, 255, 255),
ElementBackground = Color3.fromRGB(30, 30, 30),
ElementBackgroundHover = Color3.fromRGB(40, 40, 40),
SecondaryElementBackground = Color3.fromRGB(25, 25, 25),
ElementStroke = theme.button,
SecondaryElementStroke = theme.button,
SliderBackground = Color3.fromRGB(50, 50, 50),
SliderProgress = theme.accent,
SliderStroke = theme.accent,
ToggleBackground = Color3.fromRGB(30, 30, 30),
ToggleEnabled = theme.toggle,
ToggleDisabled = Color3.fromRGB(100, 100, 100),
ToggleEnabledStroke = theme.toggle,
ToggleDisabledStroke = Color3.fromRGB(125, 125, 125),
ToggleEnabledOuterStroke = theme.toggle,
ToggleDisabledOuterStroke = Color3.fromRGB(65, 65, 65),
DropdownSelected = Color3.fromRGB(40, 40, 40),
DropdownUnselected = Color3.fromRGB(30, 30, 30),
InputBackground = Color3.fromRGB(30, 30, 30),
InputStroke = theme.button,
PlaceholderColor = Color3.fromRGB(178, 178, 178),
}
if window then
pcall(function()
window:ModifyTheme(customTheme)
end)
end
espColor = theme.esp
applyESPColor()
end
-- ======================
-- KILL AURA
-- ======================
local function getTarget(originPos)
if not killauraEnabled then return nil end
local closest = nil
local minDist = targetDist
local otherChars = Workspace:FindFirstChild("OtherCharacters")
if not otherChars then return nil end
for _, char in ipairs(otherChars:GetChildren()) do
local tRoot = char:FindFirstChild("Torso") or char:FindFirstChild("HumanoidRootPart")
if tRoot then
local dist = (tRoot.Position - originPos).Magnitude
if dist <= minDist then
minDist = dist
closest = char
end
end
end
return closest
end
-- ======================
-- INPUT — Click TP
-- ======================
UserInputService.InputBegan:Connect(function(input, processed)
if processed then return end
if clickTpEnabled then
local expectedKey = keyFromString(clickTpKey)
if input.KeyCode == expectedKey then
pcall(doClickTp)
end
end
end)
-- ======================
-- ГЛАВНЫЙ ЦИКЛ
-- ======================
RunService.RenderStepped:Connect(function(dt)
fpsCounter = fpsCounter + 1
fpsTime = fpsTime + dt
if fpsTime >= 0.5 then
currentFps = math.floor(fpsCounter / fpsTime + 0.5)
fpsCounter = 0
fpsTime = 0
updateWatermark()
end
local otherChars = Workspace:FindFirstChild("OtherCharacters")
if otherChars then
if espEnabled then
for _, char in ipairs(otherChars:GetChildren()) do
if not char:FindFirstChild("CelestialESP") then
local hl = Instance.new("Highlight")
hl.Name = "CelestialESP"
hl.FillColor = espColor
hl.OutlineColor = espColor
hl.FillTransparency = espFill
hl.OutlineTransparency = 0
hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
hl.Parent = char
espCache[char] = true
end
end
else
if next(espCache) then clearESP() end
end
end
local myChar = getMyChar()
if speedEnabled and myChar then
local hitbox = myChar:FindFirstChild("PlayerHitbox")
if hitbox then
if not PlayerControls then
local pm = LocalPlayer.PlayerScripts:FindFirstChild("PlayerModule")
if pm then
PlayerControls = require(pm):GetControls()
end
end
if PlayerControls then
local moveVec = PlayerControls:GetMoveVector()
if moveVec.Magnitude > 0 then
local look = Vector3.new(Camera.CFrame.LookVector.X, 0, Camera.CFrame.LookVector.Z)
local right = Vector3.new(Camera.CFrame.RightVector.X, 0, Camera.CFrame.RightVector.Z)
if look.Magnitude > 0 and right.Magnitude > 0 then
look = look.Unit
right = right.Unit
local moveDir = (look * -moveVec.Z + right * moveVec.X)
if moveDir.Magnitude > 0 then
moveDir = moveDir.Unit
hitbox.CFrame = hitbox.CFrame + (moveDir * speedBoost * dt)
end
end
end
end
end
end
if flyEnabled and myChar then
local hitbox = myChar:FindFirstChild("PlayerHitbox")
if hitbox then
local moveY = 0
if UserInputService:IsKeyDown(Enum.KeyCode.Space) or UserInputService:IsKeyDown(Enum.KeyCode.E) then
moveY = moveY + (flySpeed * dt)
end
if UserInputService:IsKeyDown(Enum.KeyCode.Q) or UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then
moveY = moveY - (flySpeed * dt)
end
currentFlyY = currentFlyY + moveY
local pos = hitbox.Position
hitbox.CFrame = CFrame.new(pos.X, currentFlyY, pos.Z) * hitbox.CFrame.Rotation
hitbox.AssemblyLinearVelocity = Vector3.zero
end
end
-- Trails
if trailsEnabled then
if not trailObj or not trailObj.Parent then
createTrail()
end
else
if trailObj then destroyTrail() end
end
-- Chams
if chamsEnabled then
if tick() % 0.2 < dt then
updateChams()
end
else
if next(chamsHighlights) then clearChams() end
end
-- Blur
if blurEnabled and not blurEffect then
createBlur()
elseif not blurEnabled and blurEffect then
destroyBlur()
end
-- China Hat
if chinaHatEnabled then
if tick() % 0.3 < dt then
updateChinaHat()
end
else
if chinaHat then destroyChinaHat() end
end
-- FOV
if fovEnabled then
if Camera.FieldOfView ~= fovValue then
Camera.FieldOfView = fovValue
end
end
-- KillAura + Target marker
local activeTarget = nil
if killauraEnabled then
local eyeLevel = myChar and myChar:FindFirstChild("PlayerEyeLevel")
local originPos = eyeLevel and eyeLevel.Position or Camera.CFrame.Position
activeTarget = getTarget(originPos)
if activeTarget then
local tRoot = activeTarget:FindFirstChild("Torso") or activeTarget:FindFirstChild("HumanoidRootPart")
if tRoot and myChar then
local headTorso = myChar:FindFirstChild("HeadTorso")
local neck = headTorso and headTorso:FindFirstChild("Neck")
if neck then
local lookDir = (tRoot.Position - originPos).Unit
local basePos = Vector3.new(0, 1.403, 0)
neck.C0 = CFrame.new(basePos, basePos + lookDir)
end
if tick() - lastHit >= hitCooldown then
local Remotes = ReplicatedStorage:FindFirstChild("Remotes")
if Remotes then
local AnimateHit = Remotes:FindFirstChild("AnimateHit")
local HitRequest = Remotes:FindFirstChild("HitRequest")
if AnimateHit and HitRequest then
local targetPlayerName = string.gsub(activeTarget.Name, "_FakeCharacter", "")
local targetPlayer = Players:FindFirstChild(targetPlayerName)
local dir = (tRoot.Position - originPos).Unit
AnimateHit:FireServer()
HitRequest:FireServer(originPos, dir, activeTarget, targetPlayer)
lastHit = tick()
end
end
end
end
end
end
-- Target Strafe
if targetStrafeEnabled and activeTarget then
applyTargetStrafe(activeTarget, dt)
elseif targetStrafeEnabled and not activeTarget then
lastStrafeTarget = nil
end
updateTargetMarker(activeTarget)
end)
-- ======================
-- GUI
-- ======================
window = Rayfield:CreateWindow({
name = "Celestial 1.12.2",
subtitle = "1.8 Arena",
sidebarLayout = true,
})
local combatTab = window:CreateTab({ name = "Бой", icon = 93364949241311 })
combatTab:CreateSection("Боевые модули")
local killAuraToggle = combatTab:CreateToggle({
name = "Килл-аура",
currentValue = killauraEnabled,
callback = function(value)
killauraEnabled = value
updateWatermark()
end,
})
combatTab:CreateSection("Цель")
local targetESPToggle = combatTab:CreateToggle({
name = "Target ESP (кружки)",
currentValue = targetESPEnabled,
callback = function(value)
targetESPEnabled = value
if not value then destroyTargetMarker() end
updateWatermark()
end,
})
combatTab:CreateDropdown({
name = "Позиция Target ESP",
options = {"над игроком", "по центру игрока", "по центру экрана"},
currentOption = "по центру игрока",
callback = function(option)
targetESPMode = option
destroyTargetMarker()
updateWatermark()
end,
})
combatTab:CreateSection("Target Strafe — кружение вокруг цели")
local strafeToggle = combatTab:CreateToggle({
name = "Target Strafe",
currentValue = targetStrafeEnabled,
callback = function(value)
targetStrafeEnabled = value
lastStrafeTarget = nil
updateWatermark()
end,
})
combatTab:CreateSlider({
name = "Скорость кружения",
range = {30, 720},
increment = 10,
suffix = " °/сек",
currentValue = strafeSpeed,
callback = function(value)
strafeSpeed = value
end,
})
combatTab:CreateSlider({
name = "Радиус кружения",
range = {3, 25},
increment = 0.5,
suffix = " studs",
currentValue = strafeRadius,
callback = function(value)
strafeRadius = value
end,
})
combatTab:CreateSection("Click Tp — телепорт к цели")
local clickTpToggle = combatTab:CreateToggle({
name = "Click Tp",
currentValue = clickTpEnabled,
callback = function(value)
clickTpEnabled = value
updateWatermark()
end,
})
combatTab:CreateInput({
name = "Кнопка телепорта",
currentValue = clickTpKey,
placeholderText = "E",
removeTextAfterFocusLost = false,
callback = function(text)
clickTpKey = text
end,
})
local moveTab = window:CreateTab({ name = "Движение", icon = 93364949241311 })
moveTab:CreateSection("Модули движения")
local speedToggle = moveTab:CreateToggle({
name = "Спидхак",
currentValue = true,
callback = function(value)
speedEnabled = value
updateWatermark()
end,
})
moveTab:CreateSection("Полёт")
local flyToggle = moveTab:CreateToggle({
name = "Полёт (Fly)",
currentValue = flyEnabled,
callback = function(value)
flyEnabled = value
if value then
local myChar = getMyChar()
local hitbox = myChar and myChar:FindFirstChild("PlayerHitbox")
if hitbox then currentFlyY = hitbox.Position.Y end
end
updateWatermark()
end,
})
moveTab:CreateSlider({
name = "Скорость полёта",
range = {10, 150},
increment = 5,
suffix = " studs",
currentValue = flySpeed,
callback = function(value) flySpeed = value end,
})
local effectsTab = window:CreateTab({ name = "Эффекты", icon = 93364949241311 })
effectsTab:CreateSection("Trails — след из света")
local trailsToggle = effectsTab:CreateToggle({
name = "Trails",
currentValue = trailsEnabled,
callback = function(value)
trailsEnabled = value
if value then createTrail() else destroyTrail() end
updateWatermark()
end,
})
effectsTab:CreateColorPicker({
name = "Цвет Trails",
color = trailColor,
callback = function(color)
trailColor = color
updateTrailColor()
end,
})
effectsTab:CreateSection("Chams — перекраска предметов")
local chamsToggle = effectsTab:CreateToggle({
name = "Chams (предметы в руках)",
currentValue = chamsEnabled,
callback = function(value)
chamsEnabled = value
if not value then clearChams() end
updateWatermark()
end,
})
effectsTab:CreateColorPicker({
name = "Цвет Chams",
color = chamsColor,
callback = function(color)
chamsColor = color
updateChamsColor()
end,
})
effectsTab:CreateSection("Blur — блюр экрана")
local blurToggle = effectsTab:CreateToggle({
name = "Blur",
currentValue = blurEnabled,
callback = function(value)
blurEnabled = value
updateBlur()
updateWatermark()
end,
})
effectsTab:CreateSlider({
name = "Сила блюра",
range = {0, 40},
increment = 1,
suffix = "",
currentValue = blurSize,
callback = function(value)
blurSize = value
if blurEffect then blurEffect.Size = blurSize end
end,
})
effectsTab:CreateSection("China Hat — китайская шляпа (только на себе)")
local chinaHatToggle = effectsTab:CreateToggle({
name = "China Hat",
currentValue = chinaHatEnabled,
callback = function(value)
chinaHatEnabled = value
if value then
createChinaHat()
else
destroyChinaHat()
end
updateWatermark()
end,
})
effectsTab:CreateColorPicker({
name = "Цвет China Hat",
color = chinaHatColor,
callback = function(color)
chinaHatColor = color
updateChinaHatColor()
end,
})
effectsTab:CreateSection("Fullbright — убрать темноту")
local fullbrightToggle = effectsTab:CreateToggle({
name = "Fullbright",
currentValue = fullbrightEnabled,
callback = function(value)
fullbrightEnabled = value
updateFullbright()
updateWatermark()
end,
})
local visualTab = window:CreateTab({ name = "Визуал", icon = 93364949241311 })
visualTab:CreateSection("Подсветка игроков")
local espToggle = visualTab:CreateToggle({
name = "ESP игроков",
currentValue = true,
callback = function(value)
espEnabled = value
if not value then clearESP() end
updateWatermark()
end,
})
visualTab:CreateColorPicker({
name = "Цвет ESP",
color = espColor,
callback = function(color)
espColor = color
applyESPColor()
end,
})
visualTab:CreateSlider({
name = "Прозрачность ESP",
range = {0, 1},
increment = 0.05,
suffix = "",
currentValue = espFill,
callback = function(value)
espFill = value
applyESPColor()
end,
})
visualTab:CreateSection("FOV Changer")
local fovToggle = visualTab:CreateToggle({
name = "FOV Changer",
currentValue = fovEnabled,
callback = function(value)
fovEnabled = value
updateFOV()
updateWatermark()
end,
})
visualTab:CreateSlider({
name = "FOV",
range = {70, 130},
increment = 1,
suffix = "°",
currentValue = fovValue,
callback = function(value)
fovValue = value
if fovEnabled then Camera.FieldOfView = fovValue end
end,
})
visualTab:CreateSection("Интерфейс")
local watermarkToggle = visualTab:CreateToggle({
name = "Watermark",
currentValue = watermarkEnabled,
callback = function(value)
watermarkEnabled = value
if not value then destroyWatermark() end
updateWatermark()
end,
})
visualTab:CreateDropdown({
name = "Сторона Watermark",
options = {"слева", "справа"},
currentOption = "слева",
callback = function(option)
watermarkSide = option
updateWatermark()
end,
})
visualTab:CreateSlider({
name = "Размер Watermark",
range = {9, 22},
increment = 1,
suffix = " px",
currentValue = watermarkSize,
callback = function(value)
watermarkSize = value
updateWatermark()
end,
})
local settingsTab = window:CreateTab({ name = "Настройки", icon = 93364949241311 })
settingsTab:CreateSection("Темы оформления")
settingsTab:CreateDropdown({
name = "Выбор темы",
options = {
"Classic (красная)",
"Celestial (фиолетовая)",
"Ocean (синяя)",
"Matrix (зелёная)",
"Mono (серая)",
},
currentOption = "Classic (красная)",
callback = function(option)
applyTheme(option)
end,
})
settingsTab:CreateSection("Информация")
settingsTab:CreateParagraph({
title = "Celestial 1.12.2",
content = "Килл-аура | Спидхак | ESP | Полёт | Target ESP | Watermark | Trails | Chams | Blur | Target Strafe | China Hat | FOV | Fullbright | Click Tp\n\nУправление только через GUI.\n\nПолёт: Space/E — вверх, Q/LeftShift — вниз\nStrafe: LeftShift — смена направления",
})
settingsTab:CreateSection("Конфигурация")
settingsTab:CreateButton({
name = "Сбросить настройки",
callback = function()
killauraEnabled = true
speedEnabled = true
espEnabled = true
flyEnabled = false
targetESPEnabled = true
watermarkEnabled = true
trailsEnabled = false
chamsEnabled = false
blurEnabled = false
targetStrafeEnabled = false
chinaHatEnabled = false
fovEnabled = false
fullbrightEnabled = false
clickTpEnabled = false
watermarkSide = "слева"
watermarkSize = 13
espColor = Color3.fromRGB(200, 100, 255)
chamsColor = Color3.fromRGB(200, 100, 255)
trailColor = Color3.fromRGB(200, 100, 255)
chinaHatColor = Color3.fromRGB(255, 50, 50)
blurSize = 10
strafeRadius = 6.5
strafeSpeed = 180
fovValue = 100
espFill = 0.5
killAuraToggle:Set(true)
speedToggle:Set(true)
espToggle:Set(true)
flyToggle:Set(false)
targetESPToggle:Set(true)
watermarkToggle:Set(true)
trailsToggle:Set(false)
chamsToggle:Set(false)
blurToggle:Set(false)
strafeToggle:Set(false)
chinaHatToggle:Set(false)
fovToggle:Set(false)
fullbrightToggle:Set(false)
clickTpToggle:Set(false)
applyESPColor()
updateChamsColor()
updateTrailColor()
updateBlur()
updateChinaHatColor()
updateFOV()
updateFullbright()
updateWatermark()
Rayfield:Notify({ title = "Celestial", content = "Настройки сброшены" })
end,
})
-- ======================
-- СТАРТ
-- ======================
updateWatermark()
Rayfield:Notify({ title = "Celestial 1.12.2", content = "Чит загружен" })
print("[Celestial] 1.12.2 loaded")Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place