-- Script Local de Téléportation Multi-Modes avec Interface -- Place ce script dans StarterPlayer > StarterPlayerScripts local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoidRootPart = character:WaitForChild("HumanoidRootPart") -- Configuration local TELEPORT_DISTANCE_MIN = 5 local TELEPORT_DISTANCE_MAX = 15 local TELEPORT_COOLDOWN = 1.5 local canTeleport = true local currentMode = "instant" -- Modes de téléportation disponibles local teleportModes = { {name = "instant", icon = "⚡", display = "Instant", color = Color3.fromRGB(100, 150, 255)}, {name = "walk", icon = "🚶", display = "Marche", color = Color3.fromRGB(100, 200, 100)}, {name = "tween", icon = "✈️", display = "Vol Smooth", color = Color3.fromRGB(150, 100, 255)}, {name = "jump", icon = "🦘", display = "Super Saut", color = Color3.fromRGB(255, 150, 100)}, {name = "spin", icon = "🌀", display = "Tourbillon", color = Color3.fromRGB(100, 255, 200)}, {name = "fade", icon = "👻", display = "Fantôme", color = Color3.fromRGB(200, 100, 255)}, {name = "rocket", icon = "🚀", display = "Fusée", color = Color3.fromRGB(255, 100, 150)}, {name = "behind", icon = "🎯", display = "Derrière", color = Color3.fromRGB(255, 200, 100)}, {name = "above", icon = "☁️", display = "Au-dessus", color = Color3.fromRGB(150, 200, 255)}, {name = "circle", icon = "⭕", display = "Orbite", color = Color3.fromRGB(255, 150, 255)}, {name = "zigzag", icon = "⚡", display = "Zig-Zag", color = Color3.fromRGB(255, 255, 100)}, {name = "spiral", icon = "🌪️", display = "Spirale", color = Color3.fromRGB(100, 255, 255)}, } -- Fonction pour obtenir une position aléatoire autour d'un point local function getRandomPositionAround(centerCFrame, distance) distance = distance or math.random(TELEPORT_DISTANCE_MIN, TELEPORT_DISTANCE_MAX) local angle = math.random() * math.pi * 2 local offsetX = math.cos(angle) * distance local offsetZ = math.sin(angle) * distance return centerCFrame * CFrame.new(offsetX, 0, offsetZ) end -- MODES DE TÉLÉPORTATION local function teleportInstant(targetCFrame) if humanoidRootPart then humanoidRootPart.CFrame = targetCFrame end end local function teleportWalk(targetCFrame) local humanoid = character:FindFirstChild("Humanoid") if humanoid then humanoid:MoveTo(targetCFrame.Position) end end local function teleportTween(targetCFrame) if not humanoidRootPart then return end local tweenInfo = TweenInfo.new(1.5, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut) local tween = TweenService:Create(humanoidRootPart, tweenInfo, {CFrame = targetCFrame}) tween:Play() end local function teleportJump(targetCFrame) if not humanoidRootPart then return end local startPos = humanoidRootPart.CFrame local midPos = (startPos.Position + targetCFrame.Position) / 2 + Vector3.new(0, 30, 0) local tweenInfo1 = TweenInfo.new(0.75, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tweenInfo2 = TweenInfo.new(0.75, Enum.EasingStyle.Quad, Enum.EasingDirection.In) local tween1 = TweenService:Create(humanoidRootPart, tweenInfo1, {CFrame = CFrame.new(midPos)}) tween1:Play() tween1.Completed:Connect(function() local tween2 = TweenService:Create(humanoidRootPart, tweenInfo2, {CFrame = targetCFrame}) tween2:Play() end) end local function teleportSpin(targetCFrame) if not humanoidRootPart then return end local duration = 1 local startTime = tick() local startCFrame = humanoidRootPart.CFrame local connection connection = RunService.Heartbeat:Connect(function() local elapsed = tick() - startTime local alpha = elapsed / duration if alpha >= 1 then humanoidRootPart.CFrame = targetCFrame connection:Disconnect() return end local rotation = CFrame.Angles(0, math.pi * 4 * alpha, 0) humanoidRootPart.CFrame = startCFrame:Lerp(targetCFrame, alpha) * rotation end) end local function teleportFade(targetCFrame) if not humanoidRootPart then return end -- Fade out for _, part in pairs(character:GetDescendants()) do if part:IsA("BasePart") then local tween = TweenService:Create(part, TweenInfo.new(0.5), {Transparency = 1}) tween:Play() end end task.wait(0.5) humanoidRootPart.CFrame = targetCFrame task.wait(0.2) -- Fade in for _, part in pairs(character:GetDescendants()) do if part:IsA("BasePart") then local originalTransparency = 0 if part.Name == "HumanoidRootPart" then originalTransparency = 1 end local tween = TweenService:Create(part, TweenInfo.new(0.5), {Transparency = originalTransparency}) tween:Play() end end end local function teleportRocket(targetCFrame) if not humanoidRootPart then return end local startCFrame = humanoidRootPart.CFrame local upCFrame = startCFrame + Vector3.new(0, 50, 0) -- Monter local tweenInfo1 = TweenInfo.new(0.8, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tween1 = TweenService:Create(humanoidRootPart, tweenInfo1, {CFrame = upCFrame}) tween1:Play() tween1.Completed:Connect(function() task.wait(0.2) -- Descendre vers la cible local tweenInfo2 = TweenInfo.new(0.8, Enum.EasingStyle.Quad, Enum.EasingDirection.In) local tween2 = TweenService:Create(humanoidRootPart, tweenInfo2, {CFrame = targetCFrame}) tween2:Play() end) end local function teleportBehind(targetCFrame) if not humanoidRootPart then return end -- Position derrière le joueur local behindCFrame = targetCFrame * CFrame.new(0, 0, 5) local tweenInfo = TweenInfo.new(0.8, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut) local tween = TweenService:Create(humanoidRootPart, tweenInfo, {CFrame = behindCFrame}) tween:Play() end local function teleportAbove(targetCFrame) if not humanoidRootPart then return end -- Position au-dessus local aboveCFrame = targetCFrame + Vector3.new(0, 15, 0) local tweenInfo = TweenInfo.new(0.8, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut) local tween = TweenService:Create(humanoidRootPart, tweenInfo, {CFrame = aboveCFrame}) tween:Play() end local function teleportCircle(targetCFrame) if not humanoidRootPart then return end local duration = 2 local startTime = tick() local radius = 10 local connection connection = RunService.Heartbeat:Connect(function() local elapsed = tick() - startTime local alpha = elapsed / duration if alpha >= 1 then humanoidRootPart.CFrame = targetCFrame connection:Disconnect() return end local angle = math.pi * 2 * alpha local offset = Vector3.new(math.cos(angle) * radius, 0, math.sin(angle) * radius) humanoidRootPart.CFrame = CFrame.new(targetCFrame.Position + offset) end) end local function teleportZigZag(targetCFrame) if not humanoidRootPart then return end local startPos = humanoidRootPart.Position local endPos = targetCFrame.Position local points = 5 for i = 1, points do local alpha = i / points local midPos = startPos:Lerp(endPos, alpha) local offset = Vector3.new(math.sin(alpha * math.pi * 3) * 5, 0, 0) local nextCFrame = CFrame.new(midPos + offset) local tweenInfo = TweenInfo.new(0.2, Enum.EasingStyle.Linear) local tween = TweenService:Create(humanoidRootPart, tweenInfo, {CFrame = nextCFrame}) tween:Play() task.wait(0.2) end humanoidRootPart.CFrame = targetCFrame end local function teleportSpiral(targetCFrame) if not humanoidRootPart then return end local duration = 2 local startTime = tick() local startCFrame = humanoidRootPart.CFrame local connection connection = RunService.Heartbeat:Connect(function() local elapsed = tick() - startTime local alpha = elapsed / duration if alpha >= 1 then humanoidRootPart.CFrame = targetCFrame connection:Disconnect() return end local angle = math.pi * 4 * alpha local radius = 10 * (1 - alpha) local offset = Vector3.new(math.cos(angle) * radius, 20 * alpha, math.sin(angle) * radius) local currentPos = startCFrame.Position:Lerp(targetCFrame.Position, alpha) humanoidRootPart.CFrame = CFrame.new(currentPos + offset) end) end -- Fonction principale de téléportation local function executeTeleport(targetCFrame) if not canTeleport then return end canTeleport = false if currentMode == "instant" then teleportInstant(targetCFrame) elseif currentMode == "walk" then teleportWalk(targetCFrame) elseif currentMode == "tween" then teleportTween(targetCFrame) elseif currentMode == "jump" then teleportJump(targetCFrame) elseif currentMode == "spin" then teleportSpin(targetCFrame) elseif currentMode == "fade" then teleportFade(targetCFrame) elseif currentMode == "rocket" then teleportRocket(targetCFrame) elseif currentMode == "behind" then teleportBehind(targetCFrame) elseif currentMode == "above" then teleportAbove(targetCFrame) elseif currentMode == "circle" then teleportCircle(targetCFrame) elseif currentMode == "zigzag" then teleportZigZag(targetCFrame) elseif currentMode == "spiral" then teleportSpiral(targetCFrame) end task.wait(TELEPORT_COOLDOWN) canTeleport = true end -- Créer l'interface local screenGui = Instance.new("ScreenGui") screenGui.Name = "TeleportGui" screenGui.ResetOnSpawn = false screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling screenGui.Parent = player:WaitForChild("PlayerGui") -- Frame principale local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0, 350, 0, 500) mainFrame.Position = UDim2.new(0.5, -175, 0.5, -250) mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 35) mainFrame.BorderSizePixel = 0 mainFrame.Visible = false mainFrame.Active = true mainFrame.Draggable = true mainFrame.Parent = screenGui local mainCorner = Instance.new("UICorner") mainCorner.CornerRadius = UDim.new(0, 12) mainCorner.Parent = mainFrame -- Titre local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 50) title.BackgroundColor3 = Color3.fromRGB(15, 15, 25) title.BorderSizePixel = 0 title.Text = "🌟 Téléportation Multi-Modes" title.TextColor3 = Color3.fromRGB(255, 255, 255) title.TextSize = 20 title.Font = Enum.Font.GothamBold title.Parent = mainFrame local titleCorner = Instance.new("UICorner") titleCorner.CornerRadius = UDim.new(0, 12) titleCorner.Parent = title -- Bouton fermer local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0, 30, 0, 30) closeBtn.Position = UDim2.new(1, -40, 0, 10) closeBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50) closeBtn.Text = "✕" closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255) closeBtn.TextSize = 18 closeBtn.Font = Enum.Font.GothamBold closeBtn.Parent = mainFrame local closeCorner = Instance.new("UICorner") closeCorner.CornerRadius = UDim.new(1, 0) closeCorner.Parent = closeBtn closeBtn.MouseButton1Click:Connect(function() mainFrame.Visible = not mainFrame.Visible end) -- Section modes local modeLabel = Instance.new("TextLabel") modeLabel.Size = UDim2.new(1, -20, 0, 25) modeLabel.Position = UDim2.new(0, 10, 0, 60) modeLabel.BackgroundTransparency = 1 modeLabel.Text = "Choisis ton mode de téléportation:" modeLabel.TextColor3 = Color3.fromRGB(200, 200, 200) modeLabel.TextSize = 14 modeLabel.Font = Enum.Font.Gotham modeLabel.TextXAlignment = Enum.TextXAlignment.Left modeLabel.Parent = mainFrame -- Grille de modes local modeScroll = Instance.new("ScrollingFrame") modeScroll.Size = UDim2.new(1, -20, 0, 180) modeScroll.Position = UDim2.new(0, 10, 0, 90) modeScroll.BackgroundColor3 = Color3.fromRGB(35, 35, 50) modeScroll.BorderSizePixel = 0 modeScroll.ScrollBarThickness = 6 modeScroll.Parent = mainFrame local modeScrollCorner = Instance.new("UICorner") modeScrollCorner.CornerRadius = UDim.new(0, 8) modeScrollCorner.Parent = modeScroll local modeGrid = Instance.new("UIGridLayout") modeGrid.CellSize = UDim2.new(0, 100, 0, 50) modeGrid.CellPadding = UDim2.new(0, 5, 0, 5) modeGrid.SortOrder = Enum.SortOrder.LayoutOrder modeGrid.Parent = modeScroll local modePadding = Instance.new("UIPadding") modePadding.PaddingTop = UDim.new(0, 5) modePadding.PaddingLeft = UDim.new(0, 5) modePadding.Parent = modeScroll -- Créer les boutons de modes for i, mode in ipairs(teleportModes) do local btn = Instance.new("TextButton") btn.Name = mode.name btn.BackgroundColor3 = mode.color btn.BorderSizePixel = 0 btn.Text = mode.icon .. "\n" .. mode.display btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.TextSize = 12 btn.Font = Enum.Font.GothamBold btn.Parent = modeScroll local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(0, 8) btnCorner.Parent = btn btn.MouseButton1Click:Connect(function() currentMode = mode.name -- Mettre à jour les couleurs for _, child in pairs(modeScroll:GetChildren()) do if child:IsA("TextButton") then child.BackgroundTransparency = 0.5 end end btn.BackgroundTransparency = 0 end) if mode.name == currentMode then btn.BackgroundTransparency = 0 else btn.BackgroundTransparency = 0.5 end end modeScroll.CanvasSize = UDim2.new(0, 0, 0, modeGrid.AbsoluteContentSize.Y + 10) -- Liste joueurs local playerLabel = Instance.new("TextLabel") playerLabel.Size = UDim2.new(1, -20, 0, 25) playerLabel.Position = UDim2.new(0, 10, 0, 280) playerLabel.BackgroundTransparency = 1 playerLabel.Text = "Joueurs connectés:" playerLabel.TextColor3 = Color3.fromRGB(200, 200, 200) playerLabel.TextSize = 14 playerLabel.Font = Enum.Font.Gotham playerLabel.TextXAlignment = Enum.TextXAlignment.Left playerLabel.Parent = mainFrame local playerScroll = Instance.new("ScrollingFrame") playerScroll.Size = UDim2.new(1, -20, 0, 120) playerScroll.Position = UDim2.new(0, 10, 0, 310) playerScroll.BackgroundColor3 = Color3.fromRGB(35, 35, 50) playerScroll.BorderSizePixel = 0 playerScroll.ScrollBarThickness = 6 playerScroll.Parent = mainFrame local playerScrollCorner = Instance.new("UICorner") playerScrollCorner.CornerRadius = UDim.new(0, 8) playerScrollCorner.Parent = playerScroll local playerList = Instance.new("UIListLayout") playerList.Padding = UDim.new(0, 5) playerList.SortOrder = Enum.SortOrder.Name playerList.Parent = playerScroll -- Bouton téléportation aléatoire local randomBtn = Instance.new("TextButton") randomBtn.Size = UDim2.new(1, -20, 0, 50) randomBtn.Position = UDim2.new(0, 10, 1, -60) randomBtn.BackgroundColor3 = Color3.fromRGB(150, 50, 200) randomBtn.Text = "🎲 Téléporter Aléatoirement" randomBtn.TextColor3 = Color3.fromRGB(255, 255, 255) randomBtn.TextSize = 18 randomBtn.Font = Enum.Font.GothamBold randomBtn.Parent = mainFrame local randomCorner = Instance.new("UICorner") randomCorner.CornerRadius = UDim.new(0, 10) randomCorner.Parent = randomBtn -- Créer boutons joueurs local function createPlayerButton(targetPlayer) if targetPlayer == player then return end local btn = Instance.new("TextButton") btn.Name = targetPlayer.Name btn.Size = UDim2.new(1, -10, 0, 35) btn.BackgroundColor3 = Color3.fromRGB(45, 45, 65) btn.Text = "👤 " .. targetPlayer.DisplayName btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.TextSize = 14 btn.Font = Enum.Font.Gotham btn.TextXAlignment = Enum.TextXAlignment.Left btn.Parent = playerScroll local pad = Instance.new("UIPadding") pad.PaddingLeft = UDim.new(0, 10) pad.Parent = btn local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 6) corner.Parent = btn btn.MouseButton1Click:Connect(function() if targetPlayer.Character then local hrp = targetPlayer.Character:FindFirstChild("HumanoidRootPart") if hrp then local targetCFrame = getRandomPositionAround(hrp.CFrame) executeTeleport(targetCFrame) btn.BackgroundColor3 = Color3.fromRGB(0, 200, 100) task.wait(0.3) btn.BackgroundColor3 = Color3.fromRGB(45, 45, 65) end end end) end local function updatePlayerList() for _, child in pairs(playerScroll:GetChildren()) do if child:IsA("TextButton") then child:Destroy() end end for _, p in pairs(Players:GetPlayers()) do createPlayerButton(p) end playerScroll.CanvasSize = UDim2.new(0, 0, 0, playerList.AbsoluteContentSize.Y) end -- Téléportation aléatoire randomBtn.MouseButton1Click:Connect(function() local others = {} for _, p in pairs(Players:GetPlayers()) do if p ~= player and p.Character then local hrp = p.Character:FindFirstChild("HumanoidRootPart") if hrp then table.insert(others, hrp) end end end if #others == 0 then randomBtn.Text = "❌ Aucun joueur!" task.wait(1) randomBtn.Text = "🎲 Téléporter Aléatoirement" return end local target = others[math.random(1, #others)] local targetCFrame = getRandomPositionAround(target.CFrame) executeTeleport(targetCFrame) randomBtn.BackgroundColor3 = Color3.fromRGB(0, 200, 100) task.wait(0.3) randomBtn.BackgroundColor3 = Color3.fromRGB(150, 50, 200) end) updatePlayerList() Players.PlayerAdded:Connect(updatePlayerList) Players.PlayerRemoving:Connect(updatePlayerList) player.CharacterAdded:Connect(function(newChar) character = newChar humanoidRootPart = character:WaitForChild("HumanoidRootPart") canTeleport = true end) -- Indicateur de touches permanent en bas à droite local keyIndicator = Instance.new("Frame") keyIndicator.Name = "KeyIndicator" keyIndicator.Size = UDim2.new(0, 180, 0, 80) keyIndicator.Position = UDim2.new(1, -190, 1, -90) keyIndicator.BackgroundColor3 = Color3.fromRGB(20, 20, 30) keyIndicator.BorderSizePixel = 0 keyIndicator.Parent = screenGui local keyCorner = Instance.new("UICorner") keyCorner.CornerRadius = UDim.new(0, 10) keyCorner.Parent = keyIndicator -- Titre de l'indicateur local keyTitle = Instance.new("TextLabel") keyTitle.Size = UDim2.new(1, 0, 0, 25) keyTitle.BackgroundTransparency = 1 keyTitle.Text = "⌨️ Contrôles" keyTitle.TextColor3 = Color3.fromRGB(200, 200, 200) keyTitle.TextSize = 14 keyTitle.Font = Enum.Font.GothamBold keyTitle.Parent = keyIndicator -- Liste des touches local keysText = Instance.new("TextLabel") keysText.Size = UDim2.new(1, -10, 1, -30) keysText.Position = UDim2.new(0, 5, 0, 25) keysText.BackgroundTransparency = 1 keysText.Text = "T - Ouvrir/Fermer\nR - Téléport Aléatoire" keysText.TextColor3 = Color3.fromRGB(255, 255, 255) keysText.TextSize = 13 keysText.Font = Enum.Font.Gotham keysText.TextXAlignment = Enum.TextXAlignment.Left keysText.TextYAlignment = Enum.TextYAlignment.Top keysText.Parent = keyIndicator -- Gestion des touches clavier/console local UserInputService = game:GetService("UserInputService") UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end -- Touche T pour ouvrir/fermer l'interface if input.KeyCode == Enum.KeyCode.T or input.KeyCode == Enum.KeyCode.ButtonY then mainFrame.Visible = not mainFrame.Visible -- Animation de feedback keyIndicator.BackgroundColor3 = Color3.fromRGB(50, 100, 150) task.wait(0.2) keyIndicator.BackgroundColor3 = Color3.fromRGB(20, 20, 30) end -- Touche R pour téléportation aléatoire if input.KeyCode == Enum.KeyCode.R or input.KeyCode == Enum.KeyCode.ButtonX then local others = {} for _, p in pairs(Players:GetPlayers()) do if p ~= player and p.Character then local hrp = p.Character:FindFirstChild("HumanoidRootPart") if hrp then table.insert(others, hrp) end end end if #others > 0 then local target = others[math.random(1, #others)] local targetCFrame = getRandomPositionAround(target.CFrame) executeTeleport(targetCFrame) -- Animation de feedback keyIndicator.BackgroundColor3 = Color3.fromRGB(100, 50, 150) task.wait(0.2) keyIndicator.BackgroundColor3 = Color3.fromRGB(20, 20, 30) end end end) print("🌟 Interface de téléportation multi-modes chargée!")