-- Key-gated loader with Discord invite, draggable, rounded corners, and rainbow outline -- Edit validKeys, SCRIPT_URL and DISCORD_INVITE as needed. local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer -- CONFIG ------------------------------------------------ local SCRIPT_URL = "https://raw.githubusercontent.com/Perfectionsthegoat/rivals-silent/refs/heads/main/traced%20rivals%20silent-obfuscated.lua" local STORAGE_FILENAME = "my_loader_key.txt" -- file to remember keyed users (exploit env only) local validKeys = { ["2xdesingertraced"] = true, } local MAX_ATTEMPTS = 100000000 local DISCORD_INVITE = "https://discord.gg/2QXc4YRAw" --------------------------------------------------------- -- Utility: exploit-friendly file storage if available local hasReadFile, hasWriteFile, hasIsfile = pcall(function() return readfile ~= nil and writefile ~= nil and isfile ~= nil end) if not hasReadFile then hasReadFile = false end if not hasWriteFile then hasWriteFile = false end if not hasIsfile then hasIsfile = false end -- UI Creation local screenGui = Instance.new("ScreenGui") screenGui.Name = "KeyGateLoaderGui" screenGui.ResetOnSpawn = false screenGui.Parent = player:WaitForChild("PlayerGui") or game:GetService("CoreGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0,360,0,170) frame.Position = UDim2.new(0.5, -180, 0.5, -85) frame.BackgroundTransparency = 0.12 frame.BackgroundColor3 = Color3.fromRGB(30,30,30) frame.BorderSizePixel = 0 frame.Parent = screenGui frame.Active = true -- Rounded corners local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0,15) corner.Parent = frame -- Rainbow outline local outline = Instance.new("UIStroke") outline.Thickness = 2 outline.ApplyStrokeMode = Enum.ApplyStrokeMode.Border outline.Parent = frame -- Animate rainbow outline local rainbowHue = 0 RunService.RenderStepped:Connect(function() rainbowHue = (rainbowHue + 0.5) % 360 outline.Color = Color3.fromHSV(rainbowHue/360, 1, 1) end) local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 30) title.Position = UDim2.new(0,0,0,0) title.BackgroundTransparency = 1 title.Text = "Enter Key" title.Font = Enum.Font.GothamBold title.TextSize = 18 title.TextColor3 = Color3.fromRGB(255,255,255) title.Parent = frame local info = Instance.new("TextLabel") info.Size = UDim2.new(1, -20, 0, 30) info.Position = UDim2.new(0,10,0,30) info.BackgroundTransparency = 1 info.Text = "Paste your access key below." info.Font = Enum.Font.Gotham info.TextSize = 14 info.TextColor3 = Color3.fromRGB(200,200,200) info.TextXAlignment = Enum.TextXAlignment.Left info.Parent = frame local input = Instance.new("TextBox") input.Size = UDim2.new(1, -20, 0, 28) input.Position = UDim2.new(0,10,0,60) input.ClearTextOnFocus = false input.PlaceholderText = "Enter key..." input.Font = Enum.Font.Gotham input.TextSize = 16 input.Text = "" input.BackgroundTransparency = 0.2 input.BackgroundColor3 = Color3.fromRGB(40,40,40) input.TextColor3 = Color3.fromRGB(255,255,255) input.Parent = frame local submit = Instance.new("TextButton") submit.Size = UDim2.new(0,100,0,28) submit.Position = UDim2.new(1, -110, 0, 96) submit.Text = "Submit" submit.Font = Enum.Font.GothamSemibold submit.TextSize = 14 submit.Parent = frame local discordBtn = Instance.new("TextButton") discordBtn.Size = UDim2.new(0,120,0,28) discordBtn.Position = UDim2.new(0,10,0,96) discordBtn.Text = "Join Discord" discordBtn.Font = Enum.Font.GothamSemibold discordBtn.TextSize = 14 discordBtn.Parent = frame local status = Instance.new("TextLabel") status.Size = UDim2.new(1, -20, 0, 36) status.Position = UDim2.new(0,10,0,128) status.BackgroundTransparency = 1 status.Text = "" status.Font = Enum.Font.Gotham status.TextSize = 14 status.TextColor3 = Color3.fromRGB(200,200,200) status.TextWrapped = true status.TextXAlignment = Enum.TextXAlignment.Left status.Parent = frame -- Attempt counter local attemptsLeft = MAX_ATTEMPTS -- Load script function local function load_remote_script() status.Text = "Loading script..." local ok, res = pcall(function() local raw = game:HttpGet(SCRIPT_URL, true) local f = loadstring(raw) if type(f) == "function" then f() else error("loadstring didn't return a function") end end) if not ok then status.Text = ("Failed to load script: %s"):format(tostring(res)) else screenGui:Destroy() end end -- Try stored key first if hasIsfile and isfile(STORAGE_FILENAME) then local ok, saved = pcall(function() return readfile(STORAGE_FILENAME) end) if ok and type(saved) == "string" and saved ~= "" then if validKeys[saved] then load_remote_script() return else pcall(function() if isfile(STORAGE_FILENAME) then delfile(STORAGE_FILENAME) end end) end end end -- Key submission local function handleKeySubmission(key) if not key or key:gsub("%s+","") == "" then status.Text = "Please enter a key." return end if validKeys[key] then status.Text = "Key accepted. Loading..." if hasWriteFile then pcall(function() writefile(STORAGE_FILENAME, key) end) end wait(0.2) load_remote_script() else attemptsLeft = attemptsLeft - 1 if attemptsLeft > 0 then status.Text = "Invalid key. Attempts left: "..tostring(attemptsLeft) else status.Text = "No attempts left. Closing." wait(1) screenGui:Destroy() end end end submit.MouseButton1Click:Connect(function() handleKeySubmission(tostring(input.Text)) end) input.FocusLost:Connect(function(enterPressed) if enterPressed then handleKeySubmission(tostring(input.Text)) end end) -- Discord button discordBtn.MouseButton1Click:Connect(function() local ok, _ = pcall(function() if setclipboard then setclipboard(DISCORD_INVITE) status.Text = "Discord invite copied to clipboard: "..DISCORD_INVITE else error("setclipboard not available") end end) if not ok then status.Text = "Discord invite: "..DISCORD_INVITE.." (copy manually)" end end) -- Draggable frame local dragToggle = false local dragInput = nil local dragStart = nil local startPos = nil local function updateDrag(inputObject) local delta = inputObject.Position - dragStart frame.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end frame.InputBegan:Connect(function(inputObject) if inputObject.UserInputType == Enum.UserInputType.MouseButton1 or inputObject.UserInputType == Enum.UserInputType.Touch then dragToggle = true dragStart = inputObject.Position startPos = frame.Position dragInput = inputObject inputObject.Changed:Connect(function() if inputObject.UserInputState == Enum.UserInputState.End then dragToggle = false end end) end end) UserInputService.InputChanged:Connect(function(inputObject) if inputObject == dragInput and dragToggle then updateDrag(inputObject) end end) -- Close with Escape UserInputService.InputBegan:Connect(function(inputObj, gameProcessed) if gameProcessed then return end if inputObj.KeyCode == Enum.KeyCode.Escape then screenGui:Destroy() end end)