local SafeCall = {} SafeCall.Defaults = { RetryCount = 2, RetryDelay = 1, YieldInterval = 0.03 } SafeCall.Errors = { InvalidURL = "Invalid URL provided", Aborted = "Execution aborted", Suspicious = "Suspicious content detected", FetchFailed = "Failed to fetch script", ExecutionFailed = "Script execution failed" } SafeCall.AntiVirus = { DetectionLog = {}, QuarantineFolder = "AntiVirusQuarantine", LogDetection = function(self, url, reason) table.insert(self.DetectionLog, { Timestamp = os.time(), URL = url, Reason = reason }) warn("⚠️ Suspicious script detected and blocked from: " .. url) warn("Reason: " .. reason) end, QuarantineScript = function(self, url, content) if not isfolder(self.QuarantineFolder) then makefolder(self.QuarantineFolder) end local fileName = self.QuarantineFolder .. "/" .. game:GetService("HttpService"):GenerateGUID(false) .. ".lua" writefile(fileName, content) print("🔒 Suspicious script quarantined: " .. fileName) end, ScanWorkspace = function(self) print("🔍 Scanning workspace for suspicious scripts...") local suspiciousCount = 0 local function scanInstance(instance) if instance:IsA("LuaSourceContainer") then local source = instance.Source local isSuspicious, reason = SafeCall.IsSuspicious(source) if isSuspicious then suspiciousCount = suspiciousCount + 1 warn("⚠️ Suspicious script found in workspace: " .. instance:GetFullName()) warn("Reason: " .. reason) -- Optionally disable or remove the script -- instance.Disabled = true -- or instance:Destroy() end end for _, child in ipairs(instance:GetChildren()) do scanInstance(child) end end scanInstance(game) print("✅ Workspace scan completed. Found " .. suspiciousCount .. " suspicious scripts.") end, ScanAll = function(self) print("🔍 Scanning all instances, services, functions, variables, and numbers for suspicious content...") local suspiciousCount = 0 local function scanTable(tbl) for key, value in pairs(tbl) do if type(value) == "string" then local isSuspicious, reason = SafeCall.IsSuspicious(value) if isSuspicious then suspiciousCount = suspiciousCount + 1 warn("⚠️ Suspicious content found in table key: " .. tostring(key)) warn("Reason: " .. reason) end elseif type(value) == "table" then scanTable(value) end end end local function scanInstance(instance) if instance:IsA("LuaSourceContainer") then local source = instance.Source local isSuspicious, reason = SafeCall.IsSuspicious(source) if isSuspicious then suspiciousCount = suspiciousCount + 1 warn("⚠️ Suspicious script found in instance: " .. instance:GetFullName()) warn("Reason: " .. reason) end end for _, child in ipairs(instance:GetChildren()) do scanInstance(child) end end local function scanService(service) for _, instance in ipairs(service:GetChildren()) do scanInstance(instance) end end for _, service in ipairs(game:GetChildren()) do scanService(service) end -- Scan global environment scanTable(_G) -- Scan workspace scanInstance(game) print("✅ Comprehensive scan completed. Found " .. suspiciousCount .. " suspicious items.") end } SafeCall.GUI = { ScreenGui = nil, NotificationTemplate = nil, Setup = function(self) self.ScreenGui = Instance.new("ScreenGui") self.ScreenGui.Name = "SafeCallNotifications" self.ScreenGui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui") self.NotificationTemplate = Instance.new("TextLabel") self.NotificationTemplate.Size = UDim2.new(0, 300, 0, 50) self.NotificationTemplate.Position = UDim2.new(1, -320, 1, -70) self.NotificationTemplate.AnchorPoint = Vector2.new(0, 1) self.NotificationTemplate.BackgroundColor3 = Color3.fromRGB(40, 40, 40) self.NotificationTemplate.TextColor3 = Color3.fromRGB(255, 255, 255) self.NotificationTemplate.TextSize = 14 self.NotificationTemplate.Font = Enum.Font.SourceSansBold self.NotificationTemplate.TextWrapped = true self.NotificationTemplate.TextXAlignment = Enum.TextXAlignment.Left self.NotificationTemplate.TextYAlignment = Enum.TextYAlignment.Top local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 8) corner.Parent = self.NotificationTemplate local padding = Instance.new("UIPadding") padding.PaddingLeft = UDim.new(0, 10) padding.PaddingRight = UDim.new(0, 10) padding.PaddingTop = UDim.new(0, 5) padding.PaddingBottom = UDim.new(0, 5) padding.Parent = self.NotificationTemplate end, Notify = function(self, title, message, color) local notification = self.NotificationTemplate:Clone() notification.Text = title .. "\n" .. message notification.BackgroundColor3 = color or Color3.fromRGB(40, 40, 40) notification.Parent = self.ScreenGui -- Animation notification:TweenPosition( UDim2.new(1, -320, 1, -70 - (#self.ScreenGui:GetChildren() - 1) * 60), Enum.EasingDirection.Out, Enum.EasingStyle.Quart, 0.5, true ) -- Auto-remove after 5 seconds spawn(function() wait(5) notification:TweenPosition( UDim2.new(1, 20, notification.Position.Y.Scale, notification.Position.Y.Offset), Enum.EasingDirection.Out, Enum.EasingStyle.Quart, 0.5, true, function() notification:Destroy() end ) end) end } function SafeCall.IsSuspicious(scriptContent) local suspiciousPatterns = { "MarketplaceService", "robux", "DevProduct", "ProductPurchase", "PromptPurchase", "GetRobuxBalance", "PerformPurchase", "RequestPurchase", "httpservice", "syn", "http", "request", "getgenv", "setclipboard", "loadstring", "getfenv", "setfenv" } local lowercaseContent = scriptContent:lower() for _, pattern in ipairs(suspiciousPatterns) do if lowercaseContent:find(pattern:lower()) then return true, "Suspicious pattern found: " .. pattern end end if scriptContent:find("string%.char%(") or scriptContent:find("string%.byte%(") then return true, "Potential obfuscation detected" end -- Check for base64 encoded content if scriptContent:match("^[A-Za-z0-9+/]+={0,2}$") then return true, "Potential base64 encoded content detected" end return false end function SafeCall.Execute(url, options) assert(type(url) == "string" and url:match("^https?://"), SafeCall.Errors.InvalidURL) options = type(options) == "table" and options or {} local retryCount = options.RetryCount or SafeCall.Defaults.RetryCount local retryDelay = options.RetryDelay or SafeCall.Defaults.RetryDelay local function fetchAndCheckScript() local success, content = pcall(game.HttpGet, game, url) if not success then SafeCall.GUI:Notify("Fetch Failed", SafeCall.Errors.FetchFailed .. ": " .. tostring(content), Color3.fromRGB(255, 100, 100)) return false, SafeCall.Errors.FetchFailed .. ": " .. tostring(content) end local isSuspicious, reason = SafeCall.IsSuspicious(content) if isSuspicious then SafeCall.AntiVirus:LogDetection(url, reason) SafeCall.AntiVirus:QuarantineScript(url, content) SafeCall.AntiVirus:ScanWorkspace() SafeCall.GUI:Notify("Suspicious Content", SafeCall.Errors.Suspicious .. ": " .. reason, Color3.fromRGB(255, 165, 0)) return false, SafeCall.Errors.Suspicious .. ": " .. reason end return true, content end local function runScript(content) local success, result = pcall(loadstring(content)) if not success then SafeCall.GUI:Notify("Execution Failed", SafeCall.Errors.ExecutionFailed .. ": " .. tostring(result), Color3.fromRGB(255, 100, 100)) return false, SafeCall.Errors.ExecutionFailed .. ": " .. tostring(result) end return true, result end local function retry(attemptsLeft) local fetchSuccess, fetchResult = fetchAndCheckScript() if not fetchSuccess then if attemptsLeft > 0 then if options.OnRetry then options.OnRetry(retryCount - attemptsLeft + 1, fetchResult) end SafeCall.GUI:Notify("Retrying", "Attempt " .. (retryCount - attemptsLeft + 1) .. " of " .. retryCount, Color3.fromRGB(255, 255, 100)) wait(retryDelay) return retry(attemptsLeft - 1) else if options.OnError then options.OnError(fetchResult) end return false, fetchResult end end local runSuccess, runResult = runScript(fetchResult) if runSuccess then if options.OnSuccess then options.OnSuccess(runResult) end SafeCall.GUI:Notify("Success", "Script executed successfully", Color3.fromRGB(100, 255, 100)) return true, runResult elseif attemptsLeft > 0 then if options.OnRetry then options.OnRetry(retryCount - attemptsLeft + 1, runResult) end SafeCall.GUI:Notify("Retrying", "Attempt " .. (retryCount - attemptsLeft + 1) .. " of " .. retryCount, Color3.fromRGB(255, 255, 100)) wait(retryDelay) return retry(attemptsLeft - 1) else if options.OnError then options.OnError(runResult) end return false, runResult end end if options.ShouldAbort and options.ShouldAbort() then SafeCall.GUI:Notify("Aborted", SafeCall.Errors.Aborted, Color3.fromRGB(255, 165, 0)) return false, SafeCall.Errors.Aborted end return retry(retryCount) end -- Initialize the GUI when the module loads SafeCall.GUI:Setup() -- Example usage local url = "https://example.com/script.lua" local options = { RetryCount = 0, RetryDelay = 5, OnSuccess = function(result) print("Success:", result) end, OnError = function(error) warn("Error:", error) end, OnRetry = function(attempt, error) warn("Retry attempt:", attempt, "Error:", error) end, ShouldAbort = function() return false end -- Example abort condition } local success, result = SafeCall.Execute(url, options) print(success and ("Final result: " .. tostring(result)) or ("Final failure: " .. tostring(result))) -- To scan all instances, services, functions, variables, and numbers SafeCall.AntiVirus:ScanAll()