BobloScript.com

BobloScript Review

Partially working during our test

Tested by bebra · BobloScript editorial team · Nov 2, 2026

Test setup: PC and Android · Potassium (PC), Delta (Android)

Test coverage

All 16 listed features checked · See marks in Functions

Issues found

  • Sets the ESP visual style to highlight — Switching the style between Highlight, Box and Both often did not apply on the first change; the outlines kept the previous style until the entry was reselected or switched off and on again.

Test notes

Tested on PC with Potassium and on Android with Delta. Auto-grab collected items within prompt range, the Locust and exit highlights drew through walls, and darkness and fog removal both applied and restored the original lighting when switched off. CFrame speed held where a plain speed value would have been reset, jump power and infinite jump both worked, and cart and model removals took effect on the client. The one recurring problem was the ESP style selector, which frequently needed a second attempt before the new style appeared.

Known limitations

The ESP style selector does not always take effect on the first change. If the outlines keep the old style, reselect the option or toggle the ESP entries off and on. The Locust and exit highlights themselves worked.

This reflects one test at a specific point in time, not an ongoing guarantee. How we test scripts

Description

The menu splits into a visual layer and a mechanical one. The visual side changes what you can see in a dark supermarket — the entity, the exit, the light and the fog — while the mechanical side changes what your character can do. They are set independently, so a run can use the ESP and lighting alone without touching movement.

ESP for the entity and the exit

Two separate toggles handle the Locust and the green exit zone, each with its own colour picker, so the two cannot be confused at a glance. The style selector decides how both are drawn: Highlight fills the model, Box outlines it, and Both draws the fill with an outline around it. Outlines are redrawn on a short interval rather than once, which is why a target that spawns or moves keeps its outline.

One caveat on the style selector: changing it does not always take effect on the first try, and the outlines can keep the previous style until the toggle is switched off and on again. If a style change appears to do nothing, reselect it before assuming the ESP itself is broken — the Locust and exit toggles themselves have been reliable.

Lighting and fog

Removing darkness raises ambient light and turns off global shadows, which is what makes aisles readable without a light source. Removing fog is the heavier option: it pushes fog distance out and detaches the atmosphere and post-processing objects from the scene, so the map loses depth as well as haze. Both entries store the original values before changing anything and put them back when switched off, so a run can be returned to the intended look without rejoining.

Grabbing and movement

Auto-grab fires any proximity prompt within its own activation distance, so it picks up items as you walk past them rather than teleporting you to each one. Speed is changed by moving the character through CFrame instead of setting walk speed, which is what lets it hold where a plain speed value would be reset; the slider sets the multiplier and the default sits close to normal walking. Jump is unlocked the same way, with a separate power slider and an infinite-jump toggle for repeated mid-air jumps.

Clearing obstacles

The cart buttons remove shopping carts, then their wheels and legs, and a third removes your own character's legs. These act on your client only, so they change what you see and collide with rather than what other players see. Deleting the Locust model works the same way: it removes the entity from your view for the rest of the session, and a respawn or rejoin brings it back.

Inventory and server

The inventory entry re-enables the backpack and any inventory or hotbar interface that the game hid, and it runs again automatically after a respawn. Rejoin and server hop are there for the cases where a session has gone bad and a fresh one is faster than fixing it.

Order worth following

  1. Pick the ESP style before enabling the entity and exit toggles, and confirm the outlines look the way you wanted.

  2. Set colours for the two highlights so they stay distinct.

  3. Remove darkness first and fog second — fog removal is the one that changes the look most.

  4. Turn on auto-grab and the movement settings last, once you know the aisles you are heading for.

Tested on PC with Potassium and on Android with Delta.

  • Automatically grabs nearby items
  • Deletes shopping carts from the game
  • Deletes the wheels and legs from shopping carts
  • Removes the player character's legs
  • Sets the ESP visual style to highlight
  • Highlights the Locust entity through walls
  • Highlights the green exit zone through walls
  • Removes darkness and shadows from the environment
  • Completely removes fog from the environment
  • Restores or unlocks all inventory items
  • Removes the visual model of the Locust entity
  • Unlocks restricted jump mechanics
  • Adjusts the player's jump height power
  • Allows the player to jump infinitely in mid-air
  • Bypasses anti-cheat to modify speed via CFrame
  • Adjusts the character's movement speed multiplier

Developer tested with

Windows

  • Isaeva
  • Lynx
  • Madium
  • Potassium
  • Real
  • Sirhurt
  • Synapse Z
  • Velocity
  • Volt
  • Wave
  • Lucid
  • Volcano

Android

  • Delta
  • Vega X

iOS

  • Delta

macOS

  • Macsploit
  • Opiumware

Doesn't work

Windows

  • Solara
  • Xeno

Screenshots

3 images

Script Code

Raw Code

This script loads code from an external source. Review the URL and understand what it does before running it in Roblox.

https://raw.githubusercontent.com/deividcomsono/Obsidian/main/

--[[	Baltika Hub | [AOTL]	Game: Aisles Of The Locust [AOTL]	UI Library: Obsidian UI]]local repo = "https://raw.githubusercontent.com/deividcomsono/Obsidian/main/"local Library = loadstring(game:HttpGet(repo .. "Library.lua"))()local ThemeManager, SaveManagerpcall(function()	ThemeManager = loadstring(game:HttpGet(repo .. "addons/ThemeManager.lua"))()	SaveManager = loadstring(game:HttpGet(repo .. "addons/SaveManager.lua"))()end)local Options = Library.Optionslocal Toggles = Library.Toggleslocal Window = Library:CreateWindow({	Title = "Baltika Hub | [AOTL]",	Footer = "Baltika Hub | [AOTL] Edition",	Icon = "rbxassetid://4384403532",	NotifySide = "Right",	ShowCustomCursor = false,	EnableCompacting = true,	SidebarCompacted = true})local Tabs = {	Visual = Window:AddTab("Visuals", "eye"),	Player = Window:AddTab("Player", "person-standing"),	Server = Window:AddTab("Server & Map", "atom"),	UISettings = Window:AddTab("UI Settings", "cog")}local Players = game:GetService("Players")local RunService = game:GetService("RunService")local Workspace = game:GetService("Workspace")local Lighting = game:GetService("Lighting")local TeleportService = game:GetService("TeleportService")local UserInputService = game:GetService("UserInputService")local StarterGui = game:GetService("StarterGui")local LocalPlayer = Players.LocalPlayer----------------------------------------------------------- 1. VISUALS (ИСПРАВЛЕННАЯ СМЕНА СТИЛЯ И ВОЗВРАТ ОСВЕЩЕНИЯ)---------------------------------------------------------local VisGroup = Tabs.Visual:AddLeftGroupbox("ESP Controls")local ESP_Storage = {}local function ClearESP()	for _, v in pairs(ESP_Storage) do		if v and v.Parent then v:Destroy() end	end	table.clear(ESP_Storage)endVisGroup:AddDropdown("ESPStyle", {	Values = { "Highlight", "Box", "Both" },	Default = 1,	Multi = false,	Text = "ESP Style Mode",	Callback = function()		ClearESP() -- Очистка элементов при смене стиля	end})VisGroup:AddToggle("MonsterESP", { Text = "The Locust ESP (Through Walls)", Default = false }):AddColorPicker("MonsterColor", { Default = Color3.fromRGB(255, 30, 30) })VisGroup:AddToggle("ExitESP", { Text = "Green Exit Zone ESP (Through Walls)", Default = false }):AddColorPicker("ExitColor", { Default = Color3.fromRGB(0, 255, 120) })local VisLightGroup = Tabs.Visual:AddRightGroupbox("Lighting & Fog Removal")-- Сохранение оригинального освещения картыlocal OriginalLighting = {	Ambient = Lighting.Ambient,	OutdoorAmbient = Lighting.OutdoorAmbient,	Brightness = Lighting.Brightness,	GlobalShadows = Lighting.GlobalShadows}VisLightGroup:AddToggle("Fullbright", {	Text = "Remove Darkness & Shadows",	Default = false,	Callback = function(Value)		if Value then			OriginalLighting.Ambient = Lighting.Ambient			OriginalLighting.OutdoorAmbient = Lighting.OutdoorAmbient			OriginalLighting.Brightness = Lighting.Brightness			OriginalLighting.GlobalShadows = Lighting.GlobalShadows			Lighting.Ambient = Color3.fromRGB(255, 255, 255)			Lighting.OutdoorAmbient = Color3.fromRGB(255, 255, 255)			Lighting.Brightness = 2			Lighting.GlobalShadows = false		else			-- Возврат оригинальной темноты			Lighting.Ambient = OriginalLighting.Ambient			Lighting.OutdoorAmbient = OriginalLighting.OutdoorAmbient			Lighting.Brightness = OriginalLighting.Brightness			Lighting.GlobalShadows = OriginalLighting.GlobalShadows		end	end})local SavedAtmospheres = {}VisLightGroup:AddToggle("NoFog", {	Text = "Remove Fog (Complete Clean)",	Default = false,	Callback = function(Value)		if Value then			Lighting.FogEnd = 1e6			Lighting.FogStart = 0			for _, obj in pairs(Lighting:GetChildren()) do				if obj:IsA("Atmosphere") or obj:IsA("DepthOfFieldEffect") or obj:IsA("PostEffect") then					table.insert(SavedAtmospheres, {Obj = obj, Parent = obj.Parent})					obj.Parent = nil				end			end			for _, obj in pairs(Workspace:GetChildren()) do				if obj:IsA("Atmosphere") or obj:IsA("DepthOfFieldEffect") then					table.insert(SavedAtmospheres, {Obj = obj, Parent = obj.Parent})					obj.Parent = nil				end			end		else			Lighting.FogEnd = 1000			Lighting.FogStart = 0			for _, item in pairs(SavedAtmospheres) do				if item.Obj and item.Parent then					item.Obj.Parent = item.Parent				end			end			table.clear(SavedAtmospheres)		end	end})-- Стабильный цикл отрисовки ESPtask.spawn(function()	while task.wait(0.3) do		ClearESP()		local char = LocalPlayer.Character		local mode = Options.ESPStyle and Options.ESPStyle.Value or "Highlight"		-- Подсветка "The Locust" сквозь стены		if Toggles.MonsterESP and Toggles.MonsterESP.Value then			for _, obj in pairs(Workspace:GetDescendants()) do				if obj:IsA("Model") and obj ~= char then					local isLocustName = obj.Name == "The Locust" or obj.Name:lower():find("locust") or obj.Name:lower():find("bug")					local hasLocustFolder = obj:FindFirstChild("LocustAnimations") ~= nil					local isNotPlayer = not Players:GetPlayerFromCharacter(obj)					if (isLocustName or hasLocustFolder) and isNotPlayer then						if mode == "Highlight" or mode == "Both" then							local hl = Instance.new("Highlight")							hl.FillColor = Options.MonsterColor.Value							hl.OutlineColor = Color3.fromRGB(255, 255, 255)							hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop							hl.Adornee = obj							hl.Parent = obj							table.insert(ESP_Storage, hl)						end						if mode == "Box" or mode == "Both" then							local box = Instance.new("SelectionBox")							box.Color3 = Options.MonsterColor.Value							box.LineThickness = 0.05							box.AlwaysOnTop = true							box.Adornee = obj							box.Parent = obj							table.insert(ESP_Storage, box)						end					end				end			end		end		-- Зелёная зона выхода сквозь стены		if Toggles.ExitESP and Toggles.ExitESP.Value then			for _, obj in pairs(Workspace:GetDescendants()) do				if obj.Name:lower():find("exit") or obj.Name:lower():find("spawn") or obj.Name:lower():find("escape") or obj:IsA("SpawnLocation") then					if mode == "Box" then						local box = Instance.new("SelectionBox")						box.Color3 = Options.ExitColor.Value						box.AlwaysOnTop = true						box.Adornee = obj						box.Parent = obj						table.insert(ESP_Storage, box)					else						local hl = Instance.new("Highlight")						hl.FillColor = Options.ExitColor.Value						hl.OutlineColor = Color3.fromRGB(255, 255, 255)						hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop						hl.Adornee = obj						hl.Parent = obj						table.insert(ESP_Storage, hl)					end				end			end		end	endend)----------------------------------------------------------- 2. PLAYER (INVENTORY, JUMP & SPEED)---------------------------------------------------------local InvGroup = Tabs.Player:AddLeftGroupbox("Inventory Controls")InvGroup:AddButton({	Text = "Restore / Unlock Inventory",	Func = function()		pcall(function() StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, true) end)		local pgui = LocalPlayer:FindFirstChildOfClass("PlayerGui")		if pgui then			for _, v in pairs(pgui:GetDescendants()) do				if v.Name:lower():find("inventory") or v.Name:lower():find("hotbar") or v.Name:lower():find("item") then					if v:IsA("Frame") or v:IsA("TextButton") then						v.Visible = true					elseif v:IsA("ScreenGui") then						v.Enabled = true					end				end			end		end	end})local PlayerLocustGroup = Tabs.Player:AddLeftGroupbox("Locust Management")PlayerLocustGroup:AddButton({	Text = "Delete Locust Model",	Func = function()		for _, obj in pairs(Workspace:GetDescendants()) do			if obj.Name == "The Locust" or obj.Name:lower():find("locust") then				obj:Destroy()			end		end	end})local JumpGroup = Tabs.Player:AddLeftGroupbox("Jump Mechanics Fixer")JumpGroup:AddToggle("UnlockJump", { Text = "Bypass & Unlock Jump Mechanics", Default = false })JumpGroup:AddSlider("JumpPowerVal", { Text = "Jump Height Power", Default = 50, Min = 30, Max = 150, Rounding = 0 })JumpGroup:AddToggle("InfJump", { Text = "Infinite Jump", Default = false })local MoveGroup = Tabs.Player:AddRightGroupbox("Movement & Speed")MoveGroup:AddToggle("BypassSpeed", { Text = "Bypass Speed (CFrame)", Default = false })MoveGroup:AddSlider("SpeedVal", { Text = "Speed Multiplier", Default = 22, Min = 16, Max = 70, Rounding = 0 })-- Разблокировка прыжкаtask.spawn(function()	while task.wait(0.1) do		if LocalPlayer.Character then			local hum = LocalPlayer.Character:FindFirstChildOfClass("Humanoid")			if hum and Toggles.UnlockJump and Toggles.UnlockJump.Value then				hum.UseJumpPower = true				hum.JumpPower = Options.JumpPowerVal.Value				hum:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)			end			if Toggles.UnlockJump and Toggles.UnlockJump.Value then				local pgui = LocalPlayer:FindFirstChildOfClass("PlayerGui")				if pgui then					local touchGui = pgui:FindFirstChild("TouchGui")					if touchGui then						local jumpBtn = touchGui:FindFirstChild("JumpButton", true)						if jumpBtn then jumpBtn.Visible = true end					end				end			end		end	endend)UserInputService.JumpRequest:Connect(function()	if LocalPlayer.Character then		local hum = LocalPlayer.Character:FindFirstChildOfClass("Humanoid")		if hum then			if (Toggles.UnlockJump and Toggles.UnlockJump.Value) or (Toggles.InfJump and Toggles.InfJump.Value) then				hum:ChangeState(Enum.HumanoidStateType.Jumping)			end		end	endend)-- Обход скоростиRunService.Heartbeat:Connect(function(dt)	if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then		local hrp = LocalPlayer.Character.HumanoidRootPart		local hum = LocalPlayer.Character:FindFirstChildOfClass("Humanoid")		if Toggles.BypassSpeed and Toggles.BypassSpeed.Value then			if hum and hum.MoveDirection.Magnitude > 0 then				hrp.AssemblyLinearVelocity = Vector3.zero				hrp.CFrame = hrp.CFrame + (hum.MoveDirection * (Options.SpeedVal.Value / 10) * dt * 10)			end		end	endend)----------------------------------------------------------- 3. SERVER & MAP (AUTO-GRAB, CARTS & LEGS REMOVAL)---------------------------------------------------------local AutoGroup = Tabs.Server:AddLeftGroupbox("Automation")AutoGroup:AddToggle("NearAutoGrab", { Text = "Auto-Grab Nearby Items", Default = false })task.spawn(function()	while task.wait(0.25) do		if Toggles.NearAutoGrab and Toggles.NearAutoGrab.Value and LocalPlayer.Character then			local hrp = LocalPlayer.Character:FindFirstChild("HumanoidRootPart")			if hrp then				for _, prompt in pairs(Workspace:GetDescendants()) do					if prompt:IsA("ProximityPrompt") then						local part = prompt.Parent:IsA("BasePart") and prompt.Parent or prompt.Parent:FindFirstChildWhichIsA("BasePart")						if part and (part.Position - hrp.Position).Magnitude <= prompt.MaxActivationDistance then							fireproximityprompt(prompt)						end					end				end			end		end	endend)local CartCleanGroup = Tabs.Server:AddRightGroupbox("Shopping Cart Clean")CartCleanGroup:AddButton({	Text = "Delete Shopping Carts",	Func = function()		for _, obj in pairs(Workspace:GetDescendants()) do			if obj.Name:lower():find("cart") or obj.Name:lower():find("trolley") then				obj:Destroy()			end		end	end})CartCleanGroup:AddButton({	Text = "Delete Cart Wheels / Legs",	Func = function()		for _, obj in pairs(Workspace:GetDescendants()) do			if obj.Name:lower():find("wheel") or obj.Name:lower():find("leg") then				if obj.Parent and (obj.Parent.Name:lower():find("cart") or obj.Parent.Name:lower():find("trolley")) then					obj:Destroy()				end			end		end	end})CartCleanGroup:AddButton({	Text = "Delete Player Legs",	Func = function()		if LocalPlayer.Character then			for _, p in pairs(LocalPlayer.Character:GetChildren()) do				if p:IsA("BasePart") and (p.Name:find("Leg") or p.Name:find("Foot")) then					p:Destroy()				end			end		end	end})----------------------------------------------------------- 4. UI SETTINGS & REJOIN---------------------------------------------------------local ServerControl = Tabs.UISettings:AddLeftGroupbox("Server Options")ServerControl:AddButton({	Text = "Rejoin Server",	Func = function()		TeleportService:TeleportToPlaceInstance(game.PlaceId, game.JobId, LocalPlayer)	end})ServerControl:AddButton({	Text = "Server Hop (New Server)",	Func = function()		TeleportService:Teleport(game.PlaceId, LocalPlayer)	end})-- Восстановление после смертиLocalPlayer.CharacterAdded:Connect(function(char)	char:WaitForChild("HumanoidRootPart")	task.wait(1)	pcall(function() StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, true) end)end)if ThemeManager and SaveManager then	ThemeManager:SetLibrary(Library)	SaveManager:SetLibrary(Library)	SaveManager:IgnoreThemeSettings()	SaveManager:SetIgnoreIndexes({ "MenuKeybind" })	ThemeManager:SetFolder("BaltikaProject")	SaveManager:SetFolder("BaltikaProject/AOTL")	SaveManager:BuildConfigSection(Tabs.UISettings)	ThemeManager:ApplyToTab(Tabs.UISettings)endLibrary.ToggleKeybind = Options.MenuKeybindLibrary:SelectTab(1)
Latest changeScript published6h ago

Comments

Loading comments…