Bleach Hack - Lua
Bleach Hack - Lua
LPH_NO_VIRTUALIZE(function()
for i, v in getgc() do
if typeof(v) == "function" and islclosure(v) then
if (#getprotos(v) == 1) and table.find(getconstants(getproto(v, 1)),
4000001) then
hookfunction(v, function() end)
end
end
end
end)()
loadstring([[
function LPH_NO_VIRTUALIZE(f) return f end;
]])();
local moveToUsing = {}
LPH_NO_VIRTUALIZE(function()
if not getgenv().d and #({hookmetamethod, getnamecallmethod, getproto,
getconstants, hookfunction, getprotos}) == 6 and (string.match(getexecutorname(),
"Wave") or string.match(getexecutorname(), "Fluxus") or
string.match(getexecutorname():lower(), "macsploit")) then
local ReplicatedStorage = game:GetService("ReplicatedStorage")
task.wait()
for i, v in getgc() do
if typeof(v) == "function" and islclosure(v) then
if (#getprotos(v) == 1) and
table.find(getconstants(getproto(v, 1)), 4000001) then
hookfunction(v, function() end)
end
end
end
AC_BYPASS = true
end
end)() -- Yes this is skidded from n- n- n- ng
local ping = 0
local fps = 0
function getPing()
return statsService.PerformanceStats.Ping:GetValue()
end
function getServerPing()
return statsService.Network.ServerStatsItem['Data Ping']:GetValue()
end
function findClosestBall()
local lowestDistance = math.huge
local nearestBall = nil
return nearestBall
end
return nearestPart
end
task.spawn(function()
while true do
task.wait(0.1)
ping = ( getPing() + getServerPing() ) / 1000
end
end)
task.spawn(function()
runService.RenderStepped:Connect(function()
fps += 1
task.delay(1, function()
fps -= 1
end)
end)
end)
--// catching
local fakeBalls = {}
local pullVectoredBalls = {}
for i = 1,5,1 do
local percentage = i/5 + Random.new():NextNumber(0.01, 0.02)
part1.CFrame = fakeBall.CFrame + (direction * distance *
percentage)
end
end
end or firetouchinterest
local velocity = {}
local isCatching = false
arm.ChildAdded:Connect(function(child)
if not child:IsA("Weld") then return end
isCatching = true
task.wait(1.7)
isCatching = false
end)
end
workspace.ChildAdded:Connect(function(ball)
if ball.Name ~= "Football" then return end
if not ball:IsA("BasePart") then return end
task.wait()
if ball:FindFirstChildWhichIsA("Trail") then
ball:FindFirstChildWhichIsA("Trail").Enabled = false
end
end
fakeBall:Destroy()
end)
end
while ball.Parent do
task.wait(0.1)
lastCheck = os.clock()
lastPosition = ball.Position
end
end)
task.spawn(function()
while true do
task.wait(1/60)
local ball = findClosestBall(); if not ball then part.Parent = nil
continue end
local character = player.Character
-- local y1 = predictedPosition.Y
-- local y2 = catchPart.Position.Y
-- part.Position = predictedPosition
-- part.Parent = showMagHitbox.Value and workspace or nil
-- part.Color = Color3.fromRGB(255, 0, 0)
-- firetouchinterest(atchPart, ball, 0)
-- firetouchinterest(catchPart, ball, 1)
part.Position = predictedPosition
part.Size = Vector3.new(magnetsCustomRadius.Value,
magnetsCustomRadius.Value, magnetsCustomRadius.Value)
part.Parent = showMagHitbox.Value and workspace or nil
firetouchinterest(catchPart, ball, 0)
firetouchinterest(catchPart, ball, 1)
else
local distance = (catchPart.Position - ball.Position).Magnitude
local radius = ((magnetsType.Value == "Custom" and
magnetsCustomRadius.Value) or magnetsType.Value == "Blatant" and 50 or 6)
part.Position = (fakeBalls[ball] or ball).Position
part.Size = Vector3.new(radius, radius, radius)
part.Parent = showMagHitbox.Value and workspace or nil
part.Color = Color3.fromRGB(173, 173, 173)
task.spawn(function()
while true do
task.wait()
local ball = findClosestBall() if not ball then continue end
local character = player.Character
local humanoidRootPart = character and
character:FindFirstChild("HumanoidRootPart")
onCharacterCatching(player.Character)
player.CharacterAdded:Connect(onCharacterCatching)
--// physics
local boundaries = {}
if AC_BYPASS then
local CFrameSpeed = Physics:CreateModule("CFrameSpeed")
local CFrameSpeedValue = CFrameSpeed:CreateSlider({
Title = "Speed",
Range = {0, 10}
})
task.spawn(function()
while true do task.wait();
if not CFrameSpeed.Value then continue end
humanoidRootPart.CFrame += moveDirection *
(CFrameSpeedValue.Value / 58.5)
end
end)
end
task.spawn(function()
while true do
task.wait()
local possessor = findPossessor()
local character = player.Character
local hrp = character and
character:FindFirstChild("HumanoidRootPart")
if AC_BYPASS then
local blockExtender = Physics:CreateModule("BlockExtender")
local blockExtenderRange = blockExtender:CreateSlider({Title = "Range", Range
= {1, 20}})
local blockExtenderRangeTransparency = blockExtender:CreateSlider({Title =
"Transparency", Range = {0, 1}, Value = 1})
if v then
player.Character.Humanoid.PlatformStand = true
local bodyVelocity = Instance.new("BodyVelocity",
player.Character.HumanoidRootPart)
local camera = workspace.CurrentCamera
bodyVelocity.MaxForce = Vector3.new(math.huge, math.huge,
math.huge)
bodyVelocity.Velocity = Vector3.new(0, 0, 0)
local bodyGyro = Instance.new("BodyGyro",
player.Character.HumanoidRootPart)
bodyGyro.P = 15000
bodyGyro.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
while flying do
runService.Stepped:wait()
local speed = 11 + (flySpeed * 2.5)
local endPos = camera.CFrame.Position +
camera.CFrame.LookVector * 500
bodyGyro.CFrame =
CFrame.new(player.Character.HumanoidRootPart.Position, endPos)
local velocity = Vector3.new(0, 0, 0)
if not userInputService:GetFocusedTextBox() then
if userInputService:IsKeyDown(Enum.KeyCode.W) then
velocity += camera.CFrame.LookVector * speed
end
if userInputService:IsKeyDown(Enum.KeyCode.S) then
velocity += camera.CFrame.LookVector * -speed
end
if userInputService:IsKeyDown(Enum.KeyCode.A) then
velocity +=
player.Character.HumanoidRootPart.CFrame:vectorToWorldSpace(Vector3.new(-speed, 0,
0))
end
if userInputService:IsKeyDown(Enum.KeyCode.D) then
velocity +=
player.Character.HumanoidRootPart.CFrame:vectorToWorldSpace(Vector3.new(speed, 0,
0))
end
end
if player.Character.Humanoid.Health <= 0 then
flying = false
end
bodyVelocity.Velocity = velocity
end
player.Character.Humanoid.PlatformStand = false
bodyGyro:Destroy()
bodyVelocity:Destroy()
end
end)
task.spawn(function()
while true do
task.wait()
char.DescendantAdded:Connect(function(v)
task.wait()
if v.Name:match("FFmover") and antiBlock.Value then
v:Destroy()
end
end)
task.spawn(function()
while true do
task.wait()
if noJumpCooldown.Value then
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping,
true)
end
task.spawn(function()
local function applyChanges(character)
local head = character and character:FindFirstChild("Head")
local mesh = head and head:FindFirstChildWhichIsA("SpecialMesh")
while true do
task.wait()
workspace.ChildAdded:Connect(function(ball)
task.wait()
if ball.Name ~= "Football" then return end
if not ball:IsA("BasePart") then return end
task.spawn(function()
if not optimalJumpPredictions.Value then return end
local initalVelocity = ball.AssemblyLinearVelocity
local optimalPosition = Vector3.zero
local t = 0
while true do
t += 0.05
initalVelocity += Vector3.new(0, -28 * 0.05, 0)
currentPosition += initalVelocity * 0.05
local raycastParams = RaycastParams.new()
raycastParams.FilterDescendantsInstances =
{workspace:FindFirstChild("Models")}
raycastParams.FilterType = Enum.RaycastFilterType.Include
part:Destroy()
end)
task.spawn(function()
if not visualiseBallPath.Value then return end
local initalVelocity = ball.AssemblyLinearVelocity
local a0, a1 = Instance.new("Attachment"), Instance.new("Attachment")
a0.Parent = workspace.Terrain; a1.Parent = workspace.Terrain
local beam = Instance.new("Beam", workspace.Terrain)
beam.Attachment0 = a0
beam.Attachment1 = a1
beam.Segments = 500
beam.Width0 = 0.5
beam.Width1 = 0.5
beam.Transparency = NumberSequence.new(0)
beam.Color = ColorSequence.new(Color3.fromHex("#FF8EA5"))
beam.CurveSize0 = curve0
beam.CurveSize1 = curve1
a0.CFrame = a0.Parent.CFrame:inverse() * cf1
a1.CFrame = a1.Parent.CFrame:inverse() * cf2
beam:Destroy()
end)
end)
userInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if input.KeyCode ~= quickTPBind.Value then return end
mouse.Button1Down:Connect(function()
if not clickTackleAimbot.Value then return end
humanoidRootPart.CFrame = possessor.HumanoidRootPart.CFrame
end)
onCharacterPhysics(player.Character)
player.CharacterAdded:Connect(onCharacterPhysics)
--// throwing
local targets = {}
for index, player in pairs(players:GetPlayers()) do
if not opp then
if players.LocalPlayer.Team and (players.LocalPlayer.Team ~=
player.Team) then continue end
else
if players.LocalPlayer.Team and (players.LocalPlayer.Team ==
player.Team) then continue end
end
targets[#targets + 1] = player.Character
end
if IS_PRACTICE then
targets[#targets + 1] = workspace.npcwr.a['bot 1']
targets[#targets + 1] = workspace.npcwr.a['bot 2']
targets[#targets + 1] = workspace.npcwr.b['bot 3']
targets[#targets + 1] = workspace.npcwr.b['bot 4']
end
return target
end
task.spawn(function()
while true do
task.wait()
local ballGui = player.PlayerGui:FindFirstChild("BallGui")
local character = player.Character
beam.Parent = workspace.Terrain
beam.CurveSize0 = curve0
beam.CurveSize1 = curve1
task.spawn(function()
local target = nil
local power = 65
local direction = Vector3.new(0, 1, 0)
local angle = 45
local locked = false
local throwTypesSwitch = {
["Dive"] = "Mag",
["Mag"] = "Bullet",
["Bullet"] = "Jump",
["Jump"] = "Dime",
["Dime"] = "Dive"
}
local moveDirection = {}
local keys = {
R = function()
angle = math.clamp(angle + 5, 5, 85)
end,
F = function()
angle = math.clamp(angle - 5, 5, 85)
end,
Q = function()
locked = not locked
end,
Z = function()
throwType = throwTypesSwitch[throwType]
end,
}
local offsets = {
Dive = {
xLead = 3,
yLead = 4.5,
routes = {
["go"] = {
xzOffset = 0,
yOffset = 0
},
["post/corner"] = {
xzOffset = 0,
yOffset = 0
},
["slant"] = {
xzOffset = 0,
yOffset = 0
},
["in/out"] = {
xzOffset = -1,
yOffset = -2
},
["flat"] = {
xzOffset = 0,
yOffset = -2
},
["curl/comeback"] = {
xzOffset = 4,
yOffset = 0
},
["stationary"] = {
xzOffset = 0,
yOffset = 0
}
}
},
Mag = {
xLead = 3,
yLead = 6,
routes = {
["go"] = {
xzOffset = 0,
yOffset = 0
},
["post/corner"] = {
xzOffset = 0,
yOffset = 0
},
["slant"] = {
xzOffset = 0,
yOffset = 0
},
["in/out"] = {
xzOffset = -1,
yOffset = -2
},
["flat"] = {
xzOffset = 0,
yOffset = -2
},
["curl/comeback"] = {
xzOffset = 6,
yOffset = 0
},
["stationary"] = {
xzOffset = 0,
yOffset = 0
}
}
},
Jump = {
xLead = 2,
yLead = 3,
routes = {
["go"] = {
xzOffset = 0,
yOffset = -1.5
},
["post/corner"] = {
xzOffset = 0,
yOffset = 0
},
["slant"] = {
xzOffset = 0,
yOffset = 0
},
["in/out"] = {
xzOffset = -1,
yOffset = 3
},
["flat"] = {
xzOffset = 0,
yOffset = 3
},
["curl/comeback"] = {
xzOffset = 2,
yOffset = 4
},
["stationary"] = {
xzOffset = 0,
yOffset = 7.5
}
}
},
Dime = {
xLead = 2,
routes = {
["go"] = {
xzOffset = 0,
yOffset = 0
},
["post/corner"] = {
xzOffset = 0,
yOffset = 0
},
["slant"] = {
xzOffset = 0,
yOffset = 0
},
["in/out"] = {
xzOffset = -1,
yOffset = -1
},
["flat"] = {
xzOffset = 0,
yOffset = -1
},
["curl/comeback"] = {
xzOffset = 2,
yOffset = 0
},
["stationary"] = {
xzOffset = 0,
yOffset = 0
}
}
},
}
--// hooking
if football then
if not remoteEvents[football] then
remoteEvents[football] =
football.Handle:FindFirstChildWhichIsA("RemoteEvent")
end
local coreScript =
football.Handle:FindFirstChildWhichIsA("LocalScript")
coreScript.Enabled = false
if QBAimbot.Value then
local fakeRemoteEvent = Instance.new("BoolValue")
fakeRemoteEvent.Name = "RemoteEvent"
fakeRemoteEvent.Parent = football.Handle
remoteEvents[football].Parent = replicatedStorage
else
if
football.Handle:FindFirstChildWhichIsA("BoolValue") then
football.Handle:FindFirstChildWhichIsA("BoolValue"):Destroy()
end
remoteEvents[football].Parent = football.Handle
end
coreScript.Enabled = true
end
end
onCharacter(player.Character)
player.CharacterAdded:Connect(onCharacter)
scriptContext.Error:Connect(function(message, stackTrace)
if not string.match(message, "Football") then return end
if string.match(message, "ContextActionService") or
string.match(stackTrace, "function ho") then
handoffToggle = not handoffToggle
nwArgs = {"x "..(handoffToggle and "down" or "up")}
end
firedRemoteEvent = true
remoteEvent:FireServer(unpack(nwArgs))
end)
task.spawn(function()
while true do
task.wait()
if lastQBAimbotValue ~= QBAimbot.Value then
onToggle()
end
lastQBAimbotValue = QBAimbot.Value
end
end)
else
local __namecall; __namecall = hookmetamethod(game, "__namecall",
newcclosure(function(self, ...)
local args = {...}
local method = getnamecallmethod()
userInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if not keys[input.KeyCode.Name] then return end
keys[input.KeyCode.Name]()
end)
userInputService.InputBegan:Connect(function(input, gp)
if gp then return end
--// functions
local discriminant = b * b - 4 * a * c
if discriminant < 0 then
return nil
end
return velocity, t
end
blacklist[target.Name] = true
if player.Team then
for index, player in pairs(player.Team:GetPlayers()) do
blacklist[player.Name] = true
end
end
local targets = {}
if IS_PRACTICE then
targets[#targets + 1] = workspace.npcwr.a['bot 1']
targets[#targets + 1] = workspace.npcwr.a['bot 2']
targets[#targets + 1] = workspace.npcwr.b['bot 3']
targets[#targets + 1] = workspace.npcwr.b['bot 4']
end
return interceptable
end
local requirements = {
["go"] = function()
return not isDiagonal() and not towardsQB()
end,
["post/corner"] = function()
return isDiagonal() and not towardsQB() and distance > 125
end,
["slant"] = function()
return isDiagonal() and not towardsQB() and distance <= 125
end,
["in/out"] = function()
return isSideways() and distance > 125
end,
["flat"] = function()
return isSideways() and distance <= 125
end,
["curl/comeback"] = function()
return towardsQB()
end,
["stationary"] = function()
return moveDirection.Magnitude <= 0
end,
}
local autoAngleFunc = {
["go"] = function()
return distance > 150 and math.max(IN_AIR and (16 +
math.max(distance - 100, 0) / 5) or (14 + math.max(distance - 100, 0) / 5), 25)
or (IN_AIR and 16.5 + math.max(distance, 0) * (12.5 /
150) or 14 + math.max(distance, 0) * (12.5 / 150))
end,
["in/out"] = function()
return 10 + math.max((distance - 100), 0) / 10
end,
["flat"] = function()
return 10 + math.max((distance - 100), 0) / 10
end,
["curl/comeback"] = function()
return 7.5 + math.max((distance - 100), 0) / 20
end,
["stationary"] = function()
return 13.5 + math.max((distance - 100), 0) / 20
end,
}
return "Mag"
elseif within(sidewayRoutes, route) then
if dbDistance > 4 then
return "Dime"
end
return "Jump"
end
return "Dime"
end
ballGui['Frame0'].Disp.Text = power
end
--// tracking
task.spawn(function()
local moveDirectionData = {}
if (newMoveDirection -
moveDirectionData[character].Direction).Magnitude > 0.2 then
moveDirectionData[character] = {
Direction = humanoid.MoveDirection,
Started = os.clock()
}
else
if (os.clock() -
moveDirectionData[character].Started) > 0.5 then
moveDirection[character] =
humanoid.MoveDirection
moveDirectionData[character] = {
Direction = humanoid.MoveDirection,
Started = os.clock()
}
end
end
end
end
end)
--// main
if QBAimbotAutoThrowType.Value then
throwType = determineAutoThrowType(route)
end
xLead += offsets[throwType].routes[route].xzOffset or 0
yLead += offsets[throwType].routes[route].yOffset or 0
xLead += QBAimbotXOffset.Value
yLead += QBAimbotYOffset.Value
if not s then
return
end
local isInterceptable = checkIfInterceptable(position, airtime)
part.Position =
getPosInXTimeFromVel(player.Character.Head.Position + direction * 5, power *
direction, Vector3.new(0, -28, 0), airtime)
highlight.Parent = target
highlight.Adornee = target
if QBAimbotAdjustPowerGUI.Value then
changePowerGui(findClosestMultiple(5, power))
end
end);
--// visuals
if not v then
for index, part in pairs(workspace:GetDescendants()) do
if not part:IsA("BasePart") then continue end
part:SetAttribute("originalMaterial", part.Material.Name)
part.Material = Enum.Material.SmoothPlastic
end
childAddedEvent = workspace.DescendantAdded:Connect(function(part)
if not part:IsA("BasePart") then return end
part:SetAttribute("originalMaterial", part.Material.Name)
part.Material = Enum.Material.SmoothPlastic
end)
else
for index, part in pairs(workspace:GetDescendants()) do
if not part:IsA("BasePart") then continue end
if not part:GetAttribute("originalMaterial") then continue end
part.Material =
Enum.Material[part:GetAttribute("originalMaterial")]
end
end
end
task.spawn(function()
local coreGui = game:GetService("CoreGui")
while true do
task.wait()
coreGui.Bleachhack.ModulesList.Visible = not SilentMode.Value
coreGui.Bleachhack.Server.Visible = not SilentMode.Value
end
end)
--// automatics
character.HumanoidRootPart.AssemblyLinearVelocity += Vector3.new(0,
autoBoostPower.Value, 0)
end
leftLeg.Touched:Connect(onTouch)
rightLeg.Touched:Connect(onTouch)
end
finishLine:GetPropertyChangedSignal("CFrame"):Connect(function()
if autoCaptain.Value and not isCatching and finishLine.Position.Y > 0 then
for i = 1,7,1 do
task.wait(0.2)
player.Character.HumanoidRootPart.CFrame = finishLine.CFrame +
Vector3.new(0, 2, 0)
end
end
end)
player.PlayerGui.ChildAdded:Connect(function(child)
if child.Name == "KickerGui" and autoKicker.Value then
local cursor = child:FindFirstChild("Cursor", true)
if autoKickerRandom.Value then
autoKickerPower.Value = Random.new():NextNumber(75, 100)
autoKickerAccuracy.Value = Random.new():NextNumber(75, 100)
autoKickerPower.Update()
autoKickerAccuracy.Update()
end
task.spawn(function()
local guardLocked = false
local target = nil
userInputService.InputBegan:Connect(function(input, gp)
if gp then return end
while true do
task.wait()
guardUI.Enabled = autoGuard.Value
guardHighlight.Enabled = autoGuard.Value
guardHighlight.Adornee = target
guardUI.Info.Text = "Guarding: "..target.Name.." - Locked:
"..tostring(guardLocked)
moveToUsing[#moveToUsing + 1] = os.clock()
humanoid:MoveTo(predictedPosition)
end
end)
task.spawn(function()
while true do
task.wait()
task.spawn(function()
local lastTeleported = os.clock()
while true do
task.wait()
if not autoQB.Value then continue end
if values.Status.Value ~= "PrePlay" then continue end
if values.PlayType.Value ~= "normal" then continue end
if values.PossessionTag.Value ~= player.Team.Name then continue end
task.spawn(function()
local log = {}
while true do
task.wait(1/30)
local possessor = findPossessor()
local character = player.Character
local humanoid = character and character:FindFirstChild("Humanoid")
local humanoidRootPart = character and
character:FindFirstChild("HumanoidRootPart")
log[#log + 1] = possessor.HumanoidRootPart.Position
onCharacterAutomatics(player.Character or player.CharacterAdded:Wait())
player.CharacterAdded:Connect(onCharacterAutomatics)
--// player
task.spawn(function()
while AC_BYPASS and humanoid.Parent do
task.wait(.1)
humanoid.JumpPower = jumpPower.Value and jumpPowerValue.Value or
50
end
end)
humanoid.Jumping:Connect(function()
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then return
end
if AC_BYPASS then return end
task.wait(0.05)
if jumpPower.Value then
humanoidRootPart.AssemblyLinearVelocity += Vector3.new(0,
jumpPowerValue.Value - 50, 0)
end
end)
end
onCharacterMovement(player.Character or player.CharacterAdded:Wait())
player.CharacterAdded:Connect(onCharacterMovement)
task.spawn(function()
while true do
task.wait()
if not replicationLag.Value then
settings():GetService("NetworkSettings").IncomingReplicationLag = 0 continue end
settings():GetService("NetworkSettings").IncomingReplicationLag =
replicationLagValue.Value / 100
end
end)
task.spawn(function()
local angleTick = os.clock()
local oldLookVector = Vector3.new(0, 0, 0)
humanoid.Jumping:Connect(function()
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
return end
if os.clock() - angleTick > 0.2 then return end
if not angleEnhancer.Value then return end
if angleEnhancerIndicator.Value then
local h = Instance.new("Hint")
h.Text = "Angled"
h.Parent = workspace
debris:AddItem(h, 1)
end
hookCharacter(player.Character or player.CharacterAdded:Wait())
player.CharacterAdded:Connect(hookCharacter)
userInputService:GetPropertyChangedSignal("MouseBehavior"):Connect(function()
if userInputService.MouseBehavior == Enum.MouseBehavior.LockCenter then
shiftLockEnabled = true
else
shiftLockEnabled = false
end
end)
while true do
task.wait()
local character = player.Character; if not character then continue end
local hrp = character:FindFirstChild("HumanoidRootPart"); if not hrp
then continue end
local humanoid = character:FindFirstChild("Humanoid"); if not humanoid
then continue end
if AC_BYPASS then
if (os.clock() - angleTick < 0.2) and angleEnhancer.Value then
humanoid.JumpPower = (jumpPower.Value and
jumpPowerValue.Value or 50) + (angleEnhancerJP.Value - 50)
elseif not angleEnhancer.Value then
humanoid.JumpPower = (jumpPower.Value and
jumpPowerValue.Value or 50)
end
end
oldLookVector = hrp.CFrame.LookVector
lastEnabled = shiftLockEnabled
end
end)
runService:BindToRenderStep("walkSpeed", Enum.RenderPriority.Character.Value,
function()
local character = player.Character
local humanoid = character and character:FindFirstChild("Humanoid")
--task.spawn(function()
-- local sayMessageRequest =
replicatedStorage:FindFirstChild("SayMessageRequest", true)
-- local messagesSeen = {}
-- local lastIndex = 0
-- local waitingForJobID = false
-- local commands = {
-- ["/online"] = function(args)
-- local online = httpService:JSONDecode(request({
-- Url = IP.."/get-online",
-- Method = "POST"
-- }).Body)
-- local str = "There are "..#online.." players online right now: "
-- function receive()
-- local response = nil
-- task.spawn(function()
-- response = request({
-- Url = IP.."/message",
-- Method = "GET",
-- }).Body
-- end)
-- writefile("bleachhackresponse.json", response)
-- return response
-- end
-- function heartbeat()
-- request({
-- Url = IP.."/heartbeat",
-- Method = "POST",
-- Body = httpService:JSONEncode({
-- User = player.Name,
-- }),
-- Headers = {
-- ["Content-Type"] = "application/json"
-- }
-- })
-- end
-- function createMessage(text)
-- starterGui:SetCore("ChatMakeSystemMessage", {
-- Text = text,
-- Font = Enum.Font.SourceSans;
-- Color = Color3.fromRGB(0, 166, 255),
-- FontSize = Enum.FontSize.Size24;
-- })
-- end
-- player.Chatted:Connect(function(msg)
-- local command = string.split(msg, " ")[1]
-- local isCommand = commands[command]
-- if not isCommand then return end
-- sayMessageRequest.Parent = nil
-- commands[command](unpack(string.split(string.sub(msg, #command + 2,
#msg), " ")))
-- task.wait()
-- sayMessageRequest.Parent =
replicatedStorage:FindFirstChild("DefaultChatSystemChatEvents")
-- end)
-- task.spawn(function()
-- while true do
-- repeat task.wait() until RTC.Value
-- print("[RTC] Sending heartbeat...")
-- heartbeat()
-- print('[RTC] Successfully heartbeat!')
-- task.wait(5)
-- end
-- end)
-- task.spawn(function()
-- repeat task.wait() until RTC.Value
-- createMessage("Successfully connected to Bleachhack RTC.")
-- createMessage("/help to see commands!")
-- createMessage("THIS IS STILL EXPERIMENTAL, EXPECT BUGS")
-- end)
-- while true do
-- task.wait()
-- if not RTC.Value then continue end
-- local logs = httpService:JSONDecode(receive() or "[]")
-- if not RTC.Value then continue end
-- if lastIndex == 0 then
-- lastIndex = #logs
-- continue
-- end
-- print(logs)
-- lastIndex = #logs
-- end
--end)
--// configs
configSavingUI.Enabled = false
writefile("bleachhack/"..configName..".json", exported)
end)
configSavingUI.Enabled = false
UI:Import(contents)
end)