-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] --[[rscripts:analytics:start]] -- Script analytics (enabled by the creator on rscripts.net). -- Runs in its own thread and cannot affect the script below. task.spawn(function() pcall(function() loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6ae1a319586910bfee92d84a"))() end) end) --[[rscripts:analytics:end]] -- LocalScript dans StarterPlayerScripts local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local Imprimantes = Workspace:WaitForChild("Imprimantes") local Camera = Workspace.CurrentCamera -- ===== Couleurs par type ===== local COULEURS = { bronze = Color3.fromRGB(205, 127, 50), argent = Color3.fromRGB(192, 192, 192), ["or"] = Color3.fromRGB(255, 215, 0), emeraude = Color3.fromRGB(80, 200, 120), saphir = Color3.fromRGB(70, 130, 220), diamant = Color3.fromRGB(180, 220, 255), abonne_vip = Color3.fromRGB(250, 204, 21), abonne_premium = Color3.fromRGB(56, 189, 248), abonne_max = Color3.fromRGB(244, 63, 94), staff = Color3.fromRGB(167, 139, 250), } local COULEUR_DEFAUT = Color3.fromRGB(200, 200, 200) -- ===== GUI ===== local gui = Instance.new("ScreenGui") gui.Name = "MenuImprimantes" gui.ResetOnSpawn = false gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling gui.Parent = PlayerGui local frame = Instance.new("Frame") frame.Name = "Fenetre" frame.Size = UDim2.fromOffset(420, 520) frame.Position = UDim2.new(0, 20, 0.5, -260) frame.BackgroundColor3 = Color3.fromRGB(20, 20, 26) frame.BorderSizePixel = 0 frame.Active = true frame.Draggable = true frame.Parent = gui local coin = Instance.new("UICorner") coin.CornerRadius = UDim.new(0, 10) coin.Parent = frame local titre = Instance.new("TextLabel") titre.Size = UDim2.new(1, -60, 0, 32) titre.Position = UDim2.fromOffset(12, 4) titre.BackgroundTransparency = 1 titre.Text = "Imprimantes" titre.Font = Enum.Font.GothamBold titre.TextSize = 16 titre.TextColor3 = Color3.fromRGB(235, 235, 240) titre.TextXAlignment = Enum.TextXAlignment.Left titre.Parent = frame local fermer = Instance.new("TextButton") fermer.Size = UDim2.fromOffset(28, 28) fermer.Position = UDim2.new(1, -36, 0, 6) fermer.BackgroundColor3 = Color3.fromRGB(60, 30, 30) fermer.Text = "X" fermer.Font = Enum.Font.GothamBold fermer.TextSize = 14 fermer.TextColor3 = Color3.fromRGB(255, 120, 120) fermer.AutoButtonColor = false fermer.Parent = frame Instance.new("UICorner", fermer).CornerRadius = UDim.new(0, 6) fermer.MouseButton1Click:Connect(function() gui.Enabled = false end) -- ===== Bouton global : TP à la plus remplie ===== local tpMaxBtn = Instance.new("TextButton") tpMaxBtn.Size = UDim2.new(0.5, -16, 0, 32) tpMaxBtn.Position = UDim2.fromOffset(12, 42) tpMaxBtn.BackgroundColor3 = Color3.fromRGB(139, 92, 246) tpMaxBtn.Text = "TP à la plus remplie" tpMaxBtn.Font = Enum.Font.GothamBold tpMaxBtn.TextSize = 12 tpMaxBtn.TextColor3 = Color3.new(1, 1, 1) tpMaxBtn.AutoButtonColor = false tpMaxBtn.Parent = frame Instance.new("UICorner", tpMaxBtn).CornerRadius = UDim.new(0, 6) -- ===== Toggle ESP ===== local espBtn = Instance.new("TextButton") espBtn.Size = UDim2.new(0.5, -16, 0, 32) espBtn.Position = UDim2.new(0.5, 4, 0, 42) espBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 52) espBtn.Text = "ESP : OFF" espBtn.Font = Enum.Font.GothamBold espBtn.TextSize = 13 espBtn.TextColor3 = Color3.fromRGB(200, 200, 210) espBtn.AutoButtonColor = false espBtn.Parent = frame Instance.new("UICorner", espBtn).CornerRadius = UDim.new(0, 6) -- ===== ScrollFrame de la liste ===== local scroll = Instance.new("ScrollingFrame") scroll.Size = UDim2.new(1, -24, 1, -90) scroll.Position = UDim2.fromOffset(12, 82) scroll.BackgroundTransparency = 1 scroll.BorderSizePixel = 0 scroll.ScrollBarThickness = 4 scroll.ScrollBarImageColor3 = Color3.fromRGB(80, 80, 100) scroll.CanvasSize = UDim2.new() scroll.AutomaticCanvasSize = Enum.AutomaticSize.Y scroll.Parent = frame local layout = Instance.new("UIListLayout") layout.Padding = UDim.new(0, 6) layout.SortOrder = Enum.SortOrder.LayoutOrder layout.Parent = scroll local statut = Instance.new("TextLabel") statut.Size = UDim2.new(1, -24, 0, 18) statut.Position = UDim2.new(0, 12, 1, -22) statut.BackgroundTransparency = 1 statut.Text = "" statut.Font = Enum.Font.Gotham statut.TextSize = 11 statut.TextColor3 = Color3.fromRGB(150, 150, 160) statut.TextXAlignment = Enum.TextXAlignment.Left statut.Parent = frame -- ===== Helpers ===== local function getListe() local liste = {} for _, machine in ipairs(Imprimantes:GetChildren()) do if machine:IsA("Model") then local corps = machine:FindFirstChild("Corps") if corps and corps:IsA("BasePart") then table.insert(liste, { machine = machine, contenu = tonumber(machine:GetAttribute("Contenu")) or 0, type = machine:GetAttribute("Type") or "?", proprio = machine:GetAttribute("Proprietaire"), proprioNom = machine:GetAttribute("ProprietaireNom") or "?", corps = corps, }) end end end table.sort(liste, function(a, b) return a.contenu > b.contenu end) return liste end -- "Voir" : oriente la caméra vers l'imprimante, sans bouger le perso local function voirImprimante(machine) local corps = machine:FindFirstChild("Corps") if not corps or not corps:IsA("BasePart") then return false end local char = LocalPlayer.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") local head = char and char:FindFirstChild("Head") if not hrp then return false end local origine = head and head.Position or (hrp.Position + Vector3.new(0, 1.5, 0)) Camera.CFrame = CFrame.lookAt(origine, corps.Position) return true end -- "TP" : téléporte le personnage devant l'imprimante local function tpImprimante(machine) local corps = machine:FindFirstChild("Corps") if not corps or not corps:IsA("BasePart") then return false end local char = LocalPlayer.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") if not hrp then return false end -- 8 studs devant la face avant, 3 studs au-dessus local pos = corps.Position + corps.CFrame.LookVector * 8 + Vector3.new(0, 3, 0) hrp.CFrame = CFrame.lookAt(pos, corps.Position) return true end -- Bouton global : TP à la plus remplie tpMaxBtn.MouseButton1Click:Connect(function() local liste = getListe() if #liste > 0 then tpImprimante(liste[1].machine) end end) -- ===== ESP ===== local espActif = false local espData = {} local function creerHighlight(machine) local couleur = COULEURS[machine:GetAttribute("Type") or ""] or COULEUR_DEFAUT local hl = Instance.new("Highlight") hl.FillColor = couleur hl.FillTransparency = 0.6 hl.OutlineColor = couleur hl.OutlineTransparency = 0 hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.Adornee = machine hl.Parent = machine espData[machine] = hl end local function majEsp() if espActif then for _, m in ipairs(Imprimantes:GetChildren()) do if m:IsA("Model") and not espData[m] then creerHighlight(m) end end else for m, hl in pairs(espData) do if hl then hl:Destroy() end end espData = {} end end espBtn.MouseButton1Click:Connect(function() espActif = not espActif espBtn.Text = "ESP : " .. (espActif and "ON" or "OFF") espBtn.BackgroundColor3 = espActif and Color3.fromRGB(40, 90, 60) or Color3.fromRGB(40, 40, 52) majEsp() end) Imprimantes.ChildAdded:Connect(function() if espActif then majEsp() end end) -- ===== Construction des lignes ===== local lignes = {} -- [machine.Name] = { frame, labelContenu, labelProprio } local function creerLigne(info) local machine = info.machine local couleur = COULEURS[info.type] or COULEUR_DEFAUT local estMoi = info.proprio == LocalPlayer.UserId local ligne = Instance.new("Frame") ligne.Name = machine.Name ligne.Size = UDim2.new(1, -8, 0, 64) ligne.BackgroundColor3 = Color3.fromRGB(30, 30, 38) ligne.BorderSizePixel = 0 ligne.Parent = scroll Instance.new("UICorner", ligne).CornerRadius = UDim.new(0, 8) -- Barre de couleur local barre = Instance.new("Frame") barre.Size = UDim2.new(0, 4, 1, -8) barre.Position = UDim2.new(0, 4, 0, 4) barre.BackgroundColor3 = couleur barre.BorderSizePixel = 0 barre.Parent = ligne Instance.new("UICorner", barre).CornerRadius = UDim.new(0, 2) -- Type local nom = Instance.new("TextLabel") nom.Size = UDim2.new(0, 130, 0, 18) nom.Position = UDim2.fromOffset(14, 6) nom.BackgroundTransparency = 1 nom.Text = string.upper(info.type) nom.Font = Enum.Font.GothamBold nom.TextSize = 13 nom.TextColor3 = couleur nom.TextXAlignment = Enum.TextXAlignment.Left nom.Parent = ligne -- Propriétaire local prop = Instance.new("TextLabel") prop.Size = UDim2.new(0, 160, 0, 14) prop.Position = UDim2.fromOffset(14, 24) prop.BackgroundTransparency = 1 prop.Text = info.proprioNom .. (estMoi and " (toi)" or "") prop.Font = Enum.Font.Gotham prop.TextSize = 10 prop.TextColor3 = estMoi and Color3.fromRGB(96, 200, 200) or Color3.fromRGB(180, 120, 120) prop.TextXAlignment = Enum.TextXAlignment.Left prop.TextTruncate = Enum.TextTruncate.AtEnd prop.Parent = ligne -- Contenu (€) local argent = Instance.new("TextLabel") argent.Size = UDim2.new(0, 110, 0, 18) argent.Position = UDim2.fromOffset(14, 40) argent.BackgroundTransparency = 1 argent.Text = ("€%d"):format(math.floor(info.contenu)) argent.Font = Enum.Font.GothamBold argent.TextSize = 13 argent.TextColor3 = Color3.fromRGB(60, 200, 60) argent.TextXAlignment = Enum.TextXAlignment.Left argent.Parent = ligne -- Bouton Voir (caméra) local voir = Instance.new("TextButton") voir.Size = UDim2.fromOffset(70, 24) voir.Position = UDim2.new(1, -160, 0.5, -12) voir.BackgroundColor3 = Color3.fromRGB(59, 130, 246) voir.Text = "Voir" voir.Font = Enum.Font.GothamBold voir.TextSize = 12 voir.TextColor3 = Color3.new(1, 1, 1) voir.AutoButtonColor = false voir.Parent = ligne Instance.new("UICorner", voir).CornerRadius = UDim.new(0, 6) voir.MouseEnter:Connect(function() voir.BackgroundColor3 = Color3.fromRGB(80, 150, 255) end) voir.MouseLeave:Connect(function() voir.BackgroundColor3 = Color3.fromRGB(59, 130, 246) end) voir.MouseButton1Click:Connect(function() voirImprimante(machine) end) -- Bouton TP (téléportation) local tp = Instance.new("TextButton") tp.Size = UDim2.fromOffset(70, 24) tp.Position = UDim2.new(1, -84, 0.5, -12) tp.BackgroundColor3 = Color3.fromRGB(139, 92, 246) tp.Text = "TP" tp.Font = Enum.Font.GothamBold tp.TextSize = 12 tp.TextColor3 = Color3.new(1, 1, 1) tp.AutoButtonColor = false tp.Parent = ligne Instance.new("UICorner", tp).CornerRadius = UDim.new(0, 6) tp.MouseEnter:Connect(function() tp.BackgroundColor3 = Color3.fromRGB(160, 120, 255) end) tp.MouseLeave:Connect(function() tp.BackgroundColor3 = Color3.fromRGB(139, 92, 246) end) tp.MouseButton1Click:Connect(function() tpImprimante(machine) end) return { frame = ligne, labelArgent = argent, labelProprio = prop } end -- ===== Refresh en temps réel ===== local function rafraichir() local liste = getListe() local nomsVus = {} for _, info in ipairs(liste) do local nom = info.machine.Name nomsVus[nom] = true local ligneData = lignes[nom] if not ligneData then ligneData = creerLigne(info) lignes[nom] = ligneData end ligneData.labelArgent.Text = ("€%d"):format(math.floor(info.contenu)) local estMoi = info.proprio == LocalPlayer.UserId ligneData.labelProprio.Text = info.proprioNom .. (estMoi and " (toi)" or "") ligneData.labelProprio.TextColor3 = estMoi and Color3.fromRGB(96, 200, 200) or Color3.fromRGB(180, 120, 120) end for nom, data in pairs(lignes) do if not nomsVus[nom] then data.frame:Destroy() lignes[nom] = nil end end statut.Text = ("%d imprimante(s) — MAJ %s"):format(#liste, os.date("%H:%M:%S")) end task.spawn(function() while gui.Parent do rafraichir() task.wait(1.5) end end) -- ===== Toggle F2 ===== UserInputService.InputBegan:Connect(function(input, processed) if processed then return end if input.KeyCode == Enum.KeyCode.F2 then gui.Enabled = not gui.Enabled end end) rafraichir()