I dont care enough to fork it and I didnt test any of it 🤑
local startgetTime = os.clock()
assert(identifyexecutor, "Executor name not found!")
assert(executorName, "Executor not found!")
assert(getidentity, "Missing getidentity function!")
assert(rconsoleprint, "Missing rconsoleprint!")
local executorName = identifyexecutor() :: string
assert(not executorName:find("Wave") or getidentity() <= 6, "Utility has been blocked for Wave and Level 6 and under executors.")
local getgenv = getgenv or shared or _G --I've seen some things not even have shared
local function dbgprint(...)
rconsoleprint("(Utility) [PRINT]: ".. ...)
end
local function dbgwarn(...)
rconsoleprint("(Utility) [WARNING]: ".. ...)
end
-- You could localize the env/getgenv() but im not going to because im lazyyyy
local printEnabled = true
local supportedRobloxVersion = "0.636.1.6360627"
local CurrentVersion = version() :: string
local Players = game:GetService("Players") :: Players
local LocalPlayer = Players.LocalPlayer :: Player
local CoreGui = (gethui and gethui() or game:GetService("CoreGui") or Players.LocalPlayer:WaitForChild("PlayerGui")) :: BasePlayerGui -- this typing isnt technically true if gethui exists
local Character : Model? = LocalPlayer.Character
local Humanoid : Humanoid? = Character and Character:FindFirstChildWhichIsA("Humanoid")
LocalPlayer.CharacterAdded:Connect(function(char : Model) : ()
Character = char
Humanoid = char:WaitForChild("Humanoid", 5)
end)
do -- Print Utility Information
local Contributors = {
"Trax (traxxy123)",
"RazAPIx64.dll (razzoni)",
"xyzkade (xyzkade)",
"Sashaa169 (centerepic)"
}
local UtilityVersion = "v3.0.0"
local changeLog = {
["v3.0.0"] = {
},
["v2.2.0"] = {
"Cleaned up and refactored code.",
"Increased integrity of utility, should be less error prone now."
},
["v2.1.1"] = {
"Optimizations and more stuff by xyzkade!",
"Character functions! (swim, speed, jump, sit)",
"UNC test! (unc)"
}
}
local changeLogString = ""
for version, changes in changeLog do -- you dont need an iteration function just use nothing
changeLogString ..= "Changelog for " .. version .. ":\n - "..table.concat(changes, "\n - ")
end
dbgprint(
"Utility Stable " .. UtilityVersion .. "\n",
"Contact liablelua for any bugs or issues\n",
"Contributors:\n",
table.concat(Contributors, "\n"), -- you knew about the function so why didnt you use it ^^^
"\n" .. changeLogString
)
end
do -- Load executor-specific patches
local executorPatches = {
["Celery"] = function()
loadstring(game:HttpGet("https://raw.githubusercontent.com/liablelua/Utility/main/getCeleryVersion.lua"))() -- would be so much better just to do the versuib http request inside this script instead of having 2 http requests
local CeleryVersion = getCeleryVersion()
if CeleryVersion == "2.0.9" or CurrentVersion == "0.636.1.6360627" then
dbgwarn("⚠️ You are using an Unstable Celery Version (v2.0.9)")
dbgprint("✅ Applying cloneref patch to environment.")
cloneref = function(e) return e end
end
dbgprint("👽 Running Celery v" .. CeleryVersion)
end
}
if executorPatches[executorName] then
task.defer(executorPatches[executorName]) -- no point in yielding for the http request ^^^
else
dbgwarn("⚠️ No patches available for your executor, script may not work as intended.")
end
end
if saveinstance == nil then
saveinstance = function(Options : {[any] : any})
saveinstance = loadstring(game:HttpGet("https://raw.githubusercontent.com/luau/SynSaveInstance/main/saveinstance.luau"))() -- now your init's faster because you dont have to have an http request yield
saveinstance(Options)
end
end
dbgprint("🛠️ Running Roblox Version: v" .. version())
if CurrentVersion ~= supportedRobloxVersion then
dbgwarn("⚠️ Utility may be patched for this Roblox Update, wait for an update on Utility's end.") -- did you forget about dbgwarn? why did you use warn?
end
NukeUtility = function()
getgenv().UtilityLoaded = nil
getgenv().UtilityStorage = nil
getgenv().Hooks = nil
table.clear(getgenv().Remotes)
getTime = nil
hook = nil
unhook = nil
remotescan = nil
key = nil
prompt = nil
notification = nil
uload = nil
headshot = nil
logs = nil
test = nil
end
getTime = function()
local CurgetTime = os.date("!*t")
return "["..CurgetTime.hour..":"..CurgetTime.min..":"..CurgetTime.sec.."]"
end
-- Don't mind "getTime" it's used for logging certain things and whatnot.
-- NukeUtility() -- Uncomment if your testing Utility Source
local utilityVersion = "stable-dc772e43300b07754f4739b746938a15"
local update = game:HttpGet("https://raw.githubusercontent.com/liablelua/Utility/main/version_update.txt"):gsub("^%s*(.-)%s*$", "%1") -- so pointless but whatever floats your boat
if update ~= utilityVersion then
table.insert(getgenv().UtilityStorage, getTime() .. ": Utility has a new update (" .. update .. ") and needs to be downloaded soon.")
end
if getgenv().UtilityLoaded ~= nil then
table.insert(getgenv().UtilityStorage, getTime()..(type(getgenv().UtilityLoaded) == "boolean" and (getgenv().UtilityLoaded and ": Utility has already been loaded, don't execute again." or ": Utility is loading, don't execute again.")) or ": Utility has failed to load.")
else
-- im not touching this area this is a mess in of itself
local AntiTamper = {}
getgenv().UtilityLoaded = false
getgenv().UtilityStorage = {}
getgenv().Hooks = {}
getgenv().Remotes = {}
table.insert(getgenv().UtilityStorage, getTime()..": Utility started.")
hook = function(rem, func)
if getgenv().Hooks[rem.Name] == nil then
table.insert(getgenv().UtilityStorage, getTime()..": Used hook on "..rem.Name..".")
getgenv().Hooks[rem.Name] = rem.OnClientEvent:Connect(func)
end
end
unhook = function(rem)
if getgenv().Hooks[rem.Name] then
table.insert(getgenv().UtilityStorage, getTime()..": Removed hook on "..rem.Name..".")
getgenv().Hook[rem.Name] = nil
end
end
remotescan = function(scan : Instance, deep : boolean)
table.insert(getgenv().UtilityStorage, getTime()..": Used Remote Scan on "..scan.Name..".")
local Children = scan:GetChildren()
for _, b : Instance in next, Children do
table.insert(getgenv().UtilityStorage, getTime() .. ": Scanned: " ..b.Name.. ".")
dbgprint(b.Name .. " | " .. b.ClassName)
if deep ~= nil then
if typeof(deep) == "boolean" then
for _, d in b:GetChildren() do
table.insert(getgenv().UtilityStorage, getTime()..": Scanned: "..d.Name..".")
dbgprint(d.Name .. " | " .. d.ClassName)
end
else
break
end
end
end
end
scanall = function(f : Instance)
table.insert(getgenv().UtilityStorage, getTime()..": Scanning, "..f.Name..".")
for _, v : Instance in next, f:GetDescendants() do
if v:IsA("RemoteEvent") and v.Parent:IsA("Folder") then
table.insert(getgenv().Remotes, v)
end
end
end
key = function(keyInput, keyWeb)
table.insert(getgenv().UtilityStorage, getTime()..": Key system loaded.")
local theKey = string.gsub(game:HttpGet(keyWeb), "^%s*(.-)%s*$", "%1")
if theKey == keyInput then
return true
else
return false
end
end
prompt = function(promptText : string, cancelText : string, acceptText : string, cancelFunction : any, acceptFunction : any)
table.insert(getgenv().UtilityStorage, getTime()..": Prompt loaded.")
local CancelButton = Instance.new("TextButton")
local AcceptButton = Instance.new("TextButton")
do -- UI Initialization
local prompt = Instance.new("ScreenGui")
local Frame = Instance.new("Frame")
local UICorner = Instance.new("UICorner")
local Frame_2 = Instance.new("Frame")
local TextLabel = Instance.new("TextLabel")
local TextLabel2 = Instance.new("TextLabel")
local UICorner_2 = Instance.new("UICorner")
local UICorner_3 = Instance.new("UICorner")
local UISizeConstraint = Instance.new("UISizeConstraint")
prompt.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
Frame.AnchorPoint = Vector2.new(0.5, 0.5)
Frame.BackgroundColor3 = Color3.new(0.227451, 0.227451, 0.227451)
Frame.BackgroundTransparency = 0.5
Frame.BorderSizePixel = 0
Frame.Position = UDim2.new(0.5, 0, 0.5, 0)
Frame.Size = UDim2.new(0.300000012, 0, 0.300000012, 0)
Frame_2.BackgroundColor3 = Color3.new(0.513726, 0.513726, 0.513726)
Frame_2.BackgroundTransparency = 0.5
Frame_2.BorderSizePixel = 0
Frame_2.Position = UDim2.new(0, 0, 0.200000003, 0)
Frame_2.Size = UDim2.new(1, 0, 0, 2)
Frame_2.ZIndex = 2
TextLabel.BackgroundTransparency = 1
TextLabel.Position = UDim2.new(0, 0, 8.70190391e-08, 0)
TextLabel.Size = UDim2.new(0, 350, 0, 35)
TextLabel.Font = Enum.Font.BuilderSans
TextLabel.Text = "Prompt"
TextLabel.TextColor3 = Color3.new(1, 1, 1)
TextLabel.TextScaled = true
TextLabel.TextSize = 14
TextLabel.TextWrapped = true
TextLabel2.BackgroundTransparency = 1
TextLabel2.Position = UDim2.new(8.70190391e-08, 0, 0.24522391, 0)
TextLabel2.Size = UDim2.new(0, 350, 0, 74)
TextLabel2.Font = Enum.Font.BuilderSans
TextLabel2.Text = promptText
TextLabel2.TextColor3 = Color3.new(1, 1, 1)
TextLabel2.TextSize = 14
TextLabel2.TextWrapped = true
CancelButton.BackgroundColor3 = Color3.new(0.141176, 0.141176, 0.141176)
CancelButton.BackgroundTransparency = 0.5
CancelButton.BorderSizePixel = 0
CancelButton.Position = UDim2.new(0.0251197852, 0, 0.666999996, 0)
CancelButton.Size = UDim2.new(0.449999988, 0, 0.300000012, 0)
CancelButton.Font = Enum.Font.BuilderSansExtraBold
CancelButton.Text = cancelText
CancelButton.TextColor3 = Color3.new(1, 1, 1)
CancelButton.TextSize = 14
AcceptButton.BackgroundColor3 = Color3.new(0.141176, 0.141176, 0.141176)
AcceptButton.BackgroundTransparency = 0.5
AcceptButton.BorderSizePixel = 0
AcceptButton.Position = UDim2.new(0.520727217, 0, 0.666999996, 0)
AcceptButton.Size = UDim2.new(0.449999988, 0, 0.300000012, 0)
AcceptButton.Font = Enum.Font.BuilderSansExtraBold
AcceptButton.Text = acceptText
AcceptButton.TextColor3 = Color3.new(1, 1, 1)
AcceptButton.TextSize = 14
UISizeConstraint.MaxSize = Vector2.new(350, 175)
UISizeConstraint.MinSize = Vector2.new(350, 175)
UICorner_2.Parent = AcceptButton
UISizeConstraint.Parent = Frame
UICorner_3.Parent = AcceptButton
AcceptButton.Parent = Frame
AcceptButton.Parent = Frame
TextLabel2.Parent = Frame
TextLabel.Parent = Frame
Frame_2.Parent = Frame
UICorner.Parent = Frame
Frame.Parent = prompt
prompt.Parent = CoreGui
end
CancelButton.MouseButton1Down:Once(function()
prompt:Destroy()
cancelFunction()
end)
AcceptButton.MouseButton1Down:Connect(function()
prompt:Destroy()
acceptFunction()
end)
end
notification = function(text : string, notificationTime : number)
table.insert(getgenv().UtilityStorage, getTime() .. ": Notification loaded.")
local Notification = Instance.new("ScreenGui")
do -- UI Initialization
local Frame2 = Instance.new("Frame")
local UICorner = Instance.new("UICorner")
local Frame = Instance.new("Frame")
local TextLabel = Instance.new("TextLabel")
local TextLabel2 = Instance.new("TextLabel")
local UISizeConstraint = Instance.new("UISizeConstraint")
Notification.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
Frame2.Parent = Notification
Frame2.AnchorPoint = Vector2.new(0.5, 0.5)
Frame2.BackgroundColor3 = Color3.new(0.227451, 0.227451, 0.227451)
Frame2.BackgroundTransparency = 0.5
Frame2.BorderSizePixel = 0
Frame2.Position = UDim2.new(0.5, 0, 0.150000006, 0)
Frame2.Size = UDim2.new(0.300000012, 0, 0.185211286, 0)
Frame.BackgroundColor3 = Color3.new(0.513726, 0.513726, 0.513726)
Frame.BackgroundTransparency = 0.5
Frame.BorderSizePixel = 0
Frame.Position = UDim2.new(0, 0, 0.200000003, 0)
Frame.Size = UDim2.new(1, 0, 0, 1)
TextLabel.BackgroundTransparency = 1
TextLabel.BorderSizePixel = 0
TextLabel.Position = UDim2.new(8.70190391e-08, 0, 9.78964181e-08, 0)
TextLabel.Size = UDim2.new(0, 350, 0, 24)
TextLabel.Font = Enum.Font.BuilderSans
TextLabel.Text = "Notification"
TextLabel.TextColor3 = Color3.new(1, 1, 1)
TextLabel.TextScaled = true
TextLabel.TextSize = 14
TextLabel.TextWrapped = true
TextLabel2.BackgroundTransparency = 1
TextLabel2.Position = UDim2.new(8.70190391e-08, 0, 0.24522391, 0)
TextLabel2.Size = UDim2.new(0, 350, 0, 74)
TextLabel2.Font = Enum.Font.BuilderSans
TextLabel2.Text = text
TextLabel2.TextColor3 = Color3.new(1, 1, 1)
TextLabel2.TextSize = 14
TextLabel2.TextWrapped = true
UISizeConstraint.MaxSize = Vector2.new(350, 116)
UISizeConstraint.MinSize = Vector2.new(350, 116)
UISizeConstraint.Parent = Frame2
TextLabel2.Parent = Frame2
TextLabel.Parent = Frame2
UICorner.Parent = Frame2
Frame.Parent = Frame2
Notification.Parent = CoreGui
end
task.delay(notificationTime, function()
Notification:Destroy()
end)
end
registerTampers = function(variables)
table.insert(getgenv().UtilityStorage, getTime()..": Registered tamper variables.")
for i, v in variables do
AntiTamper[i] = v
end
end
updateTamper = function(var,upd)
table.insert(getgenv().UtilityStorage, getTime()..": Updated tamper variables.")
AntiTamper[var] = upd
end
checkTamper = function(vars)
table.insert(getgenv().UtilityStorage, getTime()..": Tamper check started.")
local Tampered = false
for i, v in vars do
if not (AntiTamper[i] == v and v == vars[i]) then
table.insert(getgenv().UtilityStorage, getTime()..": The variables were tampered with.")
Tampered = true
end
end
return Tampered
end
uload = function(x) -- legit has a function called loadfile but i mean whateverrrr
table.insert(getgenv().UtilityStorage, getTime()..": uload used for link: "..x..".")
return loadstring(readfile(x))
end
headshot = function(id)
table.insert(getgenv().UtilityStorage, getTime()..": Headshot used for UID: "..tostring(id)..".")
local HeadShot = Players:GetUserThumbnailAsync(id, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
return HeadShot
end
logs = function(ret)
if ret then
-- unnessasary check because you legit check ^^^
return getgenv().UtilityStorage
end
for i,v in getgenv().UtilityStorage do
dbgprint(v)
end
end
antiskid = function(scOwner,scValue) -- dumbest stuff i've ever seen/ so pointless a skid will JUST REMOVE IT IF THEY CARE WHICH THEY DONT
table.insert(getgenv().UtilityStorage, getTime()..": Anti-Skid Protection Ran.")
if scValue ~= scOwner then
task.spawn(function()
while task.wait() do
NukeUtility()
end
end)
task.wait(2)
LocalPlayer:Kick("❎ THE OWNER OF THIS SCRIPT IS A SKID ❎ [Kicked by Utility Anti-Skid]") -- dumb
string.rep("you're welcome", 1/0)
end
end
speed = function(val : number)
if Humanoid then
Humanoid.WalkSpeed = val
end
end
jump = function(val : number)
if Humanoid then
Humanoid.JumpPower = val
end
end
sit = function()
if Humanoid then
Humanoid.Sit = not Humanoid.Sit
end
end
swim = function()
if Humanoid then
if Humanoid:GetState() ~= Enum.HumanoidStateType.Swimming then
Humanoid:SetStateEnabled("GettingUp", false) -- personally would use the nums but whatever
Humanoid:ChangeState("Swimming")
else
Humanoid:SetStateEnabled("GettingUp", true)
end
end
end
unc = function()
loadstring(game:HttpGet("https://raw.githubusercontent.com/unified-naming-convention/NamingStandard/main/UNCCheckEnv.lua"))() -- i hate unc
end
iy = function()
-- the one time you use task.spawn in the WRONG PLACE
loadstring(game:HttpGet("https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source"))()
end
fromhex = Color3.fromHex -- man making a function just for it to already exist. I can relate
tohex = function(str : string)
return str:gsub('.', function(c) return string.format('%02X', string.byte(c)) end)
end
runtests = function()
dbgprint("")
table.insert(getgenv().UtilityStorage, getTime()..": Started compatibility test.")
local testfuncs = {
{hook, "Local Hooking"},
{unhook, "Local Unhooking"},
{remotescan, "Remote Scanner"},
{key, "Key System"},
{prompt, "Prompt Library"},
{notification, "Notification Library"},
{headshot, "Player Headshots"},
{logs, "Utility Logger"},
{speed, "Humanoid Properties"},
{unc, "UNC Tests"},
{iy, "Infinite Yield"},
{fromhex, "Hex Conversions"}
}
for _, v in testfuncs do
if v[1] == nil then
dbgprint("❎ "..v[2].." not found.")
else
dbgprint("✅ "..v[2].." found.")
end
end
if antiskid ~= nil then dbgprint("✅ antiskid function") else dbgprint("❎ antiskid function") -- soooo pointlesssss
task.spawn(function()
while task.wait(1) do
NukeUtility()
end
end)
task.wait(2)
LocalPlayer:Kick("⚠️ THIS SKID THOUGHT HE COULD BYPASS ANTISKID? ⚠️")
end
if NukeUtility ~= nil then dbgprint("✅ NukeUtility function") else dbgprint("❎ NukeUtility function") -- legit does NOT MATTER
task.spawn(function()
while task.wait(1) do
NukeUtility()
end
end)
task.wait(2)
LocalPlayer:Kick("⚠️ THIS SKID THOUGHT HE COULD BYPASS ANTISKID? ⚠️")
end
if checkTamper ~= nil and updateTamper ~= nil and registerTampers ~= nil then dbgprint("✅ Tamper functions") else dbgprint("❎ Tamper functions")
task.spawn(function()
while task.wait(1) do
NukeUtility()
end
end)
task.wait(2)
LocalPlayer:Kick("⚠️ THIS SKID THOUGHT HE COULD BYPASS ANTISKID? ⚠️")
end
table.insert(getgenv().UtilityStorage, getTime() .. ": Finished compatibility test.")
end
-- Final Anti-Skid measures (unbypassable? [all it takes is a little backspacing to remove the code :money_mouth:])
task.spawn(function()
while task.wait(10) do
if antiskid == nil or NukeUtility == nil or test == nil or checkTamper == nil or updateTamper == nil or registerTampers == nil then
getgenv().UtilityLoaded = nil
getgenv().UtilityStorage = nil
getgenv().Hooks = nil
getgenv().Remotes = {}
getTime = nil
hook = nil
unhook = nil
remotescan = nil
key = nil
prompt = nil
notification = nil
uload = nil
headshot = nil
logs = nil
test = nil
task.wait(2)
LocalPlayer:Kick("⚠️ THIS SKID THOUGHT HE COULD BYPASS ANTISKID? ⚠️")
end
end
end)
table.insert(getgenv().UtilityStorage, getTime()..": Utility loaded.")
runtests()
getgenv().UtilityLoaded = true
end
--final note wouldn't it make more sense to yield the thread instead of spawning a new thread if they're "skidding"
I dont care enough to fork it and I didnt test any of it 🤑