local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera local player = Players.LocalPlayer -- === CONFIG === local LineCount = 4 local Radius = 7 local LineLength = 15 local LabelText = "CHROMATIC" -- === CROSSHAIR OBJECTS === local CrosshairLines = {} for i = 1, LineCount do local line = Drawing.new("Line") line.Thickness = 2 line.Visible = true table.insert(CrosshairLines, line) end local Dot = Drawing.new("Circle") Dot.Radius = 2 Dot.Filled = true Dot.Visible = true local Label = Drawing.new("Text") Label.Text = LabelText Label.Size = 16 Label.Center = true Label.Outline = true Label.Visible = true Label.Font = 2 -- === MOUSE HIDING === local function hideMouse() UserInputService.MouseIconEnabled = false end -- === Hide mouse on respawn too === player.CharacterAdded:Connect(function() task.wait(0.5) hideMouse() end) -- Initial hide hideMouse() -- === FUNCTION: Get rainbow color (HSV to RGB) === local function getRainbowColor(timeOffset) local hue = (tick() + timeOffset) % 5 / 5 -- cycle every 5 seconds return Color3.fromHSV(hue, 1, 1) end -- === MAIN ANIMATION LOOP === local angle = 0 RunService.RenderStepped:Connect(function() local mousePos = UserInputService:GetMouseLocation() local center = Vector2.new(mousePos.X, mousePos.Y) local rainbowColor = getRainbowColor(0) -- Update crosshair lines for i, line in ipairs(CrosshairLines) do local a = angle + (math.pi * 2 / LineCount) * (i - 1) local from = Vector2.new(center.X + math.cos(a) * Radius, center.Y + math.sin(a) * Radius) local to = Vector2.new(center.X + math.cos(a) * (Radius + LineLength), center.Y + math.sin(a) * (Radius + LineLength)) line.From = from line.To = to line.Color = rainbowColor end Dot.Position = center Dot.Color = rainbowColor Label.Position = Vector2.new(center.X, center.Y + 25) Label.Color = rainbowColor angle += 0.05 end)