О скрипте
Скачать скрипт
Код скрипта
Скопируйте loader-код, если используете совместимую среду.
-- OneRoblox JJS ESP + Camera Aim 1.0.0
-- Copyright (c) 2026 OneRoblox. MIT License.
-- Permission is granted, free of charge, to any person obtaining a copy of
-- this software and associated documentation files (the "Software"), to deal
-- in the Software without restriction, including without limitation the rights
-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-- copies of the Software, and to permit persons to whom the Software is
-- furnished to do so, subject to the following conditions:
-- The above copyright notice and this permission notice shall be included in
-- all copies or substantial portions of the Software.
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-- THE SOFTWARE.
-- Not tested in Roblox. Third-party executors can risk your account.
-- No HTTP, external libraries, key system, file access or server remote calls.
if game.GameId ~= 3508322461 then
warn("OneRoblox JJS: wrong game")
return
end
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
if not player then return end
local playerGui = player:WaitForChild("PlayerGui", 10)
if not playerGui then return end
local name = "OneRobloxJJS"
local previous = playerGui:FindFirstChild(name)
if previous then
local stop = previous:FindFirstChild("Stop")
if stop and stop:IsA("BindableEvent") then stop:Fire() else previous:Destroy() end
end
local gui = Instance.new("ScreenGui")
gui.Name = name
gui.ResetOnSpawn = false
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
gui.Parent = playerGui
local stop = Instance.new("BindableEvent")
stop.Name = "Stop"
stop.Parent = gui
local highlights = Instance.new("Folder")
highlights.Name = name .. "Marks"
highlights.Parent = Workspace
local panel = Instance.new("Frame")
panel.Size = UDim2.new(0, 264, 0, 170)
panel.Position = UDim2.new(0, 12, 0, 72)
panel.BackgroundColor3 = Color3.fromRGB(23, 26, 29)
panel.BorderSizePixel = 0
panel.Parent = gui
local function text(class, value, x, y, width, height)
local item = Instance.new(class)
item.Size = UDim2.new(0, width, 0, height)
item.Position = UDim2.new(0, x, 0, y)
item.Text = value
item.TextSize = 12
item.TextWrapped = true
item.TextColor3 = Color3.fromRGB(242, 245, 249)
item.Font = Enum.Font.Gotham
item.BackgroundColor3 = Color3.fromRGB(45, 51, 57)
item.BorderSizePixel = 0
if class == "TextLabel" then item.BackgroundTransparency = 1 end
item.Parent = panel
return item
end
text("TextLabel", "OneRoblox | JJS", 8, 6, 204, 24)
local close = text("TextButton", "X", 224, 6, 32, 28)
local espButton = text("TextButton", "ESP: OFF", 8, 42, 120, 34)
local aimButton = text("TextButton", "Aim: OFF", 136, 42, 120, 34)
text("TextLabel", "Aim: 120 px from screen centre; 400 studs; visible targets only", 8, 82, 248, 40)
local status = text("TextLabel", "Both functions are off", 8, 126, 248, 36)
local esp, aim, disposed = false, false, false
local marks, connections = {}, {}
local color = Color3.fromRGB(90, 210, 220)
local function clearMark(other)
local mark = marks[other]
if not mark then return end
mark.highlight:Destroy()
mark.label:Destroy()
marks[other] = nil
end
local function clearMarks()
local remove = {}
for other in pairs(marks) do table.insert(remove, other) end
for _, other in ipairs(remove) do clearMark(other) end
end
local function body(other)
local character = other.Character
if not character or not character.Parent then return end
local humanoid = character:FindFirstChildOfClass("Humanoid")
local root = character:FindFirstChild("HumanoidRootPart")
local head = character:FindFirstChild("Head")
if not humanoid or humanoid.Health <= 0 or not root or not root:IsA("BasePart") or not head or not head:IsA("BasePart") then return end
return character, root, head
end
local function makeMark(other, character, head)
local highlight = Instance.new("Highlight")
highlight.Adornee = character
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.FillTransparency = 0.9
highlight.OutlineTransparency = 0
highlight.FillColor = color
highlight.OutlineColor = color
highlight.Parent = highlights
local label = Instance.new("BillboardGui")
label.Size = UDim2.new(0, 180, 0, 32)
label.Adornee = head
label.AlwaysOnTop = true
label.StudsOffset = Vector3.new(0, 2.5, 0)
label.Parent = gui
local caption = Instance.new("TextLabel")
caption.Size = UDim2.new(1, 0, 1, 0)
caption.BackgroundTransparency = 1
caption.TextSize = 12
caption.TextWrapped = true
caption.TextColor3 = color
caption.TextStrokeTransparency = 0.3
caption.Font = Enum.Font.Gotham
caption.Parent = label
local mark = {character = character, highlight = highlight, label = label, caption = caption}
marks[other] = mark
return mark
end
local function updateESP()
local camera = Workspace.CurrentCamera
if not esp or not camera then clearMarks(); return end
local live = {}
for index, other in ipairs(Players:GetPlayers()) do
if index > 64 then break end
if other ~= player then
local character, root, head = body(other)
if character then
live[other] = true
if marks[other] and marks[other].character ~= character then clearMark(other) end
local mark = marks[other] or makeMark(other, character, head)
mark.label.Adornee = head
mark.caption.Text = string.sub(other.DisplayName, 1, 40) .. " | " .. math.floor((camera.CFrame.Position - root.Position).Magnitude) .. " studs"
end
end
end
local remove = {}
for other in pairs(marks) do if not live[other] then table.insert(remove, other) end end
for _, other in ipairs(remove) do clearMark(other) end
end
local ray = RaycastParams.new()
ray.FilterType = Enum.RaycastFilterType.Exclude
local function updateAim(delta)
if disposed or not aim then return end
local camera = Workspace.CurrentCamera
local own = body(player)
if not camera or not own then status.Text = "Aim: waiting for camera / character"; return end
if camera.CameraType == Enum.CameraType.Scriptable then status.Text = "Aim paused: scripted camera"; return end
local centre = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2)
local nearest, target, best = 120, nil, nil
ray.FilterDescendantsInstances = {own}
for index, other in ipairs(Players:GetPlayers()) do
if index > 64 then break end
if other ~= player then
local character, _, head = body(other)
if character then
local direction = head.Position - camera.CFrame.Position
local point, onScreen = camera:WorldToViewportPoint(head.Position)
local distance = (Vector2.new(point.X, point.Y) - centre).Magnitude
if onScreen and point.Z > 0 and direction.Magnitude > 0.01 and direction.Magnitude <= 400 and distance <= nearest then
local hit = Workspace:Raycast(camera.CFrame.Position, direction, ray)
if not hit or hit.Instance:IsDescendantOf(character) then
nearest, target, best = distance, head.Position, other.DisplayName
end
end
end
end
end
if target then
local desired = CFrame.lookAt(camera.CFrame.Position, target)
camera.CFrame = camera.CFrame:Lerp(desired, 1 - math.exp(-10 * math.min(delta, 0.1)))
status.Text = "Camera aim: " .. string.sub(best, 1, 40)
else status.Text = "Aim: no visible target in 120 px" end
end
local function cleanup()
if disposed then return end
disposed = true
RunService:UnbindFromRenderStep(name)
for _, connection in ipairs(connections) do connection:Disconnect() end
clearMarks()
highlights:Destroy()
gui:Destroy()
end
table.insert(connections, espButton.Activated:Connect(function()
esp = not esp
espButton.Text = esp and "ESP: ON" or "ESP: OFF"
if not esp then clearMarks() end
status.Text = esp and "ESP enabled" or "ESP disabled"
end))
table.insert(connections, aimButton.Activated:Connect(function()
aim = not aim
aimButton.Text = aim and "Aim: ON" or "Aim: OFF"
status.Text = aim and "Aim enabled" or "Aim disabled"
end))
table.insert(connections, close.Activated:Connect(cleanup))
table.insert(connections, stop.Event:Connect(cleanup))
table.insert(connections, gui.Destroying:Connect(cleanup))
local elapsed = 0
table.insert(connections, RunService.Heartbeat:Connect(function(delta)
elapsed = elapsed + delta
if elapsed < 0.2 or disposed then return end
elapsed = 0
if not pcall(updateESP) then
esp = false; clearMarks(); espButton.Text = "ESP: OFF"
status.Text = "ESP stopped: unsupported character"
end
end))
RunService:BindToRenderStep(name, Enum.RenderPriority.Camera.Value + 1, function(delta)
if not pcall(updateAim, delta) then
aim = false; aimButton.Text = "Aim: OFF"
status.Text = "Aim stopped: unsupported camera"
end
end)Описание скрипта
Lua-скрипт JJS без Key System: подсветка игроков, расстояние и помощь камерой. Полный исходник и скачивание; работа в Roblox не подтверждена.

Здесь опубликован Lua-скрипт для Jujutsu Shenanigans с двумя отдельными переключателями: ESP игроков и помощью наведения камеры. Это исходник OneRoblox без Key System и без загрузки дополнительного кода по внешней ссылке. Файл можно изучить до запуска.
Статус: не проверен в игре. Проверка синтаксиса и тесты на моделях объектов не подтверждают совместимость с конкретным клиентом Roblox, Delta, Xeno или Android. Использование сторонних исполнителей может нарушать правила платформы и привести к блокировке аккаунта.
Какие функции есть
- Подсветка других игроков с отображением расстояния.
- Помощь камерой: поиск ближайшей подходящей цели к центру экрана.
- Ограничение выбора по экранному радиусу и расстоянию в мире.
- Проверка прямой видимости для наведения; цель за стеной не выбирается.
- Отдельное включение функций: после загрузки они выключены.
- Очистка созданных элементов и обработчиков при закрытии или повторном запуске.
Помощь камерой не отправляет команды атаки и не гарантирует попадание способностью. Направление навыка, дистанция, блок и состояние противника продолжают определять результат боя.
Чего в файле нет
В нём нет автокомбо, автоматического Black Flash, фарма убийств, бессмертия, бесконечного пробуждения, снятия перезарядки и открытия раннего доступа. ESP не является доказательством возможности изменить серверное здоровье или получить платного персонажа.
Файл не запрашивает пароль, cookie, токен аккаунта или оплату ключа. В коде нет загрузки удалённого Lua через loadstring/HttpGet, файловых операций исполнителя или вызовов игровых RemoteEvent для автоматизации атаки.
Копирование и скачивание
Кнопка копирования относится к полному исходнику, а скачивание — к файлу с расширением .lua. Это не установщик Roblox и не APK. Сохранённый файл сам по себе не устанавливает исполнителя и не запускает игру.
Перед действиями прочитайте подпись у кнопок: если первое нажатие открывает рекламу, для получения самого исходника платить на рекламном сайте не требуется. Не вводите там данные своего аккаунта Roblox.
Если меню не появилось
Проверьте, что открыта оригинальная JJS: исходник ограничен universe ID 3508322461. При другом опыте он должен прекратить работу. Ошибку исполнения нужно разбирать по сообщению и строке кода; смена расширения .lua на .txt или поиск «ключа OneRoblox» её не исправляет.
Запуск в чужом исполнителе может не поддерживать используемые объекты клиента. Мы не отмечаем файл рабочим на телефоне только потому, что кнопки меню допускают сенсорное нажатие.
Альтернатива для тренировки
Для освоения Black Flash и комбо сторонний код не нужен. В пользовательской комнате есть манекены и разрешённые команды владельца. Собственные наборы способностей создаются через Workshop и Skill Builder; это отдельная игровая система.
Изображение: Tze's Shenanigans, официальная карточка Roblox. Сведения сверены 26.09.2026; интерфейс и баланс могут меняться.