
Key RequiredUniversal

local discord = 'https://discord.gg/gYhqMRBeZV'
local Fluent = loadstring(game:HttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/download/main.lua"))()
local SaveManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/SaveManager.lua"))()
local InterfaceManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/InterfaceManager.lua"))()
local HTTPs = game:GetService"HttpService";
local Market = game:GetService"MarketplaceService"
local pending = {}
local allowed = {}
local allowed2 = {}
local request2 = clonefunction(request)
local blockedfunctions = {
hookfunction, writefile, makefolder, request, Market.PromptPurchase, Market.PromptGamePassPurchase, Market.PromptBundlePurchase, Market.PromptPremiumPurchase, Market.PromptSubscriptionPurchase, Market.PromptProductPurchase, Market.PerformPurchase, Market.PerformPurchaseV2
}
local RBX = game:GetService('RbxAnalyticsService');
local Specific = {
RbxAnalyticsService = {
RBX.GetClientId,
RBX.GetSessionId,
RBX.GetPlaySessionId
},
Requests = {
['syn_backup.request'] = syn_backup ~= nil and syn_backup.request or nil,
['http_request'] = http_request,
['request'] = request,
['http.request'] = http ~= nil and http.request or nil,
['syn.request'] = syn ~= nil and syn.request or nil,
['fluxus.request'] = fluxus ~= nil and fluxus.request or nil
}
}
local Methods = {
RBX = {
'GetClientId',
'GetSessionId',
'GetPlaySessionId'
}
}
local path = 'RoTotal'
local SelfWriting, SendAsyncAllowed, SendAsyncBlocked = false, false, false
function encode(a)
HTTPs:JSONEncode(a)
end
function decode(a)
HTTPs:JSONDecode(a)
end
function getid(list)
for i, v in list do if type(v) == 'number' then return v end end
end
local functions = {
URLMain = function(url)
local formatted = url:match("https://.+") or url:match("http://.+")
formatted = formatted:split("/")[3]
return formatted:gsub("https://", ''):gsub('http://', '')
end
}
function TableLoop(thing, indent)
if typeof(thing) ~= 'table' then
return tostring(thing)
end
local result = '{\n'
for i, v in pairs(thing) do
local key = tostring(i)
local value = TableLoop(v, indent + 1)
local value2 = ''
value2 = (typeof(value) == 'string' and ("'%s'"):format(value)) or (typeof(value) == 'number' and tostring(value))
result = result .. string.rep(' ', indent) .. "['" .. key .. "'] = " .. value2 .. ',\n'
end
return result .. string.rep(' ', indent - 1) .. "}"
end
function tocURL(args)
local cmd = "curl request " .. args.Method .. " \"" .. args.Url .. "\""
if args.Headers then
for key, value in args.Headers do
cmd = cmd .. " -H \"" .. key .. ": " .. value .. "\"\n"
end
end
if args.Body then
cmd = cmd .. " --data-raw '" .. args.Body .. "'"
end
return cmd
end
local Window = Fluent:CreateWindow({
Title = "RoTotal",
SubTitle = "by vxsty",
TabWidth = 160,
Size = UDim2.fromOffset(580, 460),
Acrylic = true,
Theme = "Dark",
MinimizeKey = Enum.KeyCode.LeftControl
})
local Tabs = {
Socials = Window:AddTab({ Title = "Social", Icon = "globe" })
}
local Options = Fluent.Options
function Notify(title, text, duration)
Fluent:Notify({
Title = title,
Content = text,
Duration = duration
})
end
SaveManager:SetLibrary(Fluent)
InterfaceManager:SetLibrary(Fluent)
Tabs.Socials:AddButton({
Title = "Discord",
Description = "Join my discord server",
Callback = function()
local success, err = pcall(setclipboard, discord)
if success then
Notify("Success", 'Successfully copied discord invite to clipboard!', 5)
else
Notify("Error!", 'Failed to copy invite to clipboard, Printed error message.', 5)
warn(err)
end
end
})
Tabs.Socials:AddButton({
Title = "Other Scripts",
Content = "https://scriptblox.com/u/vxsty",
Callback = function()
setclipboard("https://scriptblox.com/u/vxsty")
end
})
local old0, old00, old, old2, old3, old4, old5, old6, old7, old8, old9, old10, old11 -- Namecall HttpPost, Anti chat ban, Abusing filesystem (Adding urls to RoTotal/config.json)
old0 = hookfunction(game:GetService("Players").LocalPlayer.Kick, newcclosure(function(Self, message)
return Notify("AntiKick", 'Kick attempt denied, Kick Message: ' .. tostring(message), 10)
end))
old00 = hookfunction(game:GetService("Players").ReportAbuse, newcclosure(function(Self, message)
return Notify("ReportAbuse", 'ReportAbuse attempt denied.', 6)
end))
old = hookmetamethod(game, "__namecall", newcclosure(function(Self, ...)
local Method, Args = getnamecallmethod(), {...}
if Method:lower():find('http') and SelfRequesting then return old(Self, ...) end
if Method == 'CaptureFocus' then
local tab = Window:AddTab({ Title = 'CaptureFocus', Icon = "focus" })
tab:AddParagraph({
Title = 'CaptureFocus access wanted.',
Content = (getcallingscript() ~= nil and getcallingscript():GetFullName() or 'unknown') .. ' would like to use CaptureFocus on ' .. tostring(Self)
})
tab:AddButton({Title='Allow', Description='Always allows CaptureFocus on this instance', Callback=function()
table.insert(allowed2, Self)
end})
tab:AddButton({Title='Block', Description='Removes this from the allowed table, Used if you only wanted to allow once or you accidently allowed.', Callback=function()
for i, v in allowed2 do if v == Self then v = nil end end
end})
elseif Method:sub(1, 8):lower() == 'httppost' and not SelfRequesting then
local args = {}
args.Url = Args[1]
args.Method = 'POST'
args.Body = Args[2] or ''
args.Headers = Args[3] and {
['Content-Type'] = Args[3]
} or {}
if not table.find(allowed, args.Url) then
local tab = Window:AddTab({ Title = functions.URLMain(args.Url), Icon = "globe" })
tab:AddParagraph({
Title = 'Requested With',
Content = 'game:' .. Method
})
tab:AddParagraph({
Title = "URL",
Content = args.Url
})
tab:AddParagraph({
Title = "Method",
Content = args.Method
})
if args.Headers and #args.Headers > 0 then
tab:AddParagraph({Title='Headers', Content=TableLoop(args.Headers, 1)})
end
if args.Body and args.Body ~= '' then
tab:AddParagraph({
Title = "Body",
Content = tostring(args.Body)
})
end
tab:AddButton({Title='Allow', Description="Adds the request url to the allowed urls table (POST REQUEST ONLY).", Callback=function()
table.insert(allowed, args.Url)
end})
tab:AddButton({Title='Block', Description="Removes the request url from the allowed urls table (if it exists)", Callback=function()
for i, v in allowed do if v == args.Url then print("Found,", v) table.remove(allowed, i) end end
end})
local drop = tab:AddDropdown("CopyDropdown", {
Title = "Copy As",
Values = {'', "Source", "cURL"},
Multi = false,
Default = '',
})
drop:OnChanged(function(val)
if val == 'Source' then
setclipboard(string.format(
'%s({\n Url=\'%s\'\n Method=\'%s\'\n Body = \'%s\'\n Headers=%s\n}',
debug.getinfo(v).name or 'request', args.Url, args.Method, args.Body or '', args.Headers and #args.Headers > 0 and TableLoop(args.Headers, 2) or '{}'
))
Fluent:Notify({
Title = "Copied",
Content = "Successfully copied as source code!",
SubContent = "",
Duration = 5
})
elseif val == 'cURL' then
setclipboard(tocURL(args))
Fluent:Notify({
Title = "Copied",
Content = "Successfully copied as cURL!",
SubContent = "",
Duration = 5
})
end
end)
return
end
elseif Method:sub(1, 7):lower() == 'httpget' then
local args = {}
local Args = {...}
args.Url = Args[1]
args.Method = 'GET'
local tab = Window:AddTab({ Title = functions.URLMain(args.Url), Icon = "globe" })
tab:AddParagraph({
Title = 'Requested With',
Content = 'game:' .. Method
})
tab:AddParagraph({
Title = "URL",
Content = args.Url
})
tab:AddParagraph({
Title = "Method",
Content = args.Method
})
local drop = tab:AddDropdown("CopyDropdown", {
Title = "Copy As",
Values = {'', "Source", "cURL"},
Multi = false,
Default = '',
})
drop:OnChanged(function(val)
if val == 'Source' then
setclipboard('game:HttpGet(\''..args.Url..'\');')
Fluent:Notify({
Title = "Copied",
Content = "Successfully copied as source code!",
SubContent = "",
Duration = 5
})
elseif val == 'cURL' then
setclipboard(tocURL(args))
Fluent:Notify({
Title = "Copied",
Content = "Successfully copied as cURL!",
SubContent = "",
Duration = 5
})
end
end)
SelfRequesting = true
return game.HttpGet(game, Args[1])
elseif Method:sub(1, 9):lower() == 'sendasync' then
if not table.find(allowed2, Self) and not BySelf then
local tab = Window:AddTab({ Title = 'SendAsync', Icon = "send" })
tab:AddParagraph({
Title = "Channel",
Content = Self.Name
})
tab:AddParagraph({
Title = "Message",
Content = Args[1]
})
tab:AddButton({Title='Send', Description='Sends the message in the select channel.', Callback=function()
BySelf = true Self:SendAsync(Args[1]) BySelf = false
end})
tab:AddButton({Title='Allow', Description="Allows messages to be sent by a script in this channel", Callback=function()
table.insert(allowed2, Self)
end})
tab:AddButton({Title='Block', Description="Blocks messages being sent by a script in this channel", Callback=function()
for i, v in allowed2 do if v == Self then v = nil end end
end})
end
elseif table.find(Methods.RBX, Method) then
return game:GetService("HttpService"):GenerateGUID(false)
elseif Method == 'RequestLimitedAsync' then
Notify('RequestLimitedAsync', 'Script tried to use RequestLimitedAsync, Denying..', 5)
return
end
return old(Self,...)
end))
for i, v in game:GetService("TextChatService"):GetDescendants() do
if v:IsA("TextChannel") then
local old1111;
old1111 = hookfunction(v.SendAsync, newcclosure(function(Self, Message)
if not table.find(allowed2, Self) then
local tab = Window:AddTab({ Title = 'SendAsync', Icon = "send" })
tab:AddParagraph({
Title = "Channel",
Content = Self.Name
})
tab:AddParagraph({
Title = "Message",
Content = Args[1]
})
tab:AddButton({Title='Send', Description='Sends the message in the select channel.', Callback=function()
BySelf = true Self:SendAsync(Args[1]) BySelf = false
end})
tab:AddButton({Title='Allow', Description="Allows messages to be sent by a script in this channel", Callback=function()
table.insert(allowed2, Self)
end})
tab:AddButton({Title='Block', Description="Blocks messages being sent by a script in this channel", Callback=function()
for i, v in allowed2 do if v == Self then v = nil end end
end})
end
return old1111(Self, Message)
end))
end
end
old3 = hookfunction(writefile, newcclosure(function(file, content)
if not SelfWriting and file == path.."/config.json" then
warn("Script tried to access RoTotal/config.json files, Attempt denied.")
Notify('Files Accessed', 'Script attempted to access the RoTotal files, Attempt denied.', 8)
return
end
return old3(file, tostring(content))
end))
old4 = hookfunction(makefolder, newcclosure(function(path)
if not SelfWriting and file == path then
warn("Script tried to recreate the RoTotal folder, Attempt denied.")
Notify('Files Accessed', 'Script attempted to access the RoTotal files, Attempt denied.', 8)
return
end
return old4(path)
end))
old5 = hookfunction(clonefunction, newcclosure(function(func)
if table.find(blockedfunctions, func) or func == clonefunction then
Notify('Bypass Attempt', 'Script tried to bypass detections with clonefunction, attempt denied.', 8)
return print
end
return old5(func)
end))
old6 = hookfunction(hookfunction, newcclosure(function(func, func2)
if func == hookfunction then
Notify('Bypass Attempt', 'Script tried to bypass detections with hookfunction, attempt denied.', 8)
return print -- Makes script print every function they want to use instead of actually hook xD
end
return old6(func, func2)
end))
old7 = hookfunction(Market.GetRobuxBalance, function(...)
return nil -- Error out some scripts.
end)
local Hook = {game.HttpPostAsync, game.HttpGet, game.HttpGetAsync}
for i = 1, 4 do
local v;
v = hookfunction(Hook[i], function(Self, ...)
local args = {}
local Args = {...}
args.Url = Args[1]
args.Method = i <= 2 and 'POST' or 'GET'
args.Body = Args[2] or ''
args.Headers = Args[3] and {
['Content-Type'] = Args[3]
} or {}
if not table.find(allowed, args.Url) and not SelfRequesting then
local tab = Window:AddTab({ Title = functions.URLMain(args.Url), Icon = "globe" })
tab:AddParagraph({
Title = 'Requested With',
Content = Hook[i] == game.HttpPost and 'game.HttpPost' or Hook[i] == game.HttpPostAsync and 'game.HttpPostAsync' or Hook[i] == game.HttpGet and 'game.HttpGet' or Hook[i] == game.HttpGetAsync and 'game.HttpGetAsync'
})
tab:AddParagraph({
Title = "URL",
Content = args.Url
})
tab:AddParagraph({
Title = "Method",
Content = args.Method
})
if args.Headers and #args.Headers > 0 then
tab:AddParagraph({Title='Headers', Content=TableLoop(args.Headers, 1)})
end
if args.Body and args.Body ~= '' then
tab:AddParagraph({
Title = "Body",
Content = tostring(args.Body)
})
end
if args.Method ~= 'GET' then
tab:AddButton({Title='Allow', Description="Adds the request url to the allowed urls table (POST REQUEST ONLY).", Callback=function()
table.insert(allowed, args.Url)
end})
tab:AddButton({Title='Block', Description="Removes the request url from the allowed urls table (if it exists)", Callback=function()
for i, v in allowed do if v == args.Url then print("Found,", v) table.remove(allowed, i) end end
end})
end
local drop = tab:AddDropdown("CopyDropdown", {
Title = "Copy As",
Values = {'', "Source", "cURL"},
Multi = false,
Default = '',
})
local POSTSource = ('game:HttpPost("%s", "%s", "%s");'):format(args.Url or '', args.Body or '', Args[3] or '')
local GETSource = ('game:HttpGet("%s");'):format(args.Url or '')
drop:OnChanged(function(val)
if val == 'Source' then
setclipboard(args.Method=='POST'and POSTSource or GETSource)
Fluent:Notify({
Title = "Copied",
Content = "Successfully copied as source code!",
SubContent = "",
Duration = 5
})
elseif val == 'cURL' then
setclipboard(tocURL(args))
Fluent:Notify({
Title = "Copied",
Content = "Successfully copied as cURL!",
SubContent = "",
Duration = 5
})
end
end)
if args.Method == 'GET' then
return v(Self, ...)
end
print('Not SelfRequesting or found in allowed urls.')
return
elseif SelfRequesting then
SelfRequesting = false
return v(Self, ...)
end
return v(Self, ...)
end)
end
old10 = hookfunction(game:GetService("Players").ReportAbuse, newcclosure(function(Self, ...)
local Args = {...}
return Notify("ReportAbuse Accessed", 'Script tried to access ReportAbuse and report player '..tostring(Args[1]), 10)
end))
for i = 7, #blockedfunctions do
local old0 = hookfunction(blockedfunctions[i], newcclosure(function(...)
local info = Market:GetProductInfo(getid({...}))
local owner = info.CreatorTargetId
local Owner = game:GetService('Players'):GetNameFromUserIdAsync(owner);
local price = info.PriceInRobux
print("Owner:",Owner,"\nPrice:",price,'\nOwner ID:',owner)
Notify('MarketplaceService', 'Script attempted to prompt/complete a purchase, printed product info.', 5)
return
end))
end
for i, v in Specific.RbxAnalyticsService do
hookfunction(v, function()
Notify("RbxAnalyticsService accessed", 'RbxAnalyticsService accessed with member '..tostring(debug.getinfo(v).name)..", returned random GUID", 5)
return HTTPs:GenerateGUID(false)
end)
end
for i, v in Specific.Requests do
local old0;
old0 = hookfunction(v, newcclosure(function(...)
if SelfRequesting then SelfRequesting = false return old(...) end
local args = {...}
if typeof(args) == 'table' and typeof(args[1]) == 'table' then
args = args[1]
end
if not table.find(allowed, args.Url) or not SelfRequesting then
local tab = Window:AddTab({ Title = functions.URLMain(args.Url), Icon = "globe" })
tab:AddParagraph({
Title = 'Requested With',
Content = typeof(i) ~= 'number' and i or debug.getinfo(v).name or '??'
})
tab:AddParagraph({
Title = "URL",
Content = args.Url
})
tab:AddParagraph({
Title = "Method",
Content = args.Method
})
tab:AddParagraph({Title='Headers', Content=TableLoop(args.Headers, 1) or 'No Headers'})
tab:AddParagraph({
Title = "Body",
Content = args.Body or 'Empty'
})
if args.Method ~= 'GET' then
tab:AddButton({Title='Allow', Description="Adds the request url to the allowed urls table (POST REQUEST ONLY).", Callback=function()
table.insert(allowed, args.Url)
end})
tab:AddButton({Title='Block', Description="Removes the request url from the allowed urls table (if it exists)", Callback=function()
for i, v in allowed do if v == args.Url then print("Found,", v) table.remove(allowed, i) end end
end})
end
local drop = tab:AddDropdown("CopyDropdown", {
Title = "Copy As",
Values = {'', "Source", "cURL"},
Multi = false,
Default = '',
})
drop:OnChanged(function(val)
if val == 'Source' then
setclipboard(string.format(
'%s({\n Url=\'%s\',\n Method=\'%s\',\n Body = \'%s\',\n Headers=%s\n})',
i, args.Url, args.Method, args.Body or '', args.Headers and TableLoop(args.Headers, 2) or '{}'
))
Fluent:Notify({
Title = "Copied",
Content = "Successfully copied as source code!",
SubContent = "",
Duration = 5
})
elseif val == 'cURL' then
setclipboard(tocURL(args))
Fluent:Notify({
Title = "Copied",
Content = "Successfully copied as cURL!",
SubContent = "",
Duration = 5
})
end
end)
local r = request2({Url=args.Url, Method='GET'})
local Cookies, Headers = r.Cookies, r.Headers
return {
StatusCode = r.StatusCode,
Success = r.Success,
StatusMessage = r.StatusMessage,
Cookies = Cookies,
Headers = Headers
}
end
return old0(...)
end))
end



Nice script
this looks like an anti virus to me ngl
@lemon it kinda is.
@vxsty ok then
Finally something good and also open sourced for others to not just learn from it but to also read what it does exactly.
doesnt work on solara
@Ineedtalkinglessons I know
Goated
Who even disliked this
does this work for phone?
still works?
Does it work on JJsploit? Ig I'll test it
Now I can execute stealers without only 1 robux
@vxsty some url webhook discord not showing is bugs or some maybe u can fix
Crashes game on retrostudio