local player = game.Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local screenGui = Instance.new("ScreenGui") screenGui.Name = "TeleportMenuGui" screenGui.ResetOnSpawn = false screenGui.Parent = playerGui -- Bouton d'ouverture local toggleButton = Instance.new("TextButton") toggleButton.Size = UDim2.new(0, 200, 0, 50) toggleButton.Position = UDim2.new(0.5, -100, 0, 10) toggleButton.BackgroundColor3 = Color3.fromRGB(40, 40, 60) toggleButton.BorderSizePixel = 0 toggleButton.Font = Enum.Font.GothamBold toggleButton.Text = "🌍 TELEPORT MENU" toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255) toggleButton.TextSize = 16 toggleButton.Parent = screenGui local toggleCorner = Instance.new("UICorner") toggleCorner.CornerRadius = UDim.new(0, 10) toggleCorner.Parent = toggleButton -- Frame principale local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0, 500, 0, 650) mainFrame.Position = UDim2.new(0.5, -250, 0.5, -325) mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 35) mainFrame.BorderSizePixel = 0 mainFrame.Visible = false mainFrame.Parent = screenGui local mainCorner = Instance.new("UICorner") mainCorner.CornerRadius = UDim.new(0, 15) mainCorner.Parent = mainFrame -- Titre local mainTitle = Instance.new("TextLabel") mainTitle.Size = UDim2.new(1, -50, 0, 50) mainTitle.Position = UDim2.new(0, 0, 0, 0) mainTitle.BackgroundColor3 = Color3.fromRGB(35, 35, 50) mainTitle.BorderSizePixel = 0 mainTitle.Font = Enum.Font.GothamBold mainTitle.Text = "🌍 TELEPORTATION MENU" mainTitle.TextColor3 = Color3.fromRGB(100, 200, 255) mainTitle.TextSize = 20 mainTitle.Parent = mainFrame local titleCorner = Instance.new("UICorner") titleCorner.CornerRadius = UDim.new(0, 15) titleCorner.Parent = mainTitle -- Bouton fermeture local closeButton = Instance.new("TextButton") closeButton.Size = UDim2.new(0, 50, 0, 50) closeButton.Position = UDim2.new(1, -50, 0, 0) closeButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50) closeButton.BorderSizePixel = 0 closeButton.Font = Enum.Font.GothamBold closeButton.Text = "✕" closeButton.TextColor3 = Color3.fromRGB(255, 255, 255) closeButton.TextSize = 24 closeButton.Parent = mainFrame local closeCorner = Instance.new("UICorner") closeCorner.CornerRadius = UDim.new(0, 15) closeCorner.Parent = closeButton -- Tabs local tabFrame = Instance.new("Frame") tabFrame.Size = UDim2.new(0.9, 0, 0, 50) tabFrame.Position = UDim2.new(0.05, 0, 0, 60) tabFrame.BackgroundTransparency = 1 tabFrame.Parent = mainFrame local playersTab = Instance.new("TextButton") playersTab.Size = UDim2.new(0.31, 0, 1, 0) playersTab.Position = UDim2.new(0, 0, 0, 0) playersTab.BackgroundColor3 = Color3.fromRGB(0, 150, 255) playersTab.BorderSizePixel = 0 playersTab.Font = Enum.Font.GothamBold playersTab.Text = "👥" playersTab.TextColor3 = Color3.fromRGB(255, 255, 255) playersTab.TextSize = 20 playersTab.Parent = tabFrame local playersTabCorner = Instance.new("UICorner") playersTabCorner.CornerRadius = UDim.new(0, 10) playersTabCorner.Parent = playersTab local partsTab = Instance.new("TextButton") partsTab.Size = UDim2.new(0.31, 0, 1, 0) partsTab.Position = UDim2.new(0.345, 0, 0, 0) partsTab.BackgroundColor3 = Color3.fromRGB(50, 50, 70) partsTab.BorderSizePixel = 0 partsTab.Font = Enum.Font.GothamBold partsTab.Text = "🧱" partsTab.TextColor3 = Color3.fromRGB(200, 200, 200) partsTab.TextSize = 20 partsTab.Parent = tabFrame local partsTabCorner = Instance.new("UICorner") partsTabCorner.CornerRadius = UDim.new(0, 10) partsTabCorner.Parent = partsTab local guiTab = Instance.new("TextButton") guiTab.Size = UDim2.new(0.31, 0, 1, 0) guiTab.Position = UDim2.new(0.69, 0, 0, 0) guiTab.BackgroundColor3 = Color3.fromRGB(50, 50, 70) guiTab.BorderSizePixel = 0 guiTab.Font = Enum.Font.GothamBold guiTab.Text = "📱" guiTab.TextColor3 = Color3.fromRGB(200, 200, 200) guiTab.TextSize = 20 guiTab.Parent = tabFrame local guiTabCorner = Instance.new("UICorner") guiTabCorner.CornerRadius = UDim.new(0, 10) guiTabCorner.Parent = guiTab -- Barre de recherche local searchFrame = Instance.new("Frame") searchFrame.Size = UDim2.new(0.9, 0, 0, 40) searchFrame.Position = UDim2.new(0.05, 0, 0, 120) searchFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 50) searchFrame.BorderSizePixel = 0 searchFrame.Parent = mainFrame local searchCorner = Instance.new("UICorner") searchCorner.CornerRadius = UDim.new(0, 10) searchCorner.Parent = searchFrame local searchBox = Instance.new("TextBox") searchBox.Size = UDim2.new(1, -20, 1, -10) searchBox.Position = UDim2.new(0, 10, 0, 5) searchBox.BackgroundTransparency = 1 searchBox.Font = Enum.Font.Gotham searchBox.PlaceholderText = "🔍 Rechercher..." searchBox.PlaceholderColor3 = Color3.fromRGB(150, 150, 150) searchBox.Text = "" searchBox.TextColor3 = Color3.fromRGB(255, 255, 255) searchBox.TextSize = 14 searchBox.TextXAlignment = Enum.TextXAlignment.Left searchBox.ClearTextOnFocus = false searchBox.Parent = searchFrame -- Frame mode de téléportation local modeFrame = Instance.new("Frame") modeFrame.Size = UDim2.new(0.9, 0, 0, 50) modeFrame.Position = UDim2.new(0.05, 0, 0, 170) modeFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 45) modeFrame.BorderSizePixel = 0 modeFrame.Parent = mainFrame local modeCorner = Instance.new("UICorner") modeCorner.CornerRadius = UDim.new(0, 10) modeCorner.Parent = modeFrame local modeLabel = Instance.new("TextLabel") modeLabel.Size = UDim2.new(0.4, 0, 1, 0) modeLabel.Position = UDim2.new(0, 10, 0, 0) modeLabel.BackgroundTransparency = 1 modeLabel.Font = Enum.Font.GothamBold modeLabel.Text = "Mode TP:" modeLabel.TextColor3 = Color3.fromRGB(255, 255, 255) modeLabel.TextSize = 14 modeLabel.TextXAlignment = Enum.TextXAlignment.Left modeLabel.Parent = modeFrame local instantButton = Instance.new("TextButton") instantButton.Size = UDim2.new(0.25, 0, 0, 35) instantButton.Position = UDim2.new(0.4, 0, 0.5, -17.5) instantButton.BackgroundColor3 = Color3.fromRGB(0, 200, 100) instantButton.BorderSizePixel = 0 instantButton.Font = Enum.Font.GothamBold instantButton.Text = "⚡ Instant" instantButton.TextColor3 = Color3.fromRGB(255, 255, 255) instantButton.TextSize = 13 instantButton.Parent = modeFrame local instantCorner = Instance.new("UICorner") instantCorner.CornerRadius = UDim.new(0, 8) instantCorner.Parent = instantButton local walkButton = Instance.new("TextButton") walkButton.Size = UDim2.new(0.25, 0, 0, 35) walkButton.Position = UDim2.new(0.7, 0, 0.5, -17.5) walkButton.BackgroundColor3 = Color3.fromRGB(50, 50, 70) walkButton.BorderSizePixel = 0 walkButton.Font = Enum.Font.GothamBold walkButton.Text = "🚶 Marche" walkButton.TextColor3 = Color3.fromRGB(200, 200, 200) walkButton.TextSize = 13 walkButton.Parent = modeFrame local walkCorner = Instance.new("UICorner") walkCorner.CornerRadius = UDim.new(0, 8) walkCorner.Parent = walkButton -- ScrollingFrame pour les joueurs local playersScroll = Instance.new("ScrollingFrame") playersScroll.Size = UDim2.new(0.9, 0, 0, 300) playersScroll.Position = UDim2.new(0.05, 0, 0, 230) playersScroll.BackgroundColor3 = Color3.fromRGB(30, 30, 45) playersScroll.BorderSizePixel = 0 playersScroll.ScrollBarThickness = 8 playersScroll.CanvasSize = UDim2.new(0, 0, 0, 0) playersScroll.Visible = true playersScroll.Parent = mainFrame local playersScrollCorner = Instance.new("UICorner") playersScrollCorner.CornerRadius = UDim.new(0, 12) playersScrollCorner.Parent = playersScroll local playersLayout = Instance.new("UIListLayout") playersLayout.SortOrder = Enum.SortOrder.Name playersLayout.Padding = UDim.new(0, 5) playersLayout.Parent = playersScroll -- ScrollingFrame pour les parts local partsScroll = Instance.new("ScrollingFrame") partsScroll.Size = UDim2.new(0.9, 0, 0, 300) partsScroll.Position = UDim2.new(0.05, 0, 0, 230) partsScroll.BackgroundColor3 = Color3.fromRGB(30, 30, 45) partsScroll.BorderSizePixel = 0 partsScroll.ScrollBarThickness = 8 partsScroll.CanvasSize = UDim2.new(0, 0, 0, 0) partsScroll.Visible = false partsScroll.Parent = mainFrame local partsScrollCorner = Instance.new("UICorner") partsScrollCorner.CornerRadius = UDim.new(0, 12) partsScrollCorner.Parent = partsScroll local partsLayout = Instance.new("UIListLayout") partsLayout.SortOrder = Enum.SortOrder.Name partsLayout.Padding = UDim.new(0, 5) partsLayout.Parent = partsScroll -- ScrollingFrame pour le PlayerGui local guiScroll = Instance.new("ScrollingFrame") guiScroll.Size = UDim2.new(0.9, 0, 0, 300) guiScroll.Position = UDim2.new(0.05, 0, 0, 230) guiScroll.BackgroundColor3 = Color3.fromRGB(30, 30, 45) guiScroll.BorderSizePixel = 0 guiScroll.ScrollBarThickness = 8 guiScroll.CanvasSize = UDim2.new(0, 0, 0, 0) guiScroll.Visible = false guiScroll.Parent = mainFrame local guiScrollCorner = Instance.new("UICorner") guiScrollCorner.CornerRadius = UDim.new(0, 12) guiScrollCorner.Parent = guiScroll local guiLayout = Instance.new("UIListLayout") guiLayout.SortOrder = Enum.SortOrder.Name guiLayout.Padding = UDim.new(0, 5) guiLayout.Parent = guiScroll -- Crédit local creditLabel = Instance.new("TextLabel") creditLabel.Size = UDim2.new(1, 0, 0, 20) creditLabel.Position = UDim2.new(0, 0, 1, -25) creditLabel.BackgroundTransparency = 1 creditLabel.Font = Enum.Font.GothamBold creditLabel.Text = "Éditeur: jecheatpaspromisje" creditLabel.TextColor3 = Color3.fromRGB(100, 200, 255) creditLabel.TextSize = 12 creditLabel.Parent = mainFrame -- Bouton de refresh local refreshButton = Instance.new("TextButton") refreshButton.Size = UDim2.new(0.9, 0, 0, 40) refreshButton.Position = UDim2.new(0.05, 0, 0, 590) refreshButton.BackgroundColor3 = Color3.fromRGB(0, 180, 100) refreshButton.BorderSizePixel = 0 refreshButton.Font = Enum.Font.GothamBold refreshButton.Text = "🔄 ACTUALISER" refreshButton.TextColor3 = Color3.fromRGB(255, 255, 255) refreshButton.TextSize = 16 refreshButton.Parent = mainFrame local refreshCorner = Instance.new("UICorner") refreshCorner.CornerRadius = UDim.new(0, 10) refreshCorner.Parent = refreshButton -- Bouton STOP pour mode marche local stopWalkButton = Instance.new("TextButton") stopWalkButton.Size = UDim2.new(0.9, 0, 0, 40) stopWalkButton.Position = UDim2.new(0.05, 0, 0, 590) stopWalkButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50) stopWalkButton.BorderSizePixel = 0 stopWalkButton.Font = Enum.Font.GothamBold stopWalkButton.Text = "⏹ ARRÊTER LA MARCHE" stopWalkButton.TextColor3 = Color3.fromRGB(255, 255, 255) stopWalkButton.TextSize = 16 stopWalkButton.Visible = false stopWalkButton.Parent = mainFrame local stopWalkCorner = Instance.new("UICorner") stopWalkCorner.CornerRadius = UDim.new(0, 10) stopWalkCorner.Parent = stopWalkButton -- Fonctions local function getCharacter() return player.Character or player.CharacterAdded:Wait() end local function teleportTo(position) local char = getCharacter() local hrp = char:FindFirstChild("HumanoidRootPart") if hrp then hrp.CFrame = position end end local function walkTeleportTo(targetPosition) walkTeleporting = true stopWalkButton.Visible = true refreshButton.Visible = false task.spawn(function() local char = getCharacter() local hrp = char:FindFirstChild("HumanoidRootPart") if hrp then local startPos = hrp.Position local endPos = targetPosition.Position local distance = (endPos - startPos).Magnitude local steps = math.ceil(distance / 10) -- 10 studs par step for i = 1, steps do if not walkTeleporting then break end local alpha = i / steps local newPos = startPos:Lerp(endPos, alpha) hrp.CFrame = CFrame.new(newPos) * CFrame.Angles(0, targetPosition.Rotation.Y, 0) task.wait(0.05) end -- Position finale if walkTeleporting then hrp.CFrame = targetPosition end end walkTeleporting = false stopWalkButton.Visible = false refreshButton.Visible = true end) end local function createPlayerButton(targetPlayer) local button = Instance.new("TextButton") button.Size = UDim2.new(1, -10, 0, 80) button.BackgroundColor3 = Color3.fromRGB(40, 40, 60) button.BorderSizePixel = 0 button.Font = Enum.Font.Gotham button.TextColor3 = Color3.fromRGB(255, 255, 255) button.TextSize = 15 button.TextXAlignment = Enum.TextXAlignment.Left button.TextYAlignment = Enum.TextYAlignment.Top button.TextTruncate = Enum.TextTruncate.AtEnd -- Texte du joueur avec stats local playerText = "👤 " .. targetPlayer.Name -- Récupérer l'équipe if targetPlayer.Team then local teamColor = targetPlayer.Team.TeamColor.Color button.BorderSizePixel = 3 button.BorderColor3 = teamColor playerText = playerText .. "\n🎯 " .. targetPlayer.Team.Name end -- Récupérer les leaderstats local leaderstats = targetPlayer:FindFirstChild("leaderstats") if leaderstats then for _, stat in pairs(leaderstats:GetChildren()) do playerText = playerText .. "\n📊 " .. stat.Name .. ": " .. tostring(stat.Value) end end button.Text = playerText local padding = Instance.new("UIPadding") padding.PaddingLeft = UDim.new(0, 10) padding.PaddingTop = UDim.new(0, 5) padding.Parent = button local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 8) corner.Parent = button -- Bouton spectateur local spectateButton = Instance.new("TextButton") spectateButton.Size = UDim2.new(0, 35, 0, 35) spectateButton.Position = UDim2.new(1, -40, 1, -40) spectateButton.BackgroundColor3 = Color3.fromRGB(255, 150, 0) spectateButton.BorderSizePixel = 0 spectateButton.Font = Enum.Font.GothamBold spectateButton.Text = "👁️" spectateButton.TextColor3 = Color3.fromRGB(255, 255, 255) spectateButton.TextSize = 18 spectateButton.Parent = button local spectateCorner = Instance.new("UICorner") spectateCorner.CornerRadius = UDim.new(0, 8) spectateCorner.Parent = spectateButton -- Téléportation normale button.MouseButton1Click:Connect(function() if targetPlayer.Character then local hrp = targetPlayer.Character:FindFirstChild("HumanoidRootPart") if hrp then local targetCFrame = hrp.CFrame * CFrame.new(0, 0, 3) if teleportMode == "instant" then teleportTo(targetCFrame) else walkTeleportTo(targetCFrame) end button.BackgroundColor3 = Color3.fromRGB(0, 200, 100) task.wait(0.3) button.BackgroundColor3 = Color3.fromRGB(40, 40, 60) end end end) -- Mode spectateur spectateButton.MouseButton1Click:Connect(function() if spectatorMode and spectatedPlayer == targetPlayer then -- Arrêter le spectateur spectatorMode = false spectatedPlayer = nil spectateButton.BackgroundColor3 = Color3.fromRGB(255, 150, 0) spectateButton.Text = "👁️" else -- Démarrer le spectateur spectatorMode = true spectatedPlayer = targetPlayer spectateButton.BackgroundColor3 = Color3.fromRGB(0, 255, 100) spectateButton.Text = "⏹" -- Boucle de suivi task.spawn(function() while spectatorMode and spectatedPlayer == targetPlayer do if targetPlayer.Character then local hrp = targetPlayer.Character:FindFirstChild("HumanoidRootPart") if hrp then local char = getCharacter() local myHrp = char:FindFirstChild("HumanoidRootPart") if myHrp then myHrp.CFrame = hrp.CFrame * CFrame.new(0, 3, 5) end end end task.wait(0.1) end -- Reset du bouton si on sort de la boucle if spectatedPlayer == targetPlayer then spectateButton.BackgroundColor3 = Color3.fromRGB(255, 150, 0) spectateButton.Text = "👁️" end end) end end) button.MouseEnter:Connect(function() button.BackgroundColor3 = Color3.fromRGB(60, 60, 90) end) button.MouseLeave:Connect(function() button.BackgroundColor3 = Color3.fromRGB(40, 40, 60) end) spectateButton.MouseEnter:Connect(function() if spectatorMode and spectatedPlayer == targetPlayer then spectateButton.BackgroundColor3 = Color3.fromRGB(255, 80, 80) else spectateButton.BackgroundColor3 = Color3.fromRGB(255, 180, 50) end end) spectateButton.MouseLeave:Connect(function() if spectatorMode and spectatedPlayer == targetPlayer then spectateButton.BackgroundColor3 = Color3.fromRGB(0, 255, 100) else spectateButton.BackgroundColor3 = Color3.fromRGB(255, 150, 0) end end) button.Parent = playersScroll end local function createPartButton(part) local frame = Instance.new("Frame") frame.Size = UDim2.new(1, -10, 0, 70) frame.BackgroundColor3 = Color3.fromRGB(40, 40, 60) frame.BorderSizePixel = 0 frame.Parent = partsScroll local frameCorner = Instance.new("UICorner") frameCorner.CornerRadius = UDim.new(0, 8) frameCorner.Parent = frame local button = Instance.new("TextButton") button.Size = UDim2.new(0.7, 0, 1, 0) button.Position = UDim2.new(0, 0, 0, 0) button.BackgroundTransparency = 1 button.Font = Enum.Font.Gotham button.Text = "🧱 " .. part.Name button.TextColor3 = Color3.fromRGB(255, 255, 255) button.TextSize = 15 button.TextXAlignment = Enum.TextXAlignment.Left button.TextTruncate = Enum.TextTruncate.AtEnd button.Parent = frame local padding = Instance.new("UIPadding") padding.PaddingLeft = UDim.new(0, 15) padding.Parent = button -- Bouton paramètres local settingsButton = Instance.new("TextButton") settingsButton.Size = UDim2.new(0, 60, 0, 30) settingsButton.Position = UDim2.new(1, -65, 0, 5) settingsButton.BackgroundColor3 = Color3.fromRGB(60, 60, 90) settingsButton.BorderSizePixel = 0 settingsButton.Font = Enum.Font.GothamBold settingsButton.Text = "⚙️" settingsButton.TextColor3 = Color3.fromRGB(255, 255, 255) settingsButton.TextSize = 18 settingsButton.Parent = frame local settingsCorner = Instance.new("UICorner") settingsCorner.CornerRadius = UDim.new(0, 6) settingsCorner.Parent = settingsButton -- Couleur et CanCollide local colorLabel = Instance.new("TextLabel") colorLabel.Size = UDim2.new(0.3, 0, 0, 20) colorLabel.Position = UDim2.new(0, 10, 1, -25) colorLabel.BackgroundTransparency = 1 colorLabel.Font = Enum.Font.Gotham colorLabel.Text = "Couleur: " colorLabel.TextColor3 = Color3.fromRGB(200, 200, 200) colorLabel.TextSize = 11 colorLabel.TextXAlignment = Enum.TextXAlignment.Left colorLabel.Parent = frame local colorBox = Instance.new("Frame") colorBox.Size = UDim2.new(0, 15, 0, 15) colorBox.Position = UDim2.new(0, 60, 1, -23) colorBox.BackgroundColor3 = part.Color colorBox.BorderSizePixel = 1 colorBox.BorderColor3 = Color3.fromRGB(255, 255, 255) colorBox.Parent = frame local colorBoxCorner = Instance.new("UICorner") colorBoxCorner.CornerRadius = UDim.new(0, 3) colorBoxCorner.Parent = colorBox local collideCheck = Instance.new("TextButton") collideCheck.Size = UDim2.new(0, 20, 0, 20) collideCheck.Position = UDim2.new(0.5, 0, 1, -25) collideCheck.BackgroundColor3 = part.CanCollide and Color3.fromRGB(0, 200, 100) or Color3.fromRGB(100, 100, 100) collideCheck.BorderSizePixel = 0 collideCheck.Font = Enum.Font.GothamBold collideCheck.Text = part.CanCollide and "✓" or "" collideCheck.TextColor3 = Color3.fromRGB(255, 255, 255) collideCheck.TextSize = 14 collideCheck.Parent = frame local collideCorner = Instance.new("UICorner") collideCorner.CornerRadius = UDim.new(0, 4) collideCorner.Parent = collideCheck local collideLabel = Instance.new("TextLabel") collideLabel.Size = UDim2.new(0, 80, 0, 20) collideLabel.Position = UDim2.new(0.5, 25, 1, -25) collideLabel.BackgroundTransparency = 1 collideLabel.Font = Enum.Font.Gotham collideLabel.Text = "CanCollide" collideLabel.TextColor3 = Color3.fromRGB(200, 200, 200) collideLabel.TextSize = 11 collideLabel.TextXAlignment = Enum.TextXAlignment.Left collideLabel.Parent = frame -- Events button.MouseButton1Click:Connect(function() if part:IsA("BasePart") then local targetCFrame = part.CFrame * CFrame.new(0, 5, 0) if teleportMode == "instant" then teleportTo(targetCFrame) else walkTeleportTo(targetCFrame) end frame.BackgroundColor3 = Color3.fromRGB(0, 200, 100) task.wait(0.3) frame.BackgroundColor3 = Color3.fromRGB(40, 40, 60) end end) collideCheck.MouseButton1Click:Connect(function() part.CanCollide = not part.CanCollide collideCheck.BackgroundColor3 = part.CanCollide and Color3.fromRGB(0, 200, 100) or Color3.fromRGB(100, 100, 100) collideCheck.Text = part.CanCollide and "✓" or "" end) settingsButton.MouseButton1Click:Connect(function() -- Afficher plus d'infos (à implémenter si besoin) settingsButton.BackgroundColor3 = Color3.fromRGB(0, 200, 100) task.wait(0.2) settingsButton.BackgroundColor3 = Color3.fromRGB(60, 60, 90) end) button.MouseEnter:Connect(function() frame.BackgroundColor3 = Color3.fromRGB(60, 60, 90) end) button.MouseLeave:Connect(function() frame.BackgroundColor3 = Color3.fromRGB(40, 40, 60) end) end local function refreshPlayers() -- Nettoyer la liste for _, child in pairs(playersScroll:GetChildren()) do if child:IsA("TextButton") then child:Destroy() end end -- Trouver tous les joueurs dans le workspace (avec Humanoid) local playerCount = 0 for _, obj in pairs(workspace:GetDescendants()) do if obj:IsA("Humanoid") and obj.Parent then local model = obj.Parent -- Vérifier que c'est bien un personnage de joueur local targetPlayer = game.Players:GetPlayerFromCharacter(model) if targetPlayer and targetPlayer ~= player then createPlayerButton(targetPlayer) playerCount = playerCount + 1 end end end -- Ajuster la taille du canvas playersScroll.CanvasSize = UDim2.new(0, 0, 0, playerCount * 85) end local function refreshParts() -- Nettoyer la liste for _, child in pairs(partsScroll:GetChildren()) do if child:IsA("Frame") then child:Destroy() end end local searchText = searchBox.Text:lower() -- Trouver toutes les parts dans le workspace local partCount = 0 for _, obj in pairs(workspace:GetDescendants()) do if obj:IsA("BasePart") and obj.Name ~= "Terrain" then -- Ignorer les parts des personnages local isPlayerPart = false local parent = obj.Parent while parent do if parent:FindFirstChild("Humanoid") then isPlayerPart = true break end parent = parent.Parent end -- Filtre de recherche local matchesSearch = searchText == "" or obj.Name:lower():find(searchText, 1, true) if not isPlayerPart and matchesSearch then createPartButton(obj) partCount = partCount + 1 end end end -- Ajuster la taille du canvas partsScroll.CanvasSize = UDim2.new(0, 0, 0, partCount * 75) end local function createGuiItem(guiObject, depth) local frame = Instance.new("Frame") frame.Size = UDim2.new(1, -10, 0, 35) frame.BackgroundColor3 = Color3.fromRGB(40, 40, 60) frame.BorderSizePixel = 0 frame.Parent = guiScroll local frameCorner = Instance.new("UICorner") frameCorner.CornerRadius = UDim.new(0, 6) frameCorner.Parent = frame local indent = depth * 20 -- Indicateur de hiérarchie if depth > 0 then local indicator = Instance.new("TextLabel") indicator.Size = UDim2.new(0, indent, 1, 0) indicator.Position = UDim2.new(0, 0, 0, 0) indicator.BackgroundTransparency = 1 indicator.Font = Enum.Font.Gotham indicator.Text = string.rep(" └ ", depth) indicator.TextColor3 = Color3.fromRGB(100, 100, 150) indicator.TextSize = 10 indicator.TextXAlignment = Enum.TextXAlignment.Left indicator.Parent = frame end local label = Instance.new("TextLabel") label.Size = UDim2.new(0.6, -indent, 1, 0) label.Position = UDim2.new(0, indent, 0, 0) label.BackgroundTransparency = 1 label.Font = Enum.Font.Gotham label.Text = guiObject.Name label.TextColor3 = Color3.fromRGB(255, 255, 255) label.TextSize = 12 label.TextXAlignment = Enum.TextXAlignment.Left label.TextTruncate = Enum.TextTruncate.AtEnd label.Parent = frame local padding = Instance.new("UIPadding") padding.PaddingLeft = UDim.new(0, 5) padding.Parent = label -- Checkbox Enabled if guiObject:IsA("GuiObject") and guiObject:FindFirstChild("Enabled") ~= nil or guiObject.ClassName == "ScreenGui" then -- Ne pas permettre de désactiver notre propre GUI local isOurGui = guiObject == screenGui or guiObject:IsDescendantOf(screenGui) local enabledCheck = Instance.new("TextButton") enabledCheck.Size = UDim2.new(0, 20, 0, 20) enabledCheck.Position = UDim2.new(0.65, 0, 0.5, -10) local isEnabled = guiObject.Enabled enabledCheck.BackgroundColor3 = isEnabled and Color3.fromRGB(0, 200, 100) or Color3.fromRGB(100, 100, 100) enabledCheck.BorderSizePixel = 0 enabledCheck.Font = Enum.Font.GothamBold enabledCheck.Text = isEnabled and "✓" or "" enabledCheck.TextColor3 = Color3.fromRGB(255, 255, 255) enabledCheck.TextSize = 12 enabledCheck.Parent = frame local enabledCorner = Instance.new("UICorner") enabledCorner.CornerRadius = UDim.new(0, 4) enabledCorner.Parent = enabledCheck local enabledLabel = Instance.new("TextLabel") enabledLabel.Size = UDim2.new(0, 30, 1, 0) enabledLabel.Position = UDim2.new(0.65, -35, 0, 0) enabledLabel.BackgroundTransparency = 1 enabledLabel.Font = Enum.Font.Gotham enabledLabel.Text = "E" enabledLabel.TextColor3 = Color3.fromRGB(150, 150, 150) enabledLabel.TextSize = 10 enabledLabel.Parent = frame if not isOurGui then enabledCheck.MouseButton1Click:Connect(function() guiObject.Enabled = not guiObject.Enabled enabledCheck.BackgroundColor3 = guiObject.Enabled and Color3.fromRGB(0, 200, 100) or Color3.fromRGB(100, 100, 100) enabledCheck.Text = guiObject.Enabled and "✓" or "" end) else enabledCheck.BackgroundColor3 = Color3.fromRGB(60, 60, 60) end end -- Checkbox Visible if guiObject:IsA("GuiObject") then -- Ne pas permettre de cacher notre propre GUI local isOurGui = guiObject == screenGui or guiObject:IsDescendantOf(screenGui) local visibleCheck = Instance.new("TextButton") visibleCheck.Size = UDim2.new(0, 20, 0, 20) visibleCheck.Position = UDim2.new(0.85, 0, 0.5, -10) local isVisible = guiObject.Visible visibleCheck.BackgroundColor3 = isVisible and Color3.fromRGB(0, 200, 100) or Color3.fromRGB(100, 100, 100) visibleCheck.BorderSizePixel = 0 visibleCheck.Font = Enum.Font.GothamBold visibleCheck.Text = isVisible and "✓" or "" visibleCheck.TextColor3 = Color3.fromRGB(255, 255, 255) visibleCheck.TextSize = 12 visibleCheck.Parent = frame local visibleCorner = Instance.new("UICorner") visibleCorner.CornerRadius = UDim.new(0, 4) visibleCorner.Parent = visibleCheck local visibleLabel = Instance.new("TextLabel") visibleLabel.Size = UDim2.new(0, 30, 1, 0) visibleLabel.Position = UDim2.new(0.85, -35, 0, 0) visibleLabel.BackgroundTransparency = 1 visibleLabel.Font = Enum.Font.Gotham visibleLabel.Text = "V" visibleLabel.TextColor3 = Color3.fromRGB(150, 150, 150) visibleLabel.TextSize = 10 visibleLabel.Parent = frame if not isOurGui then visibleCheck.MouseButton1Click:Connect(function() guiObject.Visible = not guiObject.Visible visibleCheck.BackgroundColor3 = guiObject.Visible and Color3.fromRGB(0, 200, 100) or Color3.fromRGB(100, 100, 100) visibleCheck.Text = guiObject.Visible and "✓" or "" end) else visibleCheck.BackgroundColor3 = Color3.fromRGB(60, 60, 60) end end end local function refreshGui() -- Nettoyer la liste for _, child in pairs(guiScroll:GetChildren()) do if child:IsA("Frame") then child:Destroy() end end local itemCount = 0 -- Fonction récursive pour parcourir la hiérarchie local function addGuiHierarchy(guiObject, depth) createGuiItem(guiObject, depth) itemCount = itemCount + 1 -- Parcourir les enfants directs uniquement for _, child in pairs(guiObject:GetChildren()) do if child:IsA("GuiObject") or child:IsA("UIListLayout") or child:IsA("UIPadding") or child:IsA("UICorner") then addGuiHierarchy(child, depth + 1) end end end -- Parcourir PlayerGui (sauf notre propre GUI) for _, gui in pairs(playerGui:GetChildren()) do if (gui:IsA("ScreenGui") or gui:IsA("GuiBase2d")) and gui ~= screenGui then addGuiHierarchy(gui, 0) end end guiScroll.CanvasSize = UDim2.new(0, 0, 0, itemCount * 40) end -- Events des tabs playersTab.MouseButton1Click:Connect(function() playersScroll.Visible = true partsScroll.Visible = false guiScroll.Visible = false searchFrame.Visible = false modeFrame.Visible = true playersTab.BackgroundColor3 = Color3.fromRGB(0, 150, 255) playersTab.TextColor3 = Color3.fromRGB(255, 255, 255) partsTab.BackgroundColor3 = Color3.fromRGB(50, 50, 70) partsTab.TextColor3 = Color3.fromRGB(200, 200, 200) guiTab.BackgroundColor3 = Color3.fromRGB(50, 50, 70) guiTab.TextColor3 = Color3.fromRGB(200, 200, 200) refreshPlayers() end) partsTab.MouseButton1Click:Connect(function() playersScroll.Visible = false partsScroll.Visible = true guiScroll.Visible = false searchFrame.Visible = true modeFrame.Visible = true partsTab.BackgroundColor3 = Color3.fromRGB(0, 150, 255) partsTab.TextColor3 = Color3.fromRGB(255, 255, 255) playersTab.BackgroundColor3 = Color3.fromRGB(50, 50, 70) playersTab.TextColor3 = Color3.fromRGB(200, 200, 200) guiTab.BackgroundColor3 = Color3.fromRGB(50, 50, 70) guiTab.TextColor3 = Color3.fromRGB(200, 200, 200) refreshParts() end) guiTab.MouseButton1Click:Connect(function() playersScroll.Visible = false partsScroll.Visible = false guiScroll.Visible = true searchFrame.Visible = false modeFrame.Visible = false guiTab.BackgroundColor3 = Color3.fromRGB(0, 150, 255) guiTab.TextColor3 = Color3.fromRGB(255, 255, 255) playersTab.BackgroundColor3 = Color3.fromRGB(50, 50, 70) playersTab.TextColor3 = Color3.fromRGB(200, 200, 200) partsTab.BackgroundColor3 = Color3.fromRGB(50, 50, 70) partsTab.TextColor3 = Color3.fromRGB(200, 200, 200) refreshGui() end) -- Mode de téléportation instantButton.MouseButton1Click:Connect(function() teleportMode = "instant" instantButton.BackgroundColor3 = Color3.fromRGB(0, 200, 100) instantButton.TextColor3 = Color3.fromRGB(255, 255, 255) walkButton.BackgroundColor3 = Color3.fromRGB(50, 50, 70) walkButton.TextColor3 = Color3.fromRGB(200, 200, 200) end) walkButton.MouseButton1Click:Connect(function() teleportMode = "walk" walkButton.BackgroundColor3 = Color3.fromRGB(0, 200, 100) walkButton.TextColor3 = Color3.fromRGB(255, 255, 255) instantButton.BackgroundColor3 = Color3.fromRGB(50, 50, 70) instantButton.TextColor3 = Color3.fromRGB(200, 200, 200) end) -- Arrêter la marche stopWalkButton.MouseButton1Click:Connect(function() walkTeleporting = false stopWalkButton.Visible = false refreshButton.Visible = true end) -- Recherche searchBox:GetPropertyChangedSignal("Text"):Connect(function() if partsScroll.Visible then refreshParts() end end) -- Bouton refresh refreshButton.MouseButton1Click:Connect(function() if playersScroll.Visible then refreshPlayers() elseif partsScroll.Visible then refreshParts() elseif guiScroll.Visible then refreshGui() end refreshButton.BackgroundColor3 = Color3.fromRGB(0, 255, 150) task.wait(0.2) refreshButton.BackgroundColor3 = Color3.fromRGB(0, 180, 100) end) -- Toggle menu toggleButton.MouseButton1Click:Connect(function() mainFrame.Visible = true toggleButton.Visible = false refreshPlayers() end) closeButton.MouseButton1Click:Connect(function() mainFrame.Visible = false toggleButton.Visible = true end) -- Effets hover toggleButton.MouseEnter:Connect(function() toggleButton.BackgroundColor3 = Color3.fromRGB(60, 60, 90) end) toggleButton.MouseLeave:Connect(function() toggleButton.BackgroundColor3 = Color3.fromRGB(40, 40, 60) end) closeButton.MouseEnter:Connect(function() closeButton.BackgroundColor3 = Color3.fromRGB(255, 70, 70) end) closeButton.MouseLeave:Connect(function() closeButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50) end) refreshButton.MouseEnter:Connect(function() refreshButton.BackgroundColor3 = Color3.fromRGB(0, 220, 120) end) refreshButton.MouseLeave:Connect(function() refreshButton.BackgroundColor3 = Color3.fromRGB(0, 180, 100) end) stopWalkButton.MouseEnter:Connect(function() stopWalkButton.BackgroundColor3 = Color3.fromRGB(255, 80, 80) end) stopWalkButton.MouseLeave:Connect(function() stopWalkButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50) end) -- Charger les joueurs au démarrage refreshPlayers() searchFrame.Visible = false