Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[By MaxproGlitcher Discord:maxproglitcher
- -- This is the real Back Up One from Server Finder Deluxe
- -- Site Web official: https://github.com/MaxproGlitcher/Server_Finder_Deluxe_Back_Up
- -- Server Finder Deluxe is original Script software created and developed by MaxproGlitcher.
- -- Copying, modifying, redistributing, reselling, republishing, or any other use of all or part of this project without prior written
- -- permission is strictly prohibited.
- -- This software is protected by applicable copyright laws. Any unauthorized use may result in the removal of the affected content as
- -- well as appropriate legal action.
- -- Server Finder Deluxe® – Developed by MaxproGlitcher.
- -- © 2026 MaxproGlitcher. All rights reserved.
- -- Official version Back Up only.
- _____ ________.__ .__ __ .__
- / \ _____ ___ ________________ ____ / _____/| | |__|/ |_ ____ | |__ ___________
- / \ / \\__ \ \ \/ /\____ \_ __ \/ _ \/ \ ___| | | \ __\/ ___\| | \_/ __ \_ __ \
- / Y \/ __ \_> < | |_> > | \( <_> ) \_\ \ |_| || | \ \___| Y \ ___/| | \/
- \____|__ (____ /__/\_ \| __/|__| \____/ \______ /____/__||__| \___ >___| /\___ >__|
- \/ \/ \/|__| \/ \/ \/ \/
- --------------------------------------------------------------------------------------------------------------------
- _____ ______ _ _ _____ _
- / ____| | ____(_) | | | __ \ | |
- | (___ ___ _ ____ _____ _ __ | |__ _ _ __ __| | ___ _ __ | | | | ___| |_ ___ _____
- \___ \ / _ \ '__\ \ / / _ \ '__| | __| | | '_ \ / _` |/ _ \ '__| | | | |/ _ \ | | | \ \/ / _ \
- ____) | __/ | \ V / __/ | | | | | | | | (_| | __/ | | |__| | __/ | |_| |> < __/
- |_____/ \___|_| \_/ \___|_| |_| |_|_| |_|\__,_|\___|_| |_____/ \___|_|\__,_/_/\_\___|
- ]]
- --------------------------------------------------------------------------------------------------------------------
- if not game:IsLoaded() then
- game.Loaded:Wait()
- end
- -- ════════════════════════════════════════
- -- (Chargement/Décoration)
- -- ════════════════════════════════════════
- local TweenService = game:GetService("TweenService")
- local Lighting = game:GetService("Lighting")
- local CoreGui = game:GetService("CoreGui")
- local LocalizationService = game:GetService("LocalizationService")
- local gui = Instance.new("ScreenGui", game.CoreGui)
- gui.Parent = CoreGui
- gui.IgnoreGuiInset = true
- gui.ResetOnSpawn = false
- local blur = Instance.new("BlurEffect")
- blur.Parent = Lighting
- blur.Size = 12
- local main = Instance.new("Frame")
- main.Parent = gui
- main.Size = UDim2.new(0, 420, 0, 410)
- main.Position = UDim2.new(0.5, -210, 0.5, -205)
- main.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
- main.BorderSizePixel = 0
- Instance.new("UICorner", main).CornerRadius = UDim.new(0, 12)
- local title = Instance.new("TextLabel")
- title.Parent = main
- title.BackgroundTransparency = 1
- title.Size = UDim2.new(1, 0, 0, 50)
- title.Position = UDim2.new(0, 0, 0, 10)
- title.Font = Enum.Font.GothamBlack
- title.TextSize = 40
- title.TextColor3 = Color3.fromRGB(240, 240, 240)
- title.Text = "Server Finder Deluxe"
- local versionLabel = Instance.new("TextLabel")
- versionLabel.Parent = main
- versionLabel.BackgroundTransparency = 1
- versionLabel.Size = UDim2.new(1, 0, 0, 20)
- versionLabel.Position = UDim2.new(0, 0, 0, 70)
- versionLabel.Font = Enum.Font.GothamMedium
- versionLabel.TextSize = 16
- versionLabel.TextColor3 = Color3.fromRGB(210, 210, 210)
- versionLabel.Text = "Ultimate Server Scanner"
- local status = Instance.new("TextLabel")
- status.Parent = main
- status.BackgroundTransparency = 1
- status.Size = UDim2.new(1, 0, 0, 30)
- status.Position = UDim2.new(0, 0, 0, 105)
- status.Font = Enum.Font.Gotham
- status.TextSize = 18
- status.TextColor3 = Color3.fromRGB(200, 200, 200)
- status.Text = "Loading..."
- local percent = Instance.new("TextLabel")
- percent.Parent = main
- percent.BackgroundTransparency = 1
- percent.Size = UDim2.new(1, 0, 0, 25)
- percent.Position = UDim2.new(0, 0, 0, 135)
- percent.Font = Enum.Font.GothamBold
- percent.TextSize = 20
- percent.TextColor3 = Color3.fromRGB(200, 200, 200)
- percent.Text = "0%"
- local barBack = Instance.new("Frame")
- barBack.Parent = main
- barBack.Size = UDim2.new(0, 280, 0, 8)
- barBack.Position = UDim2.new(0.5, -140, 0, 165)
- barBack.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
- barBack.BorderSizePixel = 0
- Instance.new("UICorner", barBack).CornerRadius = UDim.new(0, 4)
- local bar = Instance.new("Frame")
- bar.Parent = barBack
- bar.Size = UDim2.new(0, 0, 1, 0)
- bar.BackgroundColor3 = Color3.fromRGB(180, 180, 180)
- bar.BorderSizePixel = 0
- Instance.new("UICorner", bar).CornerRadius = UDim.new(0, 4)
- local CopyGithubSFD = Instance.new("TextButton")
- CopyGithubSFD.Parent = barBack
- CopyGithubSFD.Size = UDim2.new(0, 120, 0, 25)
- CopyGithubSFD.Position = UDim2.new(0.5, -60, -3, -30)
- CopyGithubSFD.BackgroundColor3 = barBack.BackgroundColor3
- CopyGithubSFD.BorderSizePixel = 0
- CopyGithubSFD.Text = "Copy GitHub"
- CopyGithubSFD.Font = Enum.Font.GothamBold
- CopyGithubSFD.TextSize = 14
- CopyGithubSFD.TextColor3 = Color3.fromRGB(220, 220, 220)
- Instance.new("UICorner", CopyGithubSFD).CornerRadius = UDim.new(0, 6)
- local githubLink = "https://github.com/MaxproGlitcher/Server_Finder_Deluxe_Back_Up"
- CopyGithubSFD.MouseButton1Click:Connect(function()
- pcall(function()
- if setclipboard then
- setclipboard(githubLink)
- elseif toclipboard then
- toclipboard(githubLink)
- else
- warn("Your Exploit don't supported this function check!!!")
- end
- end)
- end)
- local infoLabel = Instance.new("TextLabel")
- infoLabel.Parent = main
- infoLabel.BackgroundTransparency = 1
- infoLabel.Size = UDim2.new(0, 360, 0, 160)
- infoLabel.Position = UDim2.new(0.5, -180, 0, 190)
- infoLabel.Font = Enum.Font.GothamMedium
- infoLabel.TextSize = 12
- infoLabel.TextColor3 = Color3.fromRGB(180, 180, 180)
- infoLabel.TextXAlignment = Enum.TextXAlignment.Center
- infoLabel.TextYAlignment = Enum.TextYAlignment.Top
- infoLabel.TextWrapped = true
- local translations = {
- ["fr"] = "Server Finder Deluxe ne prend aucune information sur votre compte (pas de trackers d'activité ou de dépenses Robux, etc.) et ne contient aucun script malveillant. Ce projet est open source pour vous prouver qu'il est sûr à utiliser.\n\nServer Finder Deluxe se réserve le droit de DMCA si vous utilisez notre nom pour vendre ou diffuser une version malveillante sur le marché des scripts.\n\nSinon, bonne utilisation Guys ! Merci d'utiliser Server Finder Deluxe !!!",
- ["en"] = "Server Finder Deluxe takes zero information from your account (no trackers on what you play, what you pay with your robux, etc.) and contains no malicious scripts. This project is open source to prove it is safe to use.\n\nServer Finder Deluxe reserves the right to DMCA if you use the name Server Finder Deluxe to sell or distribute a malicious version on the script market.\n\nOtherwise, happy tracking guys! Thanks for using Server Finder Deluxe !!!",
- ["es"] = "Server Finder Deluxe no toma ninguna información de su cuenta (sin rastreadores de lo que juega o gasta con sus robux, etc.) y no contiene scripts maliciosos. Este proyecto es de código abierto para demostrar que es seguro.\n\nServer Finder Deluxe se reserva el derecho de DMCA si usa el nombre Server Finder Deluxe para vender o distribuir una versión maliciosa en el mercado de scripts.\n\n¡Disfrútenlo chicos! ¡Gracias por usar Server Finder Deluxe!",
- ["pt"] = "O Server Finder Deluxe não coleta nenhuma informação da sua conta (sem rastreadores do que você joga ou gasta com seus robux, etc.) e não contém scripts maliciosos. Este projeto é de código aberto para provar que é seguro.\n\nServer Finder Deluxe reserva-se o direito de DMCA se você usar o nome Server Finder Deluxe para vender ou distribuir uma versão maliciosa no mercado de scripts.\n\nAproveitem, pessoal! Obrigado por usar o Server Finder Deluxe!",
- ["tr"] = "Server Finder Deluxe hesabınızdan hiçbir bilgi almaz (ne oynadığınız, robux ile ne ödediğiniz vb. takip edilmez) ve kötü amaçlı yazılım içermez. Bu proje, güvenli olduğunu kanıtlamak için açık kaynaktır.\n\nServer Finder Deluxe ismini script piyasasında kötü amaçlı bir sürüm satmak veya dağıtmak için kullanırsanız, Server Finder Deluxe DMCA hakkını saklı tutar.\n\nBunun dışında, iyi kullanımlar millet! Server Finder Deluxe kullandığınız için teşekkürler !!!",
- ["it"] = "Server Finder Deluxe non prende alcuna informazione dal tuo account (nessun tracker su cosa giochi, cosa paghi con i tuoi robux, ecc.) e non contiene script dannosi. Questo progetto è open source per dimostrare che è sicuro da usare.\n\nServer Finder Deluxe si riserva il diritto di DMCA se utilizzi il nome Server Finder Deluxe per vendere o distribuire una versione dannosa sul mercato degli script.\n\nPer il resto, buon utilizzo ragazzi! Grazie per aver usato Server Finder Deluxe !!!",
- ["de"] = "Server Finder Deluxe sammelt keinerlei Informationen von Ihrem Konto (keine Tracker für Spiele oder Robux-Ausgaben usw.) und enthält keine schädlichen Skripte. Dieses Projekt ist Open-Source, um zu beweisen, dass es sicher ist.\n\nServer Finder Deluxe behält sich das Recht auf DMCA vor, wenn Sie den Namen Server Finder Deluxe verwenden, um eine schädliche Version auf dem Skriptmarkt zu verkaufen oder zu verbreiten.\n\nViel Spaß, Leute! Vielen Dank für die Nutzung von Server Finder Deluxe!",
- ["ar"] = "لا يأخذ Server Finder Deluxe أي معلومات من حسابك (لا توجد أدوات تتبع لما تلعبه، أو ما تدفعه مقابل الـ Robux الخاص بك، وما إلى ذلك) ولا يحتوي على أي برمجيات خبيثة. هذا المشروع مفتوح المصدر لإثبات أنه آمن للاستخدام.\n\nيحتفظ Server Finder Deluxe بالحق في تقديم شكوى DMCA إذا استخدمت اسم Server Finder Deluxe لبيع أو توزيع نسخة خبيثة في سوق السكربتات.\n\nبخلاف ذلك، استمتعوا بالاستخدام يا شباب! شكرًا لاستخدامكم Server Finder Deluxe !!!",
- ["ja"] = "Server Finder Deluxeは、アカウントからいかなる情報(何をプレイしているか、Robuxで何を支払ったかのトラッカーなど)も取得せず、悪意のあるスクリプトも含んでいません。このプロジェクトは、安全に使用できることを証明するためにオープンソース化されています。\n\nスクリプト市場で悪意のあるバージョンを販売または配布するためにServer Finder Deluxeの名前を使用した場合、Server Finder DeluxeはDMCAの権利を留保します。\n\nそれでは、皆さん楽しんで使ってください!Server Finder Deluxeをご利用いただきありがとうございます!!!",
- ["ru"] = "Server Finder Deluxe не собирает информацию о вашей учетной записи (нет трекеров активности, расходов Robux и т. д.) и не содержит вредоносных скриптов. Этот проект является открытым исходным кодом, чтобы доказать его безопасность.\n\nServer Finder Deluxe оставляет за собой право на подачу жалобы DMCA, если вы используете название Server Finder Deluxe для продажи или распространения вредоносной версии на рынке скриптов.\n\nВ остальном, приятного использования, ребята! Спасибо за использование Server Finder Deluxe !!!",
- ["zh"] = "Server Finder Deluxe 不会从 your 账户中获取任何信息(没有关于您玩什么、用 Robux 支付什么的追踪器等),并且不包含任何恶意脚本。该项目是开源的,以证明其可以安全使用。\n\n如果您使用 Server Finder Deluxe 的名称在脚本市场上销售或分发恶意版本,Server Finder Deluxe 保留追究 DMCA 版权投诉的权利。\n\n除此之外,祝大家使用愉快!感谢您使用 Server Finder Deluxe !!!"
- }
- local userLanguage = "en"
- pcall(function()
- local locale = LocalizationService.RobloxLocaleId:sub(1, 2):lower()
- if translations[locale] then
- userLanguage = locale
- end
- end)
- infoLabel.Text = translations[userLanguage]
- local credit = Instance.new("TextLabel")
- credit.Parent = main
- credit.BackgroundTransparency = 1
- credit.Size = UDim2.new(0, 200, 0, 20)
- credit.Position = UDim2.new(1, -210, 1, -25)
- credit.Font = Enum.Font.Gotham
- credit.TextSize = 14
- credit.TextColor3 = Color3.fromRGB(170, 170, 170)
- credit.TextXAlignment = Enum.TextXAlignment.Right
- credit.Text = "By MaxproGlitcher"
- local discord = Instance.new("TextLabel")
- discord.Parent = main
- discord.BackgroundTransparency = 1
- discord.Size = UDim2.new(0, 220, 0, 20)
- discord.Position = UDim2.new(0, 10, 1, -25)
- discord.Font = Enum.Font.Gotham
- discord.TextSize = 14
- discord.TextColor3 = Color3.fromRGB(170, 170, 170)
- discord.TextXAlignment = Enum.TextXAlignment.Left
- discord.Text = "Discord : maxproglitcher"
- local function GetEasterDate(year)
- local A = math.floor(year/100)
- local B = math.floor((13+8*A)/25)
- local C = (15-B+A-math.floor(A/4))%30
- local D = (4+A-math.floor(A/4))%7
- local E = (19*(year%19)+C)%30
- local F = (2*(year%4)+4*(year%7)+6*E+D)%7
- local G = 22 + E + F
- if E == 29 and F == 6 then
- return 4, 19
- elseif E == 28 and F == 6 then
- return 4, 18
- elseif G > 31 then
- return 4, G-31
- else
- return 3, G
- end
- end
- local isXmas, isHalloween, isNewYear, isEaster, isValentine = false, false, false, false, false
- local success, err = pcall(function()
- local date = os.date("*t")
- local emonth, eday = GetEasterDate(date.year)
- isXmas = date.month == 12 and date.day >= 15 and date.day <= 29
- isHalloween = (date.month == 10 and date.day >= 22) or (date.month == 11 and date.day <= 1)
- isNewYear = (date.month == 12 and date.day >= 30) or (date.month == 1 and date.day <= 2)
- isValentine = (date.month == 2 and date.day == 14)
- isEaster = (date.month == emonth and date.day == eday)
- end)
- if not success then
- warn("Date system error for loading gui:", err)
- end
- local function decorate(startEmoji, endEmoji)
- title.Text = startEmoji .. " Server Finder Deluxe " .. endEmoji
- title.TextSize = 32
- end
- local function cycle(colors)
- local i = 1
- task.spawn(function()
- while gui and gui.Parent do
- local success, err = pcall(function()
- local c = colors[i]
- title.TextColor3 = c
- versionLabel.TextColor3 = c
- status.TextColor3 = c
- credit.TextColor3 = c
- percent.TextColor3 = c
- bar.BackgroundColor3 = c
- infoLabel.TextColor3 = c
- if CopyGithubSFD then
- CopyGithubSFD.TextColor3 = c
- CopyGithubSFD.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
- end
- if discord then
- discord.TextColor3 = c
- end
- i = i % #colors + 1
- end)
- if not success then
- warn("Cycle color error:", err)
- end
- task.wait(0.5)
- end
- end)
- end
- if isXmas then
- decorate("🎄", "🎄")
- cycle({
- Color3.fromRGB(0,255,0),
- Color3.fromRGB(255,0,0),
- Color3.fromRGB(255,255,255)})
- elseif isHalloween then
- decorate("🎃", "🎃")
- cycle({
- Color3.fromRGB(0,0,0),
- Color3.fromRGB(255,165,0)})
- elseif isNewYear then
- decorate("🎉", "🎉")
- cycle({
- Color3.fromRGB(255,255,0),
- Color3.fromRGB(0,0,0)})
- elseif isEaster then
- decorate("🐰", "🐰")
- cycle({
- Color3.fromRGB(216,191,216),
- Color3.fromRGB(255,182,193),
- Color3.fromRGB(193,225,193),
- Color3.fromRGB(173,216,230)
- })
- elseif isValentine then
- decorate("💗", "💗")
- cycle({
- Color3.fromRGB(0,0,0),
- Color3.fromRGB(255,85,127)})
- end
- local loading = true
- pcall(function()
- task.spawn(function()
- while loading and status and status.Parent do
- for i = 1, 3 do
- if not loading then break end
- status.Text = "Loading" .. string.rep(".", i)
- task.wait(0.4)
- end
- if not loading then break end
- status.Text = "Loading"
- task.wait(0.4)
- end
- end)
- end)
- pcall(function()
- local duration = 2
- TweenService:Create(
- bar,
- TweenInfo.new(duration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
- { Size = UDim2.new(1, 0, 1, 0) }
- ):Play()
- for i = 0, 100 do
- if not percent or not percent.Parent then break end
- percent.Text = i .. "%"
- task.wait(duration / 100)
- end
- end)
- loading = false
- status.Text = "Success"
- task.wait(0.30)
- if blur then
- blur:Destroy()
- end
- if gui then
- gui:Destroy()
- end
- --------------------------------------------------------------------------------------------------------------------
- if _G.SFD_LOADED and not _G.SFD_CAN_RELOAD then
- -- error("Server Finder Deluxe is already running!", 0)
- return
- end
- _G.SFD_LOADED = true
- _G.SFD_CAN_RELOAD = false
- if not game:IsLoaded() then game.Loaded:Wait() end
- -- ════════════════════════════════════════
- -- (Compatibilité getgenv)
- -- ════════════════════════════════════════
- pcall(function()
- if game:GetService("CoreGui"):FindFirstChild("incognito") then
- local oldstring = loadstring
- getfenv().loadstring = function(code)
- local source = code
- source = source:gsub("(%a+)%s*([%+%-%*/])=%s*", "%1 = %1 %2 ")
- return oldstring(source)
- end
- end
- if not getgenv then
- getfenv().getgenv = function(layer)
- return getfenv(layer)
- end
- end
- end)
- getgenv().NextServer = nil
- getgenv().HasScannedAll = false
- -- ════════════════════════════════════════
- -- (Service/Info)
- -- ════════════════════════════════════════
- Services = setmetatable({}, {
- __index = function(self, name)
- local success, service = pcall(function()
- return game:GetService(name)
- end)
- if success then
- rawset(self, name, service)
- return service
- end
- error("Invalid Service: " .. tostring(name))
- end
- })
- HttpService = (Services.HttpService)
- TeleportService = (Services.TeleportService)
- Players = (Services.Players)
- LocalPlayer = (Players.LocalPlayer)
- CoreGui = (Services.CoreGui)
- GuiService = (Services.GuiService)
- PlayerGui = (LocalPlayer:WaitForChild("PlayerGui"))
- RobloxGui = (CoreGui:WaitForChild("RobloxGui"))
- UserInputService = (Services.UserInputService)
- RunService = (Services.RunService)
- LocalizationService = (Services.LocalizationService)
- TweenService = (Services.TweenService)
- VRService = (Services.VRService)
- CaptureService = (Services.CaptureService)
- SoundService = (Services.SoundService)
- Stats = (Services.Stats)
- MarketplaceService = (Services.MarketplaceService)
- clipBoard = (setclipboard) or (toclipboard) or (set_clipboard) or (Clipboard and Clipboard.set)
- setthreadidentity = (setthreadidentity) or (syn and syn.set_thread_identity) or (syn_context_set) or (setthreadcontext)
- local function v8(v6)
- local v7 = false
- pcall(function()
- if not setclipboard then
- if syn and syn.set_clipboard then
- syn.set_clipboard(v6)
- v7 = true
- end
- else
- setclipboard(v6)
- v7 = true
- end
- end)
- return v7
- end
- local function HttpGet(url)
- local ok, status, body = pcall(function()
- if request then
- local res = request({Url = url, Method = "GET"})
- return res.StatusCode, res.Body
- elseif http_request then
- local res = http_request({Url = url, Method = "GET"})
- return res.StatusCode, res.Body
- elseif syn and syn.request then
- local res = syn.request({Url = url, Method = "GET"})
- return res.StatusCode, res.Body
- end
- return 200, game:HttpGet(url)
- end)
- if ok then
- return status, body
- end
- return nil, nil
- end
- -- ═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
- -- (Service File / Détection combatibilité des appareilles disponible pour exercution du script / Caméra / Service Téléport)
- -- ═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
- writefile = writefile or getgenv().writefile
- makefolder = makefolder or getgenv().makefolder
- readfile = readfile or getgenv().readfile
- delfolder = delfolder or getgenv().delfolder
- delfile = delfile or getgenv().delfile
- listfiles = listfiles or getgenv().listfiles
- isfolder = isfolder or getgenv().isfolder
- isfile = isfile or getgenv().isfile
- local camera = workspace.CurrentCamera or workspace:FindFirstChildOfClass("Camera")
- if not camera then
- repeat task.wait() camera = workspace.CurrentCamera until camera
- end
- local SCREEN_SIZE = camera.ViewportSize
- local platform = UserInputService:GetPlatform()
- local IsOnMobile = (function() if platform == Enum.Platform.IOS or platform == Enum.Platform.Android or platform == Enum.Platform.AndroidTV or platform == Enum.Platform.Chromecast or platform == Enum.Platform.MetaOS then
- return true
- end
- if platform == Enum.Platform.None then
- return UserInputService.TouchEnabled and not (UserInputService.KeyboardEnabled or UserInputService.MouseEnabled)
- end
- return false
- end)()
- local IsOnPC = (function() if platform == Enum.Platform.Windows or platform == Enum.Platform.OSX or platform == Enum.Platform.Linux or platform == Enum.Platform.SteamOS or platform == Enum.Platform.UWP or platform == Enum.Platform.DOS or platform == Enum.Platform.BeOS then
- return true
- end
- if platform == Enum.Platform.None then
- return UserInputService.KeyboardEnabled or UserInputService.MouseEnabled
- end
- return false
- end)()
- local VREnabled = game:GetService("VRService").VREnabled
- local Syn = getfenv().syn
- local fenv=getfenv()
- local HttpService_JSONEncode = game:GetService("HttpService"):JSONEncode({
- test = 1,
- })
- local HttpService_JSONDecode = game:GetService("HttpService"):JSONDecode("{\"test\":1}")
- local HttpService_GenerateGUID = game:GetService("HttpService"):GenerateGUID(false)
- local HttpService_UrlEncode = game:GetService("HttpService"):UrlEncode("test value")
- local New = Instance.new("Part", nil)
- local queueteleport = (syn and syn.queue_on_teleport) or queue_on_teleport or (fluxus and fluxus.queue_on_teleport)
- local httprequest = (syn and syn.request) or (http and http.request) or http_request or (fluxus and fluxus.request) or request
- --------------------------------------------------------------------------------------------------------------------
- -- ══════════════════════════════════════════════════════════
- -- (Détection HTTP Function / Détection GetGenv / Request)
- -- ══════════════════════════════════════════════════════════
- local hasGetGenv = false
- pcall(function()
- if typeof(getgenv) == "function" then
- hasGetGenv = true
- end
- end)
- local HttpService
- local httpServiceSuccess = false
- local jsonDecodeSuccess = false
- pcall(function()
- HttpService = game:GetService("HttpService")
- httpServiceSuccess = HttpService ~= nil
- end)
- pcall(function()
- if HttpService and typeof(HttpService.JSONDecode) == "function" then
- local result = HttpService:JSONDecode('{"success":true}')
- jsonDecodeSuccess = result ~= nil and result.success == true
- end
- end)
- local requestFunc
- local httpSuccess = false
- pcall(function()
- if syn and typeof(syn.request) == "function" then
- requestFunc = syn.request
- elseif http and typeof(http.request) == "function" then
- requestFunc = http.request
- elseif typeof(http_request) == "function" then
- requestFunc = http_request
- elseif fluxus and typeof(fluxus.request) == "function" then
- requestFunc = fluxus.request
- elseif typeof(request) == "function" then
- requestFunc = request
- end
- end)
- if requestFunc then
- httpSuccess = true
- end
- local translations = {
- fr = {
- getgenv = "La fonction getgenv est introuvable ! ⚠️",
- http = "Aucune fonction HTTP supportée trouvée ! ⚠️",
- request = "Aucune fonction request supportée trouvée ! ⚠️",
- httpService = "Le service HttpService est introuvable ! ⚠️",
- jsonDecode = "La fonction JSONDecode est indisponible ! ⚠️"
- },
- en = {
- getgenv = "getgenv function not found! ⚠️",
- http = "No supported HTTP request function found! ⚠️",
- request = "No supported request function found! ⚠️",
- httpService = "HttpService service not found! ⚠️",
- jsonDecode = "JSONDecode function unavailable! ⚠️"
- },
- es = {
- getgenv = "¡Función getgenv no encontrada! ⚠️",
- http = "¡No se encontró ninguna función HTTP compatible! ⚠️",
- request = "¡No se encontró ninguna función request compatible! ⚠️",
- httpService = "¡No se encontró el servicio HttpService! ⚠️",
- jsonDecode = "¡La función JSONDecode no está disponible! ⚠️"
- },
- pt = {
- getgenv = "Função getgenv não encontrada! ⚠️",
- http = "Nenhuma função HTTP suportada encontrada! ⚠️",
- request = "Nenhuma função request suportada encontrada! ⚠️",
- httpService = "Serviço HttpService não encontrado! ⚠️",
- jsonDecode = "Função JSONDecode indisponível! ⚠️"
- },
- tr = {
- getgenv = "getgenv işlevi bulunamadı! ⚠️",
- http = "Desteklenen HTTP isteği işlevi bulunamadı! ⚠️",
- request = "Desteklenen request işlevi bulunamadı! ⚠️",
- httpService = "HttpService servisi bulunamadı! ⚠️",
- jsonDecode = "JSONDecode işlevi kullanılamıyor! ⚠️"
- },
- it = {
- getgenv = "Funzione getgenv non trovata! ⚠️",
- http = "Nessuna funzione HTTP supportata trovata! ⚠️",
- request = "Nessuna funzione request supportata trovata! ⚠️",
- httpService = "Servizio HttpService non trovato! ⚠️",
- jsonDecode = "Funzione JSONDecode non disponibile! ⚠️"
- },
- de = {
- getgenv = "getgenv-Funktion nicht gefunden! ⚠️",
- http = "Keine unterstützte HTTP-Anfragefunktion gefunden! ⚠️",
- request = "Keine unterstützte request-Funktion gefunden! ⚠️",
- httpService = "HttpService-Dienst nicht gefunden! ⚠️",
- jsonDecode = "JSONDecode-Funktion nicht verfügbar! ⚠️"
- },
- ar = {
- getgenv = "لم يتم العثور على دالة getgenv! ⚠️",
- http = "لم يتم العثور على أي دالة HTTP مدعومة! ⚠️",
- request = "لم يتم العثور على أي دالة request مدعومة! ⚠️",
- httpService = "لم يتم العثور على خدمة HttpService! ⚠️",
- jsonDecode = "دالة JSONDecode غير متاحة! ⚠️"
- },
- ja = {
- getgenv = "getgenv 関数が見つかりません!⚠️",
- http = "サポートされているHTTPリクエスト機能が見つかりません!⚠️",
- request = "サポートされているrequest関数が見つかりません!⚠️",
- httpService = "HttpService が見つかりません!⚠️",
- jsonDecode = "JSONDecode 関数が利用できません!⚠️"
- },
- ru = {
- getgenv = "Функция getgenv не найдена! ⚠️",
- http = "Поддерживаемая функция HTTP-запроса не найдена! ⚠️",
- request = "Поддерживаемая функция request не найдена! ⚠️",
- httpService = "Служба HttpService не найдена! ⚠️",
- jsonDecode = "Функция JSONDecode недоступна! ⚠️"
- },
- zh = {
- getgenv = "未找到 getgenv 函数!⚠️",
- http = "未找到受支持的HTTP请求函数!⚠️",
- request = "未找到受支持的request函数!⚠️",
- httpService = "未找到 HttpService 服务!⚠️",
- jsonDecode = "JSONDecode 函数不可用!⚠️"
- }
- }
- local function getTranslatedMessage(key)
- local langCode = (LocalizationService.RobloxLocaleId or "en"):sub(1, 2)
- local language = translations[langCode] or translations.en
- return language[key] or translations.en[key] or key
- end
- local NotificationLib = {
- _notifications = {},
- _theme = {
- primaryColor = Color3.fromRGB(30, 30, 30),
- textColor = Color3.fromRGB(255, 255, 255),
- font = Enum.Font.GothamSemibold,
- cornerRadius = UDim.new(0, 8)
- },
- _settings = {
- duration = 4,
- spacing = 12,
- fadeTime = 0.28,
- slideDistance = 18
- },
- _icons = {
- info = "rbxassetid://9405926389"
- }
- }
- function NotificationLib:_init()
- if not self._container then
- self._container = Instance.new("ScreenGui")
- self._container.Name = "NotificationLibrary"
- self._container.ResetOnSpawn = false
- self._container.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
- self._container.Parent = game:GetService("CoreGui")
- end
- end
- function NotificationLib:_calculatePosition(i)
- return UDim2.new(
- 1,
- -24,
- 1,
- -24 - (i - 1) * (90 + self._settings.spacing)
- )
- end
- function NotificationLib:_animateOut(frame)
- local tween = TweenService:Create(
- frame,
- TweenInfo.new(self._settings.fadeTime, Enum.EasingStyle.Quad),
- {
- Position = frame.Position + UDim2.new(0, 0, 0, self._settings.slideDistance),
- BackgroundTransparency = 1
- }
- )
- tween:Play()
- tween.Completed:Connect(function()
- if frame.Parent then
- frame:Destroy()
- end
- end)
- end
- function NotificationLib:Notify(opt)
- self:_init()
- opt = opt or {}
- local frame = Instance.new("Frame")
- frame.Size = UDim2.new(0, 340, 0, 90)
- frame.AnchorPoint = Vector2.new(1, 1)
- frame.Position = self:_calculatePosition(#self._notifications + 1)
- frame.BackgroundColor3 = self._theme.primaryColor
- frame.Parent = self._container
- Instance.new("UICorner", frame).CornerRadius = self._theme.cornerRadius
- local title = Instance.new("TextLabel", frame)
- title.Text = opt.Title or "Notification"
- title.Font = self._theme.font
- title.TextColor3 = self._theme.textColor
- title.TextSize = 16
- title.TextXAlignment = Enum.TextXAlignment.Left
- title.BackgroundTransparency = 1
- title.Size = UDim2.new(1, -60, 0, 22)
- title.Position = UDim2.new(0, 48, 0, 10)
- local msg = Instance.new("TextLabel", frame)
- msg.Text = opt.Message or ""
- msg.Font = Enum.Font.Gotham
- msg.TextColor3 = self._theme.textColor
- msg.TextSize = 14
- msg.TextWrapped = true
- msg.TextXAlignment = Enum.TextXAlignment.Left
- msg.BackgroundTransparency = 1
- msg.Size = UDim2.new(1, -60, 0, 48)
- msg.Position = UDim2.new(0, 48, 0, 30)
- table.insert(self._notifications, frame)
- task.delay(opt.Duration or self._settings.duration, function()
- if frame.Parent then
- self:_animateOut(frame)
- end
- end)
- end
- if not hasGetGenv then
- warn("[EXPLOIT WARNING] getgenv function not found")
- NotificationLib:Notify({
- Title = "EXPLOIT WARNING",
- Message = getTranslatedMessage("getgenv"),
- Duration = 5
- })
- end
- if not httpSuccess then
- warn("[HTTP WARNING] No supported HTTP request function found")
- NotificationLib:Notify({
- Title = "HTTP WARNING",
- Message = getTranslatedMessage("http"),
- Duration = 5
- })
- NotificationLib:Notify({
- Title = "REQUEST WARNING",
- Message = getTranslatedMessage("request"),
- Duration = 5
- })
- end
- if not httpServiceSuccess then
- warn("[HTTPSERVICE WARNING] HttpService not found")
- NotificationLib:Notify({
- Title = "HTTPSERVICE WARNING",
- Message = getTranslatedMessage("httpService"),
- Duration = 5
- })
- end
- if not jsonDecodeSuccess then
- warn("[JSONDECODE WARNING] JSONDecode unavailable")
- NotificationLib:Notify({
- Title = "JSONDECODE WARNING",
- Message = getTranslatedMessage("jsonDecode"),
- Duration = 5
- })
- end
- _G.MISSING_GETGENV = not hasGetGenv
- _G.MISSING_HTTP = not httpSuccess
- _G.MISSING_REQUEST = not httpSuccess
- _G.MISSING_HTTPSERVICE = not httpServiceSuccess
- _G.MISSING_JSONDECODE = not jsonDecodeSuccess
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
- -- (Protection Gui /Main Frame/Protection Logo / Détection Mouse and Touch /Resize Gui / headerFrame)
- -- ════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
- local screenGui = Instance.new("ScreenGui", game:GetService("CoreGui"))
- -- Essayer de créer un parent vers un emplacement protégé
- pcall(function()
- if get_hidden_gui then
- screenGui.Parent = get_hidden_gui()
- elseif gethui then
- screenGui.Parent = gethui()
- elseif not is_sirhurt_closure and syn and syn.protect_gui then
- syn.protect_gui(screenGui)
- screenGui.Parent = game:GetService("CoreGui")
- else
- screenGui.Parent = game:GetService("CoreGui")
- end
- end)
- if not screenGui.Parent then
- screenGui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui")
- end
- local mainFrame = Instance.new("Frame", screenGui)
- mainFrame.Name = "SFD_ProtectGui" .. tostring(math.random(100, 999))
- mainFrame.Size = UDim2.new(0, 650, 0, 500)
- mainFrame.Position = UDim2.new(0.5, 0, 0.5, 0)
- mainFrame.AnchorPoint = Vector2.new(0.5, 0.5)
- mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
- mainFrame.BorderSizePixel = 0
- mainFrame.ZIndex = 5
- local corner = Instance.new("UICorner")
- corner.Parent = mainFrame
- local headerFrame = Instance.new("Frame", mainFrame)
- headerFrame.Size = UDim2.new(1, -20, 0, 80)
- headerFrame.Position = UDim2.new(0, 10, 0, 50)
- headerFrame.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
- headerFrame.BorderSizePixel = 0
- headerFrame.ZIndex = 30
- headerFrame.Visible = false
- local currentServerTitle = Instance.new("TextLabel", headerFrame)
- currentServerTitle.Size = UDim2.new(1, -20, 0, 18)
- currentServerTitle.Position = UDim2.new(0, 10, 0, 4)
- currentServerTitle.BackgroundTransparency = 1
- currentServerTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
- currentServerTitle.Font = Enum.Font.Ubuntu
- currentServerTitle.TextSize = 13
- currentServerTitle.TextXAlignment = Enum.TextXAlignment.Left
- currentServerTitle.Text = "Current Server"
- currentServerTitle.ZIndex = 30
- local currentServerInfo = Instance.new("TextLabel", headerFrame)
- currentServerInfo.Size = UDim2.new(1, -20, 0, 55)
- currentServerInfo.Position = UDim2.new(0, 10, 0, 22)
- currentServerInfo.BackgroundTransparency = 1
- currentServerInfo.TextColor3 = Color3.fromRGB(255, 255, 255)
- currentServerInfo.Font = Enum.Font.Ubuntu
- currentServerInfo.TextSize = 13
- currentServerInfo.TextXAlignment = Enum.TextXAlignment.Left
- currentServerInfo.TextYAlignment = Enum.TextYAlignment.Top
- currentServerInfo.ZIndex = 30
- currentServerInfo.TextWrapped = true
- local function safeGetPing()
- local stats = game:GetService("Stats")
- local ok, value = pcall(function()
- local item = stats.Network.ServerStatsItem["Data Ping"]
- if item and item.GetValue then
- return item:GetValue()
- end
- return 0
- end)
- return ok and value or 0
- end
- local function safeGetFPS()
- local ok, value = pcall(function()
- if workspace.GetRealPhysicsFPS then
- return workspace:GetRealPhysicsFPS()
- end
- return 60
- end)
- return ok and value or 60
- end
- local function updateCurrentServerHeader()
- pcall(function()
- local ping = safeGetPing()
- local fps = safeGetFPS()
- local players = #game.Players:GetPlayers()
- local maxPlayers = game.Players.MaxPlayers
- local gameId = game.PlaceId
- local serverId = game.JobId
- currentServerInfo.Text =
- "Ping: " .. math.floor(ping) ..
- " FPS: " .. string.format("%.1f", fps) ..
- "\nPlayers: " .. players .. "/" .. maxPlayers ..
- "\nGame ID: " .. gameId ..
- "\nServer ID: " .. serverId
- end)
- end
- task.spawn(function()
- while task.wait(0.5) do
- updateCurrentServerHeader()
- end
- end)
- -- Détection des Screen
- if isOnMobile or SCREEN_SIZE.X < 800 then
- mainFrame.Size = UDim2.new(0, 800, 0, 600)
- else
- mainFrame.Size = UDim2.new(0, 650, 0, 500)
- end
- local dragging, dragInput, dragStart, startPos
- local function updateDrag(input)
- local delta = input.Position - dragStart
- local pos = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X,
- startPos.Y.Scale, startPos.Y.Offset + delta.Y)
- TweenService:Create(mainFrame, TweenInfo.new(0.15), {Position = pos}):Play()
- end
- mainFrame.InputBegan:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
- dragging = true
- dragStart = input.Position
- startPos = mainFrame.Position
- input.Changed:Connect(function()
- if input.UserInputState == Enum.UserInputState.End then dragging = false end
- end)
- end
- end)
- mainFrame.InputChanged:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
- dragInput = input
- end
- end)
- UserInputService.InputChanged:Connect(function(input)
- if dragging and input == dragInput then updateDrag(input) end
- end)
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════════════════
- -- (Logo Server Finder Deluxe / plus Events April Day)
- -- ════════════════════════════════════════════════════
- local TweenService = game:GetService("TweenService")
- local dir = "Server Finder Deluxe"
- local file = dir.."/sfd_logo.png"
- local link = "https://github.com/MaxproGlitcher/Server_Finder_Deluxe_Back_Up/blob/488db584b0491794ae10b06dfe2151004afc970d/Logo%20m%C3%A9tallique%20de%20Server%20Finder%20Deluxe.png"
- if not isfolder(dir) then
- makefolder(dir)
- end
- local logo = Instance.new("ImageLabel")
- logo.Name = "_SFD_Logo_"
- logo.Parent = mainFrame
- logo.Size = UDim2.new(0.8, 0, 0.8, 0)
- logo.AnchorPoint = Vector2.new(0.5, 0.5)
- logo.Position = UDim2.new(0.5, 0, 0.5, 0)
- logo.BackgroundTransparency = 1
- logo.ImageTransparency = 0.88
- logo.ScaleType = Enum.ScaleType.Fit
- logo.ZIndex = 20
- local TweenService = game:GetService("TweenService")
- local function isAprilFools()
- local d = os.date("*t")
- return d.day == 1 and d.month == 4
- end
- local function spinLogo()
- while logo and logo.Parent do
- local tween = TweenService:Create(
- logo,
- TweenInfo.new(2, Enum.EasingStyle.Linear),
- {Rotation = logo.Rotation + 360}
- )
- tween:Play()
- tween.Completed:Wait()
- end
- end
- local function isValidAsset(asset)
- if not asset or asset == "" then
- return false
- end
- return string.find(asset, "rbxasset") ~= nil
- end
- local function downloadLogo()
- local ok, data = pcall(function()
- return game:HttpGet(link)
- end)
- if ok and data then
- if not isfolder(dir) then
- makefolder(dir)
- end
- writefile(file, data)
- end
- end
- local function getLogoAsset()
- if not isfile(file) then
- downloadLogo()
- task.wait(0.3)
- end
- local success, asset = pcall(function()
- return getcustomasset(file)
- end)
- if not success or not isValidAsset(asset) then
- warn("Logo invalide → re-download")
- if isfolder(dir) then
- delfolder(dir)
- task.wait()
- end
- makefolder(dir)
- downloadLogo()
- task.wait(0.3)
- local retry, newAsset = pcall(function()
- return getcustomasset(file)
- end)
- if retry and isValidAsset(newAsset) then
- return newAsset
- end
- return nil
- end
- return asset
- end
- local function loadLogo()
- local myAsset = getLogoAsset()
- if not myAsset then return end
- logo.Image = myAsset
- logo.Visible = true
- if isAprilFools() then
- task.spawn(spinLogo)
- end
- task.spawn(function()
- while task.wait(0.5) do
- if not mainFrame or not mainFrame.Parent then break end
- if not logo.Image or logo.Image == "" then
- local newAsset = getLogoAsset()
- if newAsset then
- logo.Image = newAsset
- end
- end
- logo.Visible = true
- logo.ZIndex = 20
- if not isAprilFools() then
- logo.ImageTransparency = 0.88
- logo.Position = UDim2.new(0.5, 0, 0.5, 0)
- logo.Rotation = 0
- end
- end
- end)
- end
- task.defer(loadLogo)
- --------------------------------------------------------------------------------------------------------------------
- -- ═════════════════════════════════════════
- -- (Message de bienvenu / plus décoration)
- -- ═════════════════════════════════════════
- local function GetEasterDate(year)
- local A = math.floor(year/100)
- local B = math.floor((13+8*A)/25)
- local C = (15-B+A-math.floor(A/4))%30
- local D = (4+A-math.floor(A/4))%7
- local E = (19*(year%19)+C)%30
- local F = (2*(year%4)+4*(year%7)+6*E+D)%7
- local G = 22 + E + F
- if E == 29 and F == 6 then
- return 4, 19
- elseif E == 28 and F == 6 then
- return 4, 18
- elseif G > 31 then
- return 4, G-31
- else
- return 3, G
- end
- end
- local isXmas, isNewYear, isEaster, isHalloween, isValentine = false, false, false, false, false
- local success, err = pcall(function()
- local date = os.date("*t")
- local emonth, eday = GetEasterDate(date.year)
- isXmas = date.month == 12 and date.day >= 15 and date.day <= 29
- isHalloween = (date.month == 10 and date.day >= 22) or (date.month == 11 and date.day <= 1)
- isNewYear = (date.month == 12 and date.day >= 30) or (date.month == 1 and date.day <= 2)
- isValentine = (date.month == 2 and date.day == 14)
- isEaster = (date.month == emonth and date.day == eday)
- end)
- if not success then
- warn("Date system error for the welcome message:", err)
- end
- local holidayTexts = {
- Christmas = {
- ["fr"] = "🎄 Joyeux Noël !",
- ["en"] = "🎄 Merry Christmas!",
- ["es"] = "🎄 ¡Feliz Navidad!",
- ["pt"] = "🎄 Feliz Natal!",
- ["tr"] = "🎄 Mutlu Noeller!",
- ["it"] = "🎄 Buon Natale!",
- ["de"] = "🎄 Frohe Weihnachten!",
- ["ar"] = "🎄 عيد ميلاد سعيد!",
- ["ja"] = "🎄 メリークリスマス!",
- ["ru"] = "🎄 С Рождеством!",
- ["zh"] = "🎄 圣诞快乐!"
- },
- NewYear = {
- ["fr"] = "🎉 Bonne année !",
- ["en"] = "🎉 Happy New Year!",
- ["es"] = "🎉 ¡Feliz Año Nuevo!",
- ["pt"] = "🎉 Feliz Ano Novo!",
- ["tr"] = "🎉 Mutlu Yıllar!",
- ["it"] = "🎉 Buon Anno!",
- ["de"] = "🎉 Frohes Neues Jahr!",
- ["ar"] = "🎉 سنة جديدة سعيدة!",
- ["ja"] = "🎉 明けましておめでとう!",
- ["ru"] = "🎉 С Новым годом!",
- ["zh"] = "🎉 新年快乐!"
- },
- Easter = {
- ["fr"] = "🐰 Joyeuses Pâques !",
- ["en"] = "🐰 Happy Easter!",
- ["es"] = "🐰 ¡Feliz Pascua!",
- ["pt"] = "🐰 Feliz Páscoa!",
- ["tr"] = "🐰 Mutlu Paskalyalar!",
- ["it"] = "🐰 Buona Pasqua!",
- ["de"] = "🐰 Frohe Ostern!",
- ["ar"] = "🐰 عيد فصح سعيد!",
- ["ja"] = "🐰 ハッピーイースター!",
- ["ru"] = "🐰 С Пасхой!",
- ["zh"] = "🐰 复活节快乐!"
- },
- Halloween = {
- ["fr"] = "🎃 Joyeux Halloween !",
- ["en"] = "🎃 Happy Halloween!",
- ["es"] = "🎃 ¡Feliz Halloween!",
- ["pt"] = "🎃 Feliz Dia das Bruxas!",
- ["tr"] = "🎃 Mutlu Cadılar Bayramı!",
- ["it"] = "🎃 Buon Halloween!",
- ["de"] = "🎃 Frohes Halloween!",
- ["ar"] = "🎃 عيد هالوين سعيد!",
- ["ja"] = "🎃 ハッピーハロウィン!",
- ["ru"] = "🎃 С Хэллоуином!",
- ["zh"] = "🎃 万圣节快乐!"
- },
- Valentine = {
- ["fr"] = "💖 Bonne Saint-Valentin !",
- ["en"] = "💖 Happy Valentine's Day!",
- ["es"] = "💖 ¡Feliz Día de San Valentín!",
- ["pt"] = "💖 Feliz Dia dos Namorados!",
- ["tr"] = "💖 Sevgililer Gününüz Kutlu Olsun!",
- ["it"] = "💖 Buon San Valentino!",
- ["de"] = "💖 Alles Gute zum Valentinstag!",
- ["ar"] = "💖 عيد حب سعيد!",
- ["ja"] = "💖 ハッピーバレンタイン!",
- ["ru"] = "💖 С Днем Святого Валентина!",
- ["zh"] = "💖 情人节快乐!"
- },
- Welcome = {
- ["fr"] = "👋 Bienvenue sur Server Finder Deluxe !",
- ["en"] = "👋 Welcome to Server Finder Deluxe!",
- ["es"] = "👋 ¡Bienvenido a Server Finder Deluxe!",
- ["pt"] = "👋 Bem-vindo ao Server Finder Deluxe!",
- ["tr"] = "👋 Server Finder Deluxe'a Hoş Geldiniz!",
- ["it"] = "👋 Benvenuto su Server Finder Deluxe!",
- ["de"] = "👋 Willkommen bei Server Finder Deluxe!",
- ["ar"] = "👋 مرحبًا بك في Server Finder Deluxe!",
- ["ja"] = "👋 Server Finder Deluxeへようこそ!",
- ["ru"] = "👋 Добро пожаловать в Server Finder Deluxe!",
- ["zh"] = "👋 欢迎使用 Server Finder Deluxe!"
- }
- }
- local function getHolidayMessage(eventKey)
- local langCode = (LocalizationService.RobloxLocaleId or "en"):sub(1,2)
- local eventTable = holidayTexts[eventKey]
- return eventTable and (eventTable[langCode] or eventTable["en"]) or "Happy holidays! 🎉"
- end
- local NotificationLib = {
- _notifications = {},
- _theme = {
- primaryColor = Color3.fromRGB(30, 30, 30),
- textColor = Color3.fromRGB(255, 255, 255),
- font = Enum.Font.GothamSemibold,
- cornerRadius = UDim.new(0, 8)
- },
- _settings = {
- duration = 4,
- spacing = 12,
- fadeTime = 0.28,
- slideDistance = 18
- },
- _icons = { info = "rbxassetid://9405926389" }
- }
- function NotificationLib:_init()
- if not self._container then
- self._container = Instance.new("ScreenGui")
- self._container.Name = "NotificationLibrary"
- self._container.ResetOnSpawn = false
- self._container.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
- self._container.Parent = game:GetService("CoreGui")
- end
- end
- function NotificationLib:_calculatePosition(index)
- local spacing = self._settings.spacing
- local height = 90
- return UDim2.new(1, -24, 1, -24 - (index-1)*(height+spacing))
- end
- function NotificationLib:_animateOut(frame, callback)
- local tween = TweenService:Create(frame, TweenInfo.new(self._settings.fadeTime, Enum.EasingStyle.Quad), {
- Position = frame.Position + UDim2.new(0,0,0,self._settings.slideDistance),
- BackgroundTransparency = 1
- })
- tween:Play()
- tween.Completed:Connect(function()
- if frame and frame.Parent then frame:Destroy() end
- if callback then callback() end
- end)
- end
- function NotificationLib:Notify(opt)
- self:_init()
- opt = opt or {}
- local title = opt.Title or "Notification"
- local message = opt.Message or ""
- local duration = opt.Duration or self._settings.duration
- local frame = Instance.new("Frame")
- frame.BackgroundColor3 = self._theme.primaryColor
- frame.Size = UDim2.new(0, 340, 0, 90)
- frame.AnchorPoint = Vector2.new(1,1)
- frame.Position = self:_calculatePosition(#self._notifications + 1)
- frame.Parent = self._container
- Instance.new("UICorner", frame).CornerRadius = self._theme.cornerRadius
- local icon = Instance.new("ImageLabel", frame)
- icon.Image = self._icons.info
- icon.Size = UDim2.new(0,28,0,28)
- icon.Position = UDim2.new(0,12,0,12)
- icon.BackgroundTransparency = 1
- local titleLabel = Instance.new("TextLabel", frame)
- titleLabel.Font = self._theme.font
- titleLabel.TextColor3 = self._theme.textColor
- titleLabel.TextSize = 16
- titleLabel.TextXAlignment = Enum.TextXAlignment.Left
- titleLabel.Text = title
- titleLabel.BackgroundTransparency = 1
- titleLabel.Size = UDim2.new(1,-60,0,22)
- titleLabel.Position = UDim2.new(0,48,0,10)
- local msgLabel = Instance.new("TextLabel", frame)
- msgLabel.Font = Enum.Font.Gotham
- msgLabel.TextColor3 = self._theme.textColor
- msgLabel.TextSize = 14
- msgLabel.TextWrapped = true
- msgLabel.TextXAlignment = Enum.TextXAlignment.Left
- msgLabel.Text = message
- msgLabel.BackgroundTransparency = 1
- msgLabel.Size = UDim2.new(1,-60,0,48)
- msgLabel.Position = UDim2.new(0,48,0,30)
- table.insert(self._notifications, frame)
- task.delay(duration, function()
- if frame and frame.Parent then
- self:_animateOut(frame, function()
- for i,v in ipairs(self._notifications) do
- if v == frame then table.remove(self._notifications,i); break end
- end
- end)
- end
- end)
- end
- local eventName
- local message
- if isXmas then
- eventName = "🎄 Christmas"
- message = getHolidayMessage("Christmas")
- elseif isNewYear then
- eventName = "🎉 New Year"
- message = getHolidayMessage("NewYear")
- elseif isEaster then
- eventName = "🐰 Easter"
- message = getHolidayMessage("Easter")
- elseif isHalloween then
- eventName = "🎃 Halloween"
- message = getHolidayMessage("Halloween")
- elseif isValentine then
- eventName = "💖 Valentine's Day"
- message = getHolidayMessage("Valentine")
- else
- eventName = "👋 Welcome"
- message = getHolidayMessage("Welcome")
- end
- task.wait(2)
- NotificationLib:Notify({
- Title = eventName,
- Message = message,
- Duration = 6
- })
- task.wait(6)
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════
- -- (IdentifyExecutor)
- -- ════════════════════════════════════════
- local NotificationLib = {
- _notifications = {},
- _theme = {
- primaryColor = Color3.fromRGB(30, 30, 30),
- textColor = Color3.fromRGB(255, 255, 255),
- font = Enum.Font.GothamSemibold,
- cornerRadius = UDim.new(0, 8)
- },
- _settings = {
- duration = 4,
- spacing = 12,
- fadeTime = 0.28,
- slideDistance = 18
- },
- _icons = { info = "rbxassetid://9405926389" }
- }
- function NotificationLib:_init()
- if not self._container then
- self._container = Instance.new("ScreenGui")
- self._container.Name = "NotificationLibrary"
- self._container.ResetOnSpawn = false
- self._container.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
- self._container.Parent = game:GetService("CoreGui")
- end
- end
- function NotificationLib:_calculatePosition(index)
- local spacing = self._settings.spacing
- local height = 90
- return UDim2.new(1, -24, 1, -24 - (index-1)*(height+spacing))
- end
- function NotificationLib:_animateOut(frame, callback)
- local tween = TweenService:Create(frame, TweenInfo.new(self._settings.fadeTime, Enum.EasingStyle.Quad), {
- Position = frame.Position + UDim2.new(0,0,0,self._settings.slideDistance),
- BackgroundTransparency = 1
- })
- tween:Play()
- tween.Completed:Connect(function()
- if frame and frame.Parent then frame:Destroy() end
- if callback then callback() end
- end)
- end
- function NotificationLib:Notify(opt)
- self:_init()
- opt = opt or {}
- local title = opt.Title or "Notification"
- local message = opt.Message or ""
- local duration = opt.Duration or self._settings.duration
- local frame = Instance.new("Frame")
- frame.BackgroundColor3 = self._theme.primaryColor
- frame.Size = UDim2.new(0, 340, 0, 90)
- frame.AnchorPoint = Vector2.new(1,1)
- frame.Position = self:_calculatePosition(#self._notifications + 1)
- frame.Parent = self._container
- Instance.new("UICorner", frame).CornerRadius = self._theme.cornerRadius
- local icon = Instance.new("ImageLabel", frame)
- icon.Image = self._icons.info
- icon.Size = UDim2.new(0,28,0,28)
- icon.Position = UDim2.new(0,12,0,12)
- icon.BackgroundTransparency = 1
- local titleLabel = Instance.new("TextLabel", frame)
- titleLabel.Font = self._theme.font
- titleLabel.TextColor3 = self._theme.textColor
- titleLabel.TextSize = 16
- titleLabel.TextXAlignment = Enum.TextXAlignment.Left
- titleLabel.Text = title
- titleLabel.BackgroundTransparency = 1
- titleLabel.Size = UDim2.new(1,-60,0,22)
- titleLabel.Position = UDim2.new(0,48,0,10)
- local msgLabel = Instance.new("TextLabel", frame)
- msgLabel.Font = Enum.Font.Gotham
- msgLabel.TextColor3 = self._theme.textColor
- msgLabel.TextSize = 14
- msgLabel.TextWrapped = true
- msgLabel.TextXAlignment = Enum.TextXAlignment.Left
- msgLabel.Text = message
- msgLabel.BackgroundTransparency = 1
- msgLabel.Size = UDim2.new(1,-60,0,48)
- msgLabel.Position = UDim2.new(0,48,0,30)
- table.insert(self._notifications, frame)
- task.delay(duration, function()
- if frame and frame.Parent then
- self:_animateOut(frame, function()
- for i,v in ipairs(self._notifications) do
- if v == frame then table.remove(self._notifications,i); break end
- end
- end)
- end
- end)
- end
- task.spawn(function()
- local success, result = pcall(function()
- return identifyexecutor()
- end)
- local exploitName = "Unknown"
- if success and result and result ~= "" then
- exploitName = tostring(result)
- end
- NotificationLib:Notify({
- Title = "Exploit Detected",
- Message = "Exploit detected: " .. exploitName,
- Duration = 6
- })
- end)
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════
- -- (Tracker Game)
- -- ════════════════════════════════════════
- local langText = {
- ["fr"] = "Tracker Game 📡 : ",
- ["en"] = "Tracker Game 📡: ",
- ["es"] = "Juego rastreado 📡: ",
- ["pt"] = "Jogo rastreado 📡: ",
- ["tr"] = "İzlenen oyun 📡: ",
- ["it"] = "Gioco tracciato 📡: ",
- ["de"] = "Verfolgtes Spiel 📡: ",
- ["ar"] = "اللعبة المتتبعة 📡: ",
- ["ja"] = "トラッカーゲーム📡:",
- ["ru"] = "Отслеживаемая игра 📡: ",
- ["zh"] = "追踪游戏 📡:"
- }
- local function getLang()
- local code = LocalizationService.RobloxLocaleId
- if type(code) ~= "string" then
- return "en"
- end
- return string.lower(code):sub(1,2)
- end
- local function getTranslatedPrefix()
- local lang = getLang()
- return langText[lang] or langText["en"]
- end
- local NotificationLib = {
- _notifications = {},
- _theme = {
- primaryColor = Color3.fromRGB(30, 30, 30),
- textColor = Color3.fromRGB(255, 255, 255),
- font = Enum.Font.GothamSemibold,
- cornerRadius = UDim.new(0, 8)
- },
- _settings = {
- duration = 4,
- spacing = 12,
- fadeTime = 0.28,
- slideDistance = 18
- },
- _icons = { info = "rbxassetid://9405926389" }
- }
- function NotificationLib:_init()
- if not self._container then
- self._container = Instance.new("ScreenGui")
- self._container.Name = "NotificationLibrary"
- self._container.ResetOnSpawn = false
- self._container.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
- self._container.Parent = game:GetService("CoreGui")
- end
- end
- function NotificationLib:_calculatePosition(index)
- local spacing = self._settings.spacing
- local height = 90
- return UDim2.new(1, -24, 1, -24 - (index-1)*(height+spacing))
- end
- function NotificationLib:_animateOut(frame, callback)
- local tween = TweenService:Create(frame, TweenInfo.new(self._settings.fadeTime, Enum.EasingStyle.Quad), {
- Position = frame.Position + UDim2.new(0,0,0,self._settings.slideDistance),
- BackgroundTransparency = 1
- })
- tween:Play()
- tween.Completed:Connect(function()
- if frame and frame.Parent then frame:Destroy() end
- if callback then callback() end
- end)
- end
- function NotificationLib:Notify(opt)
- self:_init()
- opt = opt or {}
- local title = opt.Title or "Notification"
- local message = opt.Message or ""
- local duration = opt.Duration or self._settings.duration
- local frame = Instance.new("Frame")
- frame.BackgroundColor3 = self._theme.primaryColor
- frame.Size = UDim2.new(0, 340, 0, 90)
- frame.AnchorPoint = Vector2.new(1,1)
- frame.Position = self:_calculatePosition(#self._notifications + 1)
- frame.Parent = self._container
- Instance.new("UICorner", frame).CornerRadius = self._theme.cornerRadius
- local icon = Instance.new("ImageLabel", frame)
- icon.Image = self._icons.info
- icon.Size = UDim2.new(0,28,0,28)
- icon.Position = UDim2.new(0,12,0,12)
- icon.BackgroundTransparency = 1
- local titleLabel = Instance.new("TextLabel", frame)
- titleLabel.Font = self._theme.font
- titleLabel.TextColor3 = self._theme.textColor
- titleLabel.TextSize = 16
- titleLabel.TextXAlignment = Enum.TextXAlignment.Left
- titleLabel.Text = title
- titleLabel.BackgroundTransparency = 1
- titleLabel.Size = UDim2.new(1,-60,0,22)
- titleLabel.Position = UDim2.new(0,48,0,10)
- local msgLabel = Instance.new("TextLabel", frame)
- msgLabel.Font = Enum.Font.Gotham
- msgLabel.TextColor3 = self._theme.textColor
- msgLabel.TextSize = 14
- msgLabel.TextWrapped = true
- msgLabel.TextXAlignment = Enum.TextXAlignment.Left
- msgLabel.Text = message
- msgLabel.BackgroundTransparency = 1
- msgLabel.Size = UDim2.new(1,-60,0,48)
- msgLabel.Position = UDim2.new(0,48,0,30)
- table.insert(self._notifications, frame)
- task.delay(duration, function()
- if frame and frame.Parent then
- self:_animateOut(frame, function()
- for i,v in ipairs(self._notifications) do
- if v == frame then table.remove(self._notifications,i); break end
- end
- end)
- end
- end)
- end
- local MarketplaceService = game:GetService("MarketplaceService")
- local function getGameName()
- local success, result = pcall(function()
- return MarketplaceService:GetProductInfo(game.PlaceId)
- end)
- if success and result and result.Name then
- return result.Name
- end
- return "Unknown Game"
- end
- task.defer(function()
- local success, err = pcall(function()
- local prefix = getTranslatedPrefix()
- local gameName = getGameName()
- NotificationLib:Notify({
- Title = "System",
- Message = prefix .. gameName,
- Duration = 5
- })
- end)
- if not success then
- warn("Tracker error:", err)
- end
- end)
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════════════════════════════════════════════
- -- (protection lors du screen shot le Gui deviendras invisible lors du screen shot)
- -- ════════════════════════════════════════════════════════════════════════════════
- pcall(function()
- local CaptureService = game:GetService("CaptureService")
- CaptureService.CaptureBegan:Connect(function()
- screenGui.Enabled = false
- end)
- CaptureService.CaptureEnded:Connect(function()
- task.delay(0.5, function()
- screenGui.Enabled = true
- end)
- end)
- end)
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════
- -- (Titre du Gui et la Version)
- -- ════════════════════════════════════════
- title = Instance.new("TextLabel", mainFrame)
- title.Size = UDim2.new(1, 0, 0, 40)
- title.Position = UDim2.new(0, 5, 0, 0)
- title.BackgroundTransparency = 1
- title.Text = "Server Finder Deluxe"
- title.Font = Enum.Font.Ubuntu
- title.TextSize = 30
- title.TextColor3 = Color3.fromRGB(255, 255, 255)
- title.ZIndex = 12
- versionLabel = Instance.new("TextLabel", mainFrame)
- versionLabel.Size = UDim2.new(0, 150, 0, 25)
- versionLabel.Position = UDim2.new(0, 10, 0, 8)
- versionLabel.BackgroundTransparency = 1
- versionLabel.Text = "v8.2"
- versionLabel.Font = Enum.Font.Ubuntu
- versionLabel.TextSize = 16
- versionLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
- versionLabel.TextXAlignment = Enum.TextXAlignment.Left
- versionLabel.ZIndex = 16
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════
- -- (Button bestLatencyBtn)
- -- ════════════════════════════════════════
- bestLatencyBtn = Instance.new("TextButton")
- bestLatencyBtn.Parent = mainFrame
- bestLatencyBtn.AnchorPoint = Vector2.new(0.5,0.5)
- bestLatencyBtn.Size = UDim2.new(0,100,0,30)
- bestLatencyBtn.Position = UDim2.new(1, -69, 0, 110)
- bestLatencyBtn.BackgroundColor3 = Color3.fromRGB(60,60,60)
- bestLatencyBtn.BorderSizePixel = 0
- bestLatencyBtn.Text = "Best Latency"
- bestLatencyBtn.Font = Enum.Font.Ubuntu
- bestLatencyBtn.TextSize = 14
- bestLatencyBtn.TextColor3 = Color3.fromRGB(255,255,255)
- bestLatencyBtn.ZIndex = 35
- bestCorner = Instance.new("UICorner")
- bestCorner.Parent = bestLatencyBtn
- local clickSound = Instance.new("Sound", bestLatencyBtn)
- clickSound.SoundId = "rbxassetid://9120093264"
- clickSound.Volume = 1
- clickSound.PlayOnRemove = false
- bestLatencyBtn.MouseButton1Click:Connect(function()
- local soundOk, soundErr = pcall(function()
- clickSound:Play()
- end)
- local ok, err = pcall(function()
- refreshServers("BestLatency")
- end)
- if not ok then
- warn("Error while searching for Best Latency:", err)
- end
- end)
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════
- -- (Scroll Frame)
- -- ════════════════════════════════════════
- local scrollFrame = Instance.new("ScrollingFrame", mainFrame)
- scrollFrame.Position = UDim2.new(0, 10, 0, 140)
- scrollFrame.Size = UDim2.new(1, -20, 1, -150)
- scrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
- scrollFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y
- scrollFrame.ScrollBarThickness = 6
- scrollFrame.BackgroundTransparency = 1
- scrollFrame.ClipsDescendants = true
- scrollFrame.ZIndex = 11
- local layout = Instance.new("UIListLayout", scrollFrame)
- layout.SortOrder = Enum.SortOrder.LayoutOrder
- layout.Padding = UDim.new(0, 10)
- layout.HorizontalAlignment = Enum.HorizontalAlignment.Center
- local isScrolling = false
- scrollFrame.InputBegan:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseWheel or input.UserInputType == Enum.UserInputType.Touch then
- isScrolling = true
- mainFrame.Active = false
- end
- end)
- scrollFrame.InputEnded:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseWheel or input.UserInputType == Enum.UserInputType.Touch then
- task.delay(0.1, function()
- isScrolling = false
- mainFrame.Active = true
- end)
- end
- end)
- headerFrame.Visible = true
- --------------------------------------------------------------------------------------------------------------------
- -- ═══════════════════════════════════════════════
- -- (Le code qui scann tout les servers publics)
- -- ═══════════════════════════════════════════════
- -- ═══════════════════════════════════════════════
- -- (Récupération des nombres de joueurs (API v1))
- -- ═══════════════════════════════════════════════
- local function GetTotalPlayers(placeId)
- local total = "N/A"
- xpcall(function()
- local placeUrl = "https://apis.roblox.com/universes/v1/places/" .. tostring(placeId) .. "/universe"
- local placeRes = game:GetService("HttpService"):JSONDecode(game:HttpGet(placeUrl))
- local universeId = placeRes and placeRes.universeId
- if universeId then
- local universeUrl = "https://games.roblox.com/v1/games?universeIds=" .. tostring(universeId)
- local universeRes = game:GetService("HttpService"):JSONDecode(game:HttpGet(universeUrl))
- if universeRes and universeRes.data and universeRes.data[1] then
- total = tostring(universeRes.data[1].playing or "N/A")
- end
- end
- end, function(err)
- warn("Erreur GetTotalPlayers :", err)
- end)
- return total
- end
- print(GetTotalPlayers(game.PlaceId))
- local posChange = 8
- local serverFrames = {}
- local cachedTotalPlayers = "Loading..."
- -- ════════════════════════════════════════════════════
- -- (Récupération des Serveurs (API v1) / BestLacency)
- -- ════════════════════════════════════════════════════
- local function GetAllServers(PlaceID, orderBy)
- getgenv().NextServer = nil
- getgenv().HasScannedAll = false
- local T = {}
- xpcall(function()
- if orderBy == "BestLatency" then
- local baseUrl = 'https://games.roblox.com/v1/games/' .. PlaceID .. '/servers/Public?orderBy=BestLatency&limit=100'
- local Site = HttpService:JSONDecode(game:HttpGet(baseUrl))
- if Site.nextPageCursor and Site.nextPageCursor ~= "null" then
- getgenv().NextServer = HttpService:JSONDecode(game:HttpGet(baseUrl .. '&cursor=' .. Site.nextPageCursor))
- table.insert(T, (getgenv().NextServer).data)
- while not getgenv().HasScannedAll do
- task.wait()
- if (getgenv().NextServer).nextPageCursor and (getgenv().NextServer).nextPageCursor ~= "null" then
- getgenv().NextServer = HttpService:JSONDecode(game:HttpGet(baseUrl .. '&cursor=' .. (getgenv().NextServer).nextPageCursor))
- table.insert(T, (getgenv().NextServer).data)
- else
- getgenv().HasScannedAll = true
- end
- end
- else
- table.insert(T, Site.data)
- end
- else
- local Site = HttpService:JSONDecode(game:HttpGet('https://games.roblox.com/v1/games/' .. PlaceID .. '/servers/Public?sortOrder=Desc&limit=100'))
- if Site.nextPageCursor and Site.nextPageCursor ~= "null" then
- getgenv().NextServer = HttpService:JSONDecode(game:HttpGet('https://games.roblox.com/v1/games/' .. PlaceID .. '/servers/Public?sortOrder=Desc&limit=100&cursor=' .. Site.nextPageCursor))
- table.insert(T, (getgenv().NextServer).data)
- while not getgenv().HasScannedAll do
- task.wait()
- if (getgenv().NextServer).nextPageCursor and (getgenv().NextServer).nextPageCursor ~= "null" then
- getgenv().NextServer = HttpService:JSONDecode(game:HttpGet('https://games.roblox.com/v1/games/' .. PlaceID .. '/servers/Public?sortOrder=Desc&limit=100&cursor=' .. (getgenv().NextServer).nextPageCursor))
- table.insert(T, (getgenv().NextServer).data)
- else
- getgenv().HasScannedAll = true
- end
- end
- else
- table.insert(T, Site.data)
- end
- end
- end, function(err)
- warn("Erreur GetAllServers :", err)
- end)
- return T
- end
- --------------------------------------------------------------------------------------------------------------------
- -- ═════════════════════════════════════════════════════════════════
- -- (Players/PING/FPS/ID/Server-Quality/Heure /Total Players)
- -- ═════════════════════════════════════════════════════════════════
- local function formatTime()
- local success, result = pcall(function()
- local dt = DateTime.now():ToLocalTime()
- local hour = dt.Hour
- local ampm = "AM"
- if hour >= 12 then
- ampm = "PM"
- end
- hour = hour % 12
- if hour == 0 then
- hour = 12
- end
- return string.format("%02d:%02d %s", hour, dt.Minute, ampm)
- end)
- if success then
- return result
- else
- warn("formatTime failed: unable to get the local time.")
- return "N/A"
- end
- end
- local function CreateServerFrame(server)
- local serverFrame = Instance.new("Frame", scrollFrame)
- serverFrame.Size = UDim2.new(1, 0, 0, 120)
- serverFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
- serverFrame.BorderSizePixel = 0
- serverFrame.ZIndex = 11
- server.timeObtained = server.timeObtained or formatTime()
- local infoLabel = Instance.new("TextLabel", serverFrame)
- infoLabel.Size = UDim2.new(0, 300, 0, 60)
- infoLabel.Position = UDim2.new(0, 10, 0, 10)
- infoLabel.BackgroundTransparency = 1
- infoLabel.TextWrapped = true
- infoLabel.TextXAlignment = Enum.TextXAlignment.Left
- infoLabel.TextYAlignment = Enum.TextYAlignment.Top
- infoLabel.Font = Enum.Font.Ubuntu
- infoLabel.TextSize = 16
- infoLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
- infoLabel.ZIndex = 12
- local ping = server.ping or 0
- local players = server.playing or 0
- local maxPlayers = server.maxPlayers or 0
- local rawFps = tonumber(server.fps) or 0
- local fps = string.format("%.1f", rawFps)
- local quality, qualityColor
- pcall(function()
- quality = "Good"
- qualityColor = Color3.fromRGB(0, 255, 0)
- if ping > 250 or players >= maxPlayers then
- quality = "Bad"
- qualityColor = Color3.fromRGB(255, 60, 60)
- elseif ping > 150 then
- quality = "Medium"
- qualityColor = Color3.fromRGB(255, 170, 0)
- end
- end)
- infoLabel.Text =
- "Ping : " .. (ping > 0 and ping or "N/A") ..
- "\nFPS : " .. fps ..
- "\nPlayers : " .. players .. "/" .. maxPlayers ..
- "\nServer Quality : " .. quality
- infoLabel.TextColor3 = qualityColor
- local totalPlayersLabel = Instance.new("TextLabel", serverFrame)
- totalPlayersLabel.Size = UDim2.new(0, 300, 0, 20)
- totalPlayersLabel.Position = UDim2.new(0, 10, 0, 58)
- totalPlayersLabel.BackgroundTransparency = 1
- totalPlayersLabel.TextWrapped = true
- totalPlayersLabel.TextXAlignment = Enum.TextXAlignment.Left
- totalPlayersLabel.Font = Enum.Font.Ubuntu
- totalPlayersLabel.TextSize = 14
- totalPlayersLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
- totalPlayersLabel.Text = "Total Servers Players : " .. tostring(cachedTotalPlayers)
- totalPlayersLabel.ZIndex = 12
- local placeIdLabel = Instance.new("TextLabel", serverFrame)
- placeIdLabel.Size = UDim2.new(0, 300, 0, 20)
- placeIdLabel.Position = UDim2.new(0, 10, 0, 76)
- placeIdLabel.BackgroundTransparency = 1
- placeIdLabel.TextWrapped = true
- placeIdLabel.TextXAlignment = Enum.TextXAlignment.Left
- placeIdLabel.TextYAlignment = Enum.TextYAlignment.Top
- placeIdLabel.Font = Enum.Font.Ubuntu
- placeIdLabel.TextSize = 14
- placeIdLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
- placeIdLabel.Text = "Game ID : " .. tostring(game.PlaceId)
- placeIdLabel.ZIndex = 12
- local idLabel = Instance.new("TextLabel", serverFrame)
- idLabel.Size = UDim2.new(0, 300, 0, 20)
- idLabel.Position = UDim2.new(0, 10, 0, 94)
- idLabel.BackgroundTransparency = 1
- idLabel.TextWrapped = true
- idLabel.TextXAlignment = Enum.TextXAlignment.Left
- idLabel.TextYAlignment = Enum.TextYAlignment.Top
- idLabel.Font = Enum.Font.Ubuntu
- idLabel.TextSize = 14
- idLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
- idLabel.Text = "ID : " .. server.id
- idLabel.ZIndex = 12
- local joinButton = Instance.new("TextButton", serverFrame)
- joinButton.Size = UDim2.new(0, 100, 0, 40)
- joinButton.Position = UDim2.new(1, -110, 0.5, -20)
- joinButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
- joinButton.Text = "Join"
- joinButton.TextColor3 = Color3.fromRGB(255, 255, 255)
- joinButton.Font = Enum.Font.Ubuntu
- joinButton.TextSize = 18
- joinButton.ZIndex = 12
- local clickSound = Instance.new("Sound", joinButton)
- clickSound.SoundId = "rbxassetid://9120093264"
- clickSound.Volume = 1
- clickSound.PlayOnRemove = false
- joinButton.MouseButton1Click:Connect(function()
- local soundOk, soundErr = pcall(function()
- clickSound:Play()
- end)
- if not soundOk then
- warn("Failed to play click sound Join:", soundErr)
- end
- local ok, err = pcall(function()
- TeleportService:TeleportToPlaceInstance(game.PlaceId, server.id, LocalPlayer)
- end)
- if not ok then
- warn("An error occurred on the join button. Please try again.", err)
- end
- end)
- server.timeObtained = server.timeObtained or formatTime()
- local timeLabel = Instance.new("TextLabel", serverFrame)
- timeLabel.Size = UDim2.new(0, 100, 0, 20)
- timeLabel.Position = UDim2.new(1, -110, 0.5, -50)
- timeLabel.BackgroundTransparency = 1
- timeLabel.TextXAlignment = Enum.TextXAlignment.Center
- timeLabel.Font = Enum.Font.Ubuntu
- timeLabel.TextSize = 14
- timeLabel.TextColor3 = Color3.fromRGB(180, 180, 180)
- timeLabel.ZIndex = 12
- timeLabel.Text = server.timeObtained
- local copyJoinButton = Instance.new("TextButton", serverFrame)
- copyJoinButton.Size = UDim2.new(0, 100, 0, 30)
- copyJoinButton.Position = UDim2.new(1, -110, 0.5, 25)
- copyJoinButton.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
- copyJoinButton.Text = "Copy Join"
- copyJoinButton.TextColor3 = Color3.fromRGB(255, 255, 255)
- copyJoinButton.Font = Enum.Font.Ubuntu
- copyJoinButton.TextSize = 16
- copyJoinButton.ZIndex = 12
- local clickSoundCopy = Instance.new("Sound", copyJoinButton)
- clickSoundCopy.SoundId = "rbxassetid://9120093264"
- clickSoundCopy.Volume = 1
- clickSoundCopy.PlayOnRemove = false
- copyJoinButton.MouseButton1Click:Connect(function()
- local soundOk, soundErr = pcall(function()
- clickSoundCopy:Play()
- end)
- if not soundOk then
- warn("Failed to play click sound CopyJoin:", soundErr)
- end
- local ok, err = pcall(function()
- local joinCommand = 'Roblox.GameLauncher.joinGameInstance(' .. game.PlaceId .. ', "' .. server.id .. '")'
- setclipboard(joinCommand)
- end)
- if not ok then
- warn("An error occurred on the copy join button. Please try again.", err)
- end
- end)
- table.insert(serverFrames, serverFrame)
- end
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════
- -- (Global/Servers/FPS/PING)
- -- ════════════════════════════════════════
- local allServers = {}
- local fpsCheckInterval = 1
- local minFPS = 21
- local maxPing = 350 -- au-dessus de ça on passe en mode fluide
- local smoothMode = false
- -- FPS Calculateurs
- local RunService = game:GetService("RunService")
- local lastTime = tick()
- local frames = 0
- RunService.RenderStepped:Connect(function()
- frames += 1
- if tick() - lastTime >= fpsCheckInterval then
- local fps = frames / (tick() - lastTime)
- smoothMode = fps < minFPS -- si FPS trop bas, mode fluide
- frames = 0
- lastTime = tick()
- end
- end)
- -- Vérifie si un serveur a un ping trop élevé
- local function hasHighPing(servers)
- if typeof(servers) ~= "table" then return false end
- for _, server in ipairs(servers) do
- if (server.ping or 0) > maxPing then
- return true
- end
- end
- return false
- end
- function updateServerList(servers)
- local ok, err = pcall(function()
- -- sécurité
- if typeof(servers) ~= "table" then return end
- for _, v in pairs(serverFrames) do
- v:Destroy()
- end
- posChange = 8
- table.clear(serverFrames)
- -- si FPS bas OU pings trop élevés
- if smoothMode or hasHighPing(servers) then
- task.spawn(function()
- for _, server in ipairs(servers) do
- CreateServerFrame(server)
- posChange += 154
- task.wait(0.05)
- end
- end)
- else
- for _, server in ipairs(servers) do
- CreateServerFrame(server)
- posChange += 154
- end
- end
- end)
- if not ok then
- warn("Error in updateServerList.", err)
- end
- end
- function refreshServers(orderBy)
- task.spawn(function()
- local success, result = pcall(function()
- return GetTotalPlayers(game.PlaceId)
- end)
- if success and result then
- cachedTotalPlayers = result
- else
- cachedTotalPlayers = "N/A"
- warn("Unable to retrieve the total number of players :", result)
- end
- end)
- local ok, servers = pcall(GetAllServers, game.PlaceId, orderBy)
- if typeof(servers) == "table" and #servers > 0 then
- local allServersFlat = {}
- local success, err = pcall(function()
- for _, batch in ipairs(servers) do
- for _, s in ipairs(batch) do
- table.insert(allServersFlat, {
- id = s.id,
- playing = s.playing,
- maxPlayers = s.maxPlayers,
- ping = s.ping,
- fps = s.fps,
- timeObtained = formatTime()
- })
- end
- end
- end)
- if not success then
- warn("Flatten error:", err)
- return
- end
- allServers = allServersFlat
- updateServerList(allServers)
- else
- warn("No server found or API error.")
- showErrorTween()
- end
- end
- refreshServers()
- UserInputService.InputBegan:Connect(function(input, gameProcessed)
- if gameProcessed then return end
- if input.KeyCode == Enum.KeyCode.RightControl then
- screenGui:Destroy()
- end
- end)
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════
- -- (Button/Refresh)
- -- ════════════════════════════════════════
- local langText = {
- ["fr"] = "Erreur de chargement. Réessaie.",
- ["en"] = "Error loading. Please try again.",
- ["es"] = "Error al cargar. Inténtalo de nuevo.",
- ["pt"] = "Erro ao carregar. Por favor, tente novamente.",
- ["tr"] = "Yükleme hatası. Lütfen tekrar deneyin.",
- ["it"] = "Errore nel caricamento. Riprova.",
- ["de"] = "Fehler beim Laden. Bitte versuche es erneut.",
- ["ar"] = "حدث خطأ أثناء التحميل. الرجاء المحاولة مرة أخرى.",
- ["ja"] = "読み込みエラーが発生しました。もう一度お試しください。",
- ["ru"] = "Ошибка загрузки. Пожалуйста, попробуйте еще раз.",
- ["zh"] = "加载错误。请重试。"
- }
- local function getTranslatedMessage()
- local langCode = (LocalizationService.RobloxLocaleId or "en"):sub(1,2)
- return langText[langCode] or langText["en"]
- end
- local NotificationLib = {
- _notifications = {},
- _theme = {
- primaryColor = Color3.fromRGB(30, 30, 30),
- textColor = Color3.fromRGB(255, 255, 255),
- font = Enum.Font.GothamSemibold,
- cornerRadius = UDim.new(0, 8)
- },
- _settings = {
- duration = 4,
- spacing = 12,
- fadeTime = 0.28,
- slideDistance = 18
- },
- _icons = { info = "rbxassetid://9405926389" }
- }
- function NotificationLib:_init()
- if not self._container then
- self._container = Instance.new("ScreenGui")
- self._container.Name = "NotificationLibrary"
- self._container.ResetOnSpawn = false
- self._container.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
- self._container.Parent = game:GetService("CoreGui")
- end
- end
- function NotificationLib:_calculatePosition(index)
- local spacing = self._settings.spacing
- local height = 90
- return UDim2.new(1, -24, 1, -24 - (index-1)*(height+spacing))
- end
- function NotificationLib:_animateOut(frame, callback)
- local tween = TweenService:Create(frame, TweenInfo.new(self._settings.fadeTime, Enum.EasingStyle.Quad), {
- Position = frame.Position + UDim2.new(0,0,0,self._settings.slideDistance),
- BackgroundTransparency = 1
- })
- tween:Play()
- tween.Completed:Connect(function()
- if frame and frame.Parent then frame:Destroy() end
- if callback then callback() end
- end)
- end
- function NotificationLib:Notify(opt)
- self:_init()
- opt = opt or {}
- local title = opt.Title or "Notification"
- local message = opt.Message or ""
- local duration = opt.Duration or self._settings.duration
- local frame = Instance.new("Frame")
- frame.BackgroundColor3 = self._theme.primaryColor
- frame.Size = UDim2.new(0, 340, 0, 90)
- frame.AnchorPoint = Vector2.new(1,1)
- frame.Position = self:_calculatePosition(#self._notifications + 1)
- frame.Parent = self._container
- Instance.new("UICorner", frame).CornerRadius = self._theme.cornerRadius
- local icon = Instance.new("ImageLabel", frame)
- icon.Image = self._icons.info
- icon.Size = UDim2.new(0,28,0,28)
- icon.Position = UDim2.new(0,12,0,12)
- icon.BackgroundTransparency = 1
- local titleLabel = Instance.new("TextLabel", frame)
- titleLabel.Font = self._theme.font
- titleLabel.TextColor3 = self._theme.textColor
- titleLabel.TextSize = 16
- titleLabel.TextXAlignment = Enum.TextXAlignment.Left
- titleLabel.Text = title
- titleLabel.BackgroundTransparency = 1
- titleLabel.Size = UDim2.new(1,-60,0,22)
- titleLabel.Position = UDim2.new(0,48,0,10)
- local msgLabel = Instance.new("TextLabel", frame)
- msgLabel.Font = Enum.Font.Gotham
- msgLabel.TextColor3 = self._theme.textColor
- msgLabel.TextSize = 14
- msgLabel.TextWrapped = true
- msgLabel.TextXAlignment = Enum.TextXAlignment.Left
- msgLabel.Text = message
- msgLabel.BackgroundTransparency = 1
- msgLabel.Size = UDim2.new(1,-60,0,48)
- msgLabel.Position = UDim2.new(0,48,0,30)
- table.insert(self._notifications, frame)
- task.delay(duration, function()
- if frame and frame.Parent then
- self:_animateOut(frame, function()
- for i,v in ipairs(self._notifications) do
- if v == frame then table.remove(self._notifications,i); break end
- end
- end)
- end
- end)
- end
- local function CreateRefreshButton(mainFrame)
- local refreshBtn = Instance.new("ImageButton")
- refreshBtn.Parent = mainFrame
- refreshBtn.AnchorPoint = Vector2.new(0.5,0.5)
- refreshBtn.Size = UDim2.new(0,47,0,47)
- refreshBtn.Position = UDim2.new(0.5,250,0.5,-220)
- refreshBtn.Image = "http://www.roblox.com/asset/?id=126446661859683"
- refreshBtn.BackgroundTransparency = 1
- refreshBtn.ZIndex = 7
- local clickSound = Instance.new("Sound", refreshBtn)
- clickSound.SoundId = "rbxassetid://9120093264"
- clickSound.Volume = 1
- clickSound.PlayOnRemove = false
- refreshBtn.MouseButton1Click:Connect(function()
- local soundOk, soundErr = pcall(function()
- clickSound:Play()
- end)
- if not soundOk then
- warn("Failed to play click sound refresh:", soundErr)
- end
- local success, err = pcall(refreshServers)
- if not success then
- NotificationLib:Notify({
- Title = "Error",
- Message = getTranslatedMessage(),
- Duration = 4
- })
- end
- end)
- return refreshBtn
- end
- local refreshBtn = CreateRefreshButton(mainFrame)
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════
- -- (Button/LowPlayers/MaxPlayers)
- -- ════════════════════════════════════════
- local function sortServers(servers, currentSort)
- if typeof(servers) ~= "table" then return {} end
- if currentSort == "lowPlayers" then
- table.sort(servers, function(a, b)
- return (a.playing or 0) < (b.playing or 0)
- end)
- elseif currentSort == "maxPlayers" then
- table.sort(servers, function(a, b)
- return (a.playing or 0) > (b.playing or 0)
- end)
- elseif currentSort == "fastest" then
- table.sort(servers, function(a, b)
- return (a.ping or 9999) < (b.ping or 9999)
- end)
- elseif currentSort == "slowest" then
- table.sort(servers, function(a, b)
- return (a.ping or 0) > (b.ping or 0)
- end)
- end
- return servers
- end
- lowPlayersBtn = Instance.new("TextButton")
- lowPlayersBtn.Parent = mainFrame
- lowPlayersBtn.AnchorPoint = Vector2.new(0.5, 0.5)
- lowPlayersBtn.Size = UDim2.new(0, 65, 0, 30)
- lowPlayersBtn.Position = UDim2.new(0.5, -165, 0.5, -224)
- lowPlayersBtn.Text = "Ping ↓"
- lowPlayersBtn.Font = Enum.Font.GothamBold
- lowPlayersBtn.TextSize = 14
- lowPlayersBtn.TextColor3 = Color3.fromRGB(255,255,255)
- lowPlayersBtn.BackgroundColor3 = Color3.fromRGB(45,45,45)
- lowPlayersBtn.BorderSizePixel = 1
- lowPlayersBtn.BorderColor3 = Color3.fromRGB(0,0,0)
- lowPlayersBtn.ZIndex = 12
- lowCorner = Instance.new("UICorner")
- lowCorner.Parent = lowPlayersBtn
- lowCorner.CornerRadius = UDim.new(0,8)
- maxPlayersBtn = Instance.new("TextButton")
- maxPlayersBtn.Parent = mainFrame
- maxPlayersBtn.AnchorPoint = Vector2.new(0.5, 0.5)
- maxPlayersBtn.Size = UDim2.new(0, 65, 0, 30)
- maxPlayersBtn.Position = UDim2.new(0.5, -235, 0.5, -224)
- maxPlayersBtn.Text = "Ping ↑"
- maxPlayersBtn.Font = Enum.Font.GothamBold
- maxPlayersBtn.TextSize = 14
- maxPlayersBtn.TextColor3 = Color3.fromRGB(255,255,255)
- maxPlayersBtn.BackgroundColor3 = Color3.fromRGB(45,45,45)
- maxPlayersBtn.BorderSizePixel = 1
- maxPlayersBtn.BorderColor3 = Color3.fromRGB(0,0,0)
- maxPlayersBtn.ZIndex = 12
- maxCorner = Instance.new("UICorner")
- maxCorner.Parent = maxPlayersBtn
- maxCorner.CornerRadius = UDim.new(0,8)
- local clickSoundLow = Instance.new("Sound", lowPlayersBtn)
- clickSoundLow.SoundId = "rbxassetid://9120093264"
- clickSoundLow.Volume = 1
- clickSoundLow.PlayOnRemove = false
- local clickSoundMax = Instance.new("Sound", maxPlayersBtn)
- clickSoundMax.SoundId = "rbxassetid://9120093264"
- clickSoundMax.Volume = 1
- clickSoundMax.PlayOnRemove = false
- lowPlayersBtn.MouseButton1Click:Connect(function()
- local soundOk, soundErr = pcall(function()
- clickSoundLow:Play()
- end)
- if not soundOk then
- warn("Failed to play click sound lowPlayers:", soundErr)
- end
- local ok, err = pcall(function()
- local sorted = sortServers(allServers, "lowPlayers")
- updateServerList(sorted)
- end)
- if not ok then
- warn("API error during lowPlayers. Please try again.", err)
- end
- end)
- maxPlayersBtn.MouseButton1Click:Connect(function()
- local soundOk, soundErr = pcall(function()
- clickSoundMax:Play()
- end)
- if not soundOk then
- warn("Failed to play click sound maxPlayers:", soundErr)
- end
- local ok, err = pcall(function()
- local sorted = sortServers(allServers, "maxPlayers")
- updateServerList(sorted)
- end)
- if not ok then
- warn("API error during MaxPlayers. Please try again.", err)
- end
- end)
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════
- -- (Button/Close)
- -- ════════════════════════════════════════
- local closeBtn = Instance.new("ImageButton", mainFrame)
- closeBtn.AnchorPoint = Vector2.new(0.5, 0.5)
- closeBtn.Size = UDim2.new(0, 40, 0, 40)
- closeBtn.Position = UDim2.new(0.5, 298, 0.5, -220)
- closeBtn.Image = "http://www.roblox.com/asset/?id=138896199949173"
- closeBtn.BackgroundTransparency = 1
- closeBtn.ZIndex = 6
- local clickSoundClose = Instance.new("Sound")
- clickSoundClose.SoundId = "rbxassetid://9120093264"
- clickSoundClose.Volume = 1
- clickSoundClose.Parent = game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui")
- closeBtn.MouseButton1Click:Connect(function()
- local soundOk, soundErr = pcall(function()
- clickSoundClose:Play()
- end)
- if not soundOk then
- warn("Failed to play click sound closeBtn:", soundErr)
- end
- task.delay(0.1, function()
- pcall(function()
- _G.SFD_LOADED = false
- _G.SFD_CAN_RELOAD = true
- if screenGui then
- screenGui:Destroy()
- end
- end)
- end)
- end)
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════
- -- (Button/Rejoin)
- -- ════════════════════════════════════════
- local langText = {
- ["fr"] = "Reconnexion au serveur...",
- ["en"] = "Reconnecting to server...",
- ["es"] = "Reconectando al servidor...",
- ["de"] = "Wiederverbindung zum Server...",
- ["it"] = "Riconnessione al server...",
- ["pt"] = "Reconectando ao servidor...",
- ["ru"] = "Переподключение к серверу...",
- ["zh"] = "正在重新连接服务器...",
- ["tr"] = "Sunucuya yeniden bağlanılıyor...",
- ["ja"] = "サーバーに再接続中...",
- ["ar"] = "إعادة الاتصال بالخادم...",
- }
- local function getTranslatedMessage()
- local tries = 0
- while (not LocalizationService.RobloxLocaleId or #LocalizationService.RobloxLocaleId < 2) and tries < 20 do
- tries = tries + 1
- task.wait(0.05)
- end
- local langCode = (LocalizationService.RobloxLocaleId or "en"):sub(1, 2)
- return langText[langCode] or langText["en"]
- end
- local startTime = os.clock()
- local NotificationLib = {
- _notifications = {},
- _theme = {
- primaryColor = Color3.fromRGB(30, 30, 30),
- textColor = Color3.fromRGB(255, 255, 255),
- font = Enum.Font.GothamSemibold,
- cornerRadius = UDim.new(0, 8)
- },
- _settings = {
- duration = 4,
- position = "BottomRight",
- maxNotifications = 5,
- spacing = 12,
- fadeTime = 0.28,
- slideDistance = 18
- },
- _icons = {
- info = "rbxassetid://9405926389"
- }
- }
- function NotificationLib:_init()
- if not self._container then
- self._container = Instance.new("ScreenGui")
- self._container.Name = "NotificationLibrary"
- self._container.ResetOnSpawn = false
- self._container.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
- self._container.Parent = game:GetService("CoreGui")
- end
- end
- function NotificationLib:_calculatePosition(index)
- local spacing = self._settings.spacing
- local height = 90
- return UDim2.new(1, -24, 1, -24 - (index - 1) * (height + spacing))
- end
- function NotificationLib:_animateOut(frame, callback)
- local tween = TweenService:Create(frame, TweenInfo.new(self._settings.fadeTime, Enum.EasingStyle.Quad), {
- Position = frame.Position + UDim2.new(0, 0, 0, self._settings.slideDistance),
- BackgroundTransparency = 1
- })
- tween:Play()
- tween.Completed:Connect(function()
- if frame and frame.Parent then frame:Destroy() end
- if callback then callback() end
- end)
- end
- function NotificationLib:Notify(opt)
- self:_init()
- opt = opt or {}
- local title = opt.Title or "Notification"
- local message = opt.Message or ""
- local duration = opt.Duration or self._settings.duration
- local frame = Instance.new("Frame")
- frame.BackgroundColor3 = self._theme.primaryColor
- frame.Size = UDim2.new(0, 340, 0, 90)
- frame.AnchorPoint = Vector2.new(1, 1)
- frame.Position = self:_calculatePosition(#self._notifications + 1)
- frame.Parent = self._container
- Instance.new("UICorner", frame).CornerRadius = self._theme.cornerRadius
- local icon = Instance.new("ImageLabel", frame)
- icon.Image = self._icons.info
- icon.Size = UDim2.new(0, 28, 0, 28)
- icon.Position = UDim2.new(0, 12, 0, 12)
- icon.BackgroundTransparency = 1
- local titleLabel = Instance.new("TextLabel", frame)
- titleLabel.Font = self._theme.font
- titleLabel.TextColor3 = self._theme.textColor
- titleLabel.TextSize = 16
- titleLabel.TextXAlignment = Enum.TextXAlignment.Left
- titleLabel.Text = title
- titleLabel.BackgroundTransparency = 1
- titleLabel.Size = UDim2.new(1, -60, 0, 22)
- titleLabel.Position = UDim2.new(0, 48, 0, 10)
- local msgLabel = Instance.new("TextLabel", frame)
- msgLabel.Font = Enum.Font.Gotham
- msgLabel.TextColor3 = self._theme.textColor
- msgLabel.TextSize = 14
- msgLabel.TextWrapped = true
- msgLabel.TextXAlignment = Enum.TextXAlignment.Left
- msgLabel.Text = message
- msgLabel.BackgroundTransparency = 1
- msgLabel.Size = UDim2.new(1, -60, 0, 48)
- msgLabel.Position = UDim2.new(0, 48, 0, 30)
- table.insert(self._notifications, frame)
- task.delay(duration, function()
- if frame and frame.Parent then
- self:_animateOut(frame, function()
- for i, v in ipairs(self._notifications) do
- if v == frame then table.remove(self._notifications, i); break end
- end
- end)
- end
- end)
- end
- task.wait(0.1)
- local SCRIPT_SOURCE_SERVER_FINDER_DELUXE = [=[
- loadstring(game:HttpGet("https://raw.githubusercontent.com/MaxproGlitcher/Server_Finder_Deluxe_Back_Up/refs/heads/main/.luau"))()
- ]=]
- local RejoinButton = Instance.new("ImageButton")
- RejoinButton.Parent = mainFrame
- RejoinButton.AnchorPoint = Vector2.new(0.5, 0.5)
- RejoinButton.Size = UDim2.new(0, 40, 0, 40)
- RejoinButton.Position = UDim2.new(0.5, 204, 0.5, -220)
- RejoinButton.Image = "rbxassetid://103864549538113"
- RejoinButton.BackgroundTransparency = 1
- RejoinButton.ZIndex = 12
- local clickSoundRejoin = Instance.new("Sound", RejoinButton)
- clickSoundRejoin.SoundId = "rbxassetid://9120093264"
- clickSoundRejoin.Volume = 1
- clickSoundRejoin.PlayOnRemove = false
- RejoinButton.MouseButton1Click:Connect(function()
- local soundOk, soundErr = pcall(function()
- clickSoundRejoin:Play()
- end)
- if not soundOk then
- warn("Failed to play click sound RejoinButton:", soundErr)
- end
- local success, err = pcall(function()
- NotificationLib:Notify({
- Title = string.format("Time used: %.3f s", os.clock() - startTime),
- Message = getTranslatedMessage(),
- Type = "info",
- Duration = 5
- })
- queue_on_teleport(SCRIPT_SOURCE_SERVER_FINDER_DELUXE)
- task.wait(1)
- TeleportService:Teleport(game.PlaceId, LocalPlayer)
- end)
- if not success then
- warn("An error occurred on the button rejoint button servers. Please try again", err)
- end
- end)
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════
- -- (Resize Button/Code)
- -- ════════════════════════════════════════
- local resizeButton = Instance.new("ImageButton", mainFrame)
- resizeButton.AnchorPoint = Vector2.new(0.5, 0.5)
- resizeButton.Size = UDim2.new(0, 40, 0, 40)
- resizeButton.Position = UDim2.new(0.5, 157, 0.5, -220)
- resizeButton.Image = "http://www.roblox.com/asset/?id=92176830367195"
- resizeButton.BackgroundTransparency = 1
- resizeButton.ZIndex = 12
- local isSmall = true
- local clickSoundResize = Instance.new("Sound", resizeButton)
- clickSoundResize.SoundId = "rbxassetid://9120093264"
- clickSoundResize.Volume = 1
- clickSoundResize.PlayOnRemove = false
- local function toggleGuiSize()
- local soundOk, soundErr = pcall(function()
- clickSoundResize:Play()
- end)
- if not soundOk then
- warn("Failed to play click sound resizeButton:", soundErr)
- end
- if isSmall then
- mainFrame.Size = UDim2.new(0, 650, 0, 500)
- scrollFrame.Position = UDim2.new(0, 10, 0, 140)
- scrollFrame.Size = UDim2.new(1, -20, 1, -150)
- headerFrame.Size = UDim2.new(1, -20, 0, 80)
- headerFrame.Position = UDim2.new(0, 10, 0, 50)
- if refreshBtn then
- refreshBtn.AnchorPoint = Vector2.new(0.5, 0.5)
- refreshBtn.Size = UDim2.new(0, 47, 0, 47)
- refreshBtn.Position = UDim2.new(0.5, 250, 0.5, -220)
- end
- if closeBtn then
- closeBtn.AnchorPoint = Vector2.new(0.5, 0.5)
- closeBtn.Size = UDim2.new(0, 40, 0, 40)
- closeBtn.Position = UDim2.new(0.5, 298, 0.5, -220)
- end
- if resizeButton then
- resizeButton.AnchorPoint = Vector2.new(0.5, 0.5)
- resizeButton.Size = UDim2.new(0, 40, 0, 40)
- resizeButton.Position = UDim2.new(0.5, 157, 0.5, -220)
- end
- if RejoinButton then
- RejoinButton.AnchorPoint = Vector2.new(0.5, 0.5)
- RejoinButton.Size = UDim2.new(0, 40, 0, 40)
- RejoinButton.Position = UDim2.new(0.5, 204, 0.5, -220)
- end
- if lowPlayersBtn then
- lowPlayersBtn.AnchorPoint = Vector2.new(0.5, 0.5)
- lowPlayersBtn.Size = UDim2.new(0, 65, 0, 30)
- lowPlayersBtn.Position = UDim2.new(0.5, -165, 0.5, -224)
- end
- if maxPlayersBtn then
- maxPlayersBtn.AnchorPoint = Vector2.new(0.5, 0.5)
- maxPlayersBtn.Size = UDim2.new(0, 65, 0, 30)
- maxPlayersBtn.Position = UDim2.new(0.5, -235, 0.5, -224)
- end
- if bestLatencyBtn then
- bestLatencyBtn.AnchorPoint = Vector2.new(0.5, 0.5)
- bestLatencyBtn.Size = UDim2.new(0, 100, 0, 30)
- bestLatencyBtn.Position = UDim2.new(1, -69, 0, 110)
- end
- else
- mainFrame.Size = UDim2.new(0, 549, 0, 390)
- scrollFrame.Position = UDim2.new(0, 5, 0, 130)
- scrollFrame.Size = UDim2.new(1, -10, 1, -135)
- headerFrame.Size = UDim2.new(1, -10, 0, 80)
- headerFrame.Position = UDim2.new(0, 5, 0, 40)
- if refreshBtn then
- refreshBtn.Position = UDim2.new(0.5, 225, 0.5, -175)
- refreshBtn.AnchorPoint = Vector2.new(0.5, 0.5)
- refreshBtn.Size = UDim2.new(0, 30, 0, 30)
- end
- if closeBtn then
- closeBtn.Position = UDim2.new(0.5, 255, 0.5, -175)
- closeBtn.AnchorPoint = Vector2.new(0.5, 0.5)
- closeBtn.Size = UDim2.new(0, 25, 0, 25)
- end
- if RejoinButton then
- RejoinButton.AnchorPoint = Vector2.new(0.5, 0.5)
- RejoinButton.Size = UDim2.new(0, 25, 0, 25)
- RejoinButton.Position = UDim2.new(0.5, 195, 0.5, -175)
- end
- if maxPlayersBtn then
- maxPlayersBtn.AnchorPoint = Vector2.new(0.5, 0.5)
- maxPlayersBtn.Size = UDim2.new(0, 45, 0, 24)
- maxPlayersBtn.Position = UDim2.new(0, 62, 0, 20)
- end
- if lowPlayersBtn then
- lowPlayersBtn.AnchorPoint = Vector2.new(0.5, 0.5)
- lowPlayersBtn.Size = UDim2.new(0, 45, 0, 24)
- lowPlayersBtn.Position = UDim2.new(0, 112, 0, 20)
- end
- if bestLatencyBtn then
- bestLatencyBtn.AnchorPoint = Vector2.new(1, 0)
- bestLatencyBtn.Size = UDim2.new(0, 100, 0, 30)
- bestLatencyBtn.Position = UDim2.new(1, -15, 0, 85)
- end
- if resizeButton then
- resizeButton.AnchorPoint = Vector2.new(0.5, 0.5)
- resizeButton.Size = UDim2.new(0, 25, 0, 25)
- resizeButton.Position = UDim2.new(0.5, 167, 0.5, -175)
- end
- end
- isSmall = not isSmall
- end
- resizeButton.MouseButton1Click:Connect(toggleGuiSize)
- --------------------------------------------------------------------------------------------------------------------
- -- ════════════════════════════════════════
- -- (Notification pour me contacter au cas problème pour le Script Server Finder Deluxe)
- -- (Impression de texte personnalisé pour la console roblox)
- -- (Impression de Texte Traduits pour pluiseurs langues)
- -- ════════════════════════════════════════
- pcall(function()
- local Modules = {
- Colors = {
- ["Grey"] = "254, 254, 254",
- ["Cyan"] = "33, 161, 163"
- }
- }
- Modules.ChangeColor = function()
- game:GetService("RunService").Heartbeat:Connect(function()
- local console = game:GetService("CoreGui"):FindFirstChild("DevConsoleMaster")
- if console then
- for _, v in pairs(console:GetDescendants()) do
- if v:IsA("TextLabel") then
- v.RichText = true
- end
- end
- end
- end)
- end
- Modules.print = function(color, text, size)
- if not Modules.Colors[color] then
- warn("Color was not found!")
- return
- end
- local Text = '<font color="rgb(' .. Modules.Colors[color] .. ')"'
- if size then
- Text = Text .. ' size="' .. tostring(size) .. '"'
- end
- Text = Text .. '>' .. tostring(text) .. '</font>'
- print(Text)
- end
- local version = "8.2"
- local translations = {
- ["fr"] = {
- line = "-------------------------------------------------------------------------------------",
- executed = "Script Server Finder Deluxe lancé !!!",
- contact = "Si vous avez un problème avec le script, contactez maxproglitcher sur Discord.",
- },
- ["en"] = {
- line = "-------------------------------------------------------------------------------------",
- executed = "Script Server Finder Deluxe is executed !!!",
- contact = "If you have a problem with the script, contact maxproglitcher on Discord.",
- },
- ["es"] = {
- line = "-------------------------------------------------------------------------------------",
- executed = "¡Script Server Finder Deluxe ejecutado!",
- contact = "Si tienes un problema con el script, contacta a maxproglitcher en Discord.",
- },
- ["de"] = {
- line = "-------------------------------------------------------------------------------------",
- executed = "Script Server Finder Deluxe wurde ausgeführt!",
- contact = "Bei Problemen mit dem Skript kontaktiere maxproglitcher auf Discord.",
- },
- ["it"] = {
- line = "-------------------------------------------------------------------------------------",
- executed = "Script Server Finder Deluxe eseguito!",
- contact = "Se hai problemi con lo script, contatta maxproglitcher su Discord.",
- },
- ["pt"] = {
- line = "-------------------------------------------------------------------------------------",
- executed = "Script Server Finder Deluxe executado!",
- contact = "Se você tiver problemas com o script, contate maxproglitcher no Discord.",
- },
- ["ru"] = {
- line = "-------------------------------------------------------------------------------------",
- executed = "Скрипт Server Finder Deluxe запущен!",
- contact = "Если у вас есть проблемы со скриптом, свяжитесь с maxproglitcher в Discord.",
- },
- ["zh"] = {
- line = "-------------------------------------------------------------------------------------",
- executed = "脚本 Server Finder Deluxe 已执行!",
- contact = "如果您遇到脚本问题,请在 Discord 上联系 maxproglitcher。",
- },
- ["tr"] = {
- line = "-------------------------------------------------------------------------------------",
- executed = "Script Server Finder Deluxe çalıştırıldı!",
- contact = "Script ile ilgili bir sorun yaşarsanız, Discord üzerinden maxproglitcher ile iletişime geçin.",
- },
- ["ja"] = {
- line = "-------------------------------------------------------------------------------------",
- executed = "スクリプト Server Finder Deluxe を実行しました!",
- contact = "スクリプトに問題がある場合は、Discord で maxproglitcher に連絡してください。",
- },
- ["ar"] = {
- line = "-------------------------------------------------------------------------------------",
- executed = "تم تنفيذ سكربت Server Finder Deluxe!",
- contact = "إذا واجهت مشكلة في السكربت، تواصل مع maxproglitcher على ديسكورد.",
- }
- }
- local langCode = game:GetService("LocalizationService").RobloxLocaleId:lower():match("^([a-z][a-z])") or "en"
- local msg = translations[langCode] or translations["en"]
- Modules.ChangeColor()
- Modules.print("Grey", msg.line, 20)
- Modules.print("Grey", msg.executed, 20)
- Modules.print("Grey", "Version "..version, 20)
- Modules.print("Grey", msg.line, 20)
- Modules.print("Grey", msg.contact, 20)
- Modules.print("Grey", msg.line, 20)
- end)
- --------------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment