Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Players = game:GetService("Players")
- local UserInputService = game:GetService("UserInputService")
- local TweenService = game:GetService("TweenService")
- -- Современный UI с анимациями
- local ScreenGui = Instance.new("ScreenGui")
- local MainFrame = Instance.new("Frame")
- local UICorner = Instance.new("UICorner")
- local UIStroke = Instance.new("UIStroke")
- local TitleBar = Instance.new("Frame")
- local Title = Instance.new("TextLabel")
- local CloseButton = Instance.new("ImageButton")
- local PlayerList = Instance.new("ScrollingFrame")
- local PlayerButtonTemplate = Instance.new("TextButton")
- local SearchBox = Instance.new("TextBox")
- local TeleportButton = Instance.new("TextButton")
- local FlyToggle = Instance.new("TextButton")
- local LoadingIndicator = Instance.new("Frame")
- -- Настройки GUI
- ScreenGui.Name = "TeleportUI"
- ScreenGui.ResetOnSpawn = false
- ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
- ScreenGui.DisplayOrder = 999
- ScreenGui.Parent = Players.LocalPlayer:WaitForChild("PlayerGui")
- -- Главное окно
- MainFrame.Name = "MainFrame"
- MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 36)
- MainFrame.BorderSizePixel = 0
- MainFrame.Position = UDim2.new(0.5, -175, 0.5, -200)
- MainFrame.Size = UDim2.new(0, 350, 0, 450)
- MainFrame.AnchorPoint = Vector2.new(0.5, 0.5)
- MainFrame.Parent = ScreenGui
- -- Скругленные углы
- UICorner.CornerRadius = UDim.new(0, 8)
- UICorner.Parent = MainFrame
- -- Контур окна
- UIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
- UIStroke.Color = Color3.fromRGB(60, 60, 68)
- UIStroke.LineJoinMode = Enum.LineJoinMode.Round
- UIStroke.Thickness = 2
- UIStroke.Parent = MainFrame
- -- Заголовок окна
- TitleBar.Name = "TitleBar"
- TitleBar.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
- TitleBar.BorderSizePixel = 0
- TitleBar.Size = UDim2.new(1, 0, 0, 40)
- TitleBar.Parent = MainFrame
- Title.Name = "Title"
- Title.BackgroundTransparency = 1
- Title.Position = UDim2.new(0, 15, 0, 0)
- Title.Size = UDim2.new(1, -40, 1, 0)
- Title.Font = Enum.Font.GothamBold
- Title.Text = "ТЕЛЕПОРТ К ИГРОКУ"
- Title.TextColor3 = Color3.fromRGB(220, 220, 220)
- Title.TextSize = 14
- Title.TextXAlignment = Enum.TextXAlignment.Left
- Title.Parent = TitleBar
- -- Кнопка закрытия
- CloseButton.Name = "CloseButton"
- CloseButton.BackgroundTransparency = 1
- CloseButton.Image = "rbxassetid://3926305904"
- CloseButton.ImageColor3 = Color3.fromRGB(150, 150, 150)
- CloseButton.ImageRectOffset = Vector2.new(284, 4)
- CloseButton.ImageRectSize = Vector2.new(24, 24)
- CloseButton.Position = UDim2.new(1, -32, 0.5, -12)
- CloseButton.Size = UDim2.new(0, 24, 0, 24)
- CloseButton.Parent = TitleBar
- CloseButton.MouseEnter:Connect(function()
- CloseButton.ImageColor3 = Color3.fromRGB(220, 220, 220)
- end)
- CloseButton.MouseLeave:Connect(function()
- CloseButton.ImageColor3 = Color3.fromRGB(150, 150, 150)
- end)
- CloseButton.MouseButton1Click:Connect(function()
- ScreenGui:Destroy()
- end)
- -- Поле поиска
- SearchBox.Name = "SearchBox"
- SearchBox.BackgroundColor3 = Color3.fromRGB(40, 40, 46)
- SearchBox.BorderSizePixel = 0
- SearchBox.Position = UDim2.new(0, 15, 0, 50)
- SearchBox.Size = UDim2.new(1, -30, 0, 35)
- SearchBox.Font = Enum.Font.Gotham
- SearchBox.PlaceholderColor3 = Color3.fromRGB(140, 140, 150)
- SearchBox.PlaceholderText = "Поиск игроков..."
- SearchBox.Text = ""
- SearchBox.TextColor3 = Color3.fromRGB(220, 220, 220)
- SearchBox.TextSize = 14
- SearchBox.TextXAlignment = Enum.TextXAlignment.Left
- SearchBox.Parent = MainFrame
- local UICorner_2 = Instance.new("UICorner")
- UICorner_2.CornerRadius = UDim.new(0, 6)
- UICorner_2.Parent = SearchBox
- local UIPadding = Instance.new("UIPadding")
- UIPadding.PaddingLeft = UDim.new(0, 10)
- UIPadding.Parent = SearchBox
- -- Список игроков
- PlayerList.Name = "PlayerList"
- PlayerList.Active = true
- PlayerList.BackgroundTransparency = 1
- PlayerList.BorderSizePixel = 0
- PlayerList.Position = UDim2.new(0, 15, 0, 95)
- PlayerList.Size = UDim2.new(1, -30, 1, -160)
- PlayerList.ScrollBarImageColor3 = Color3.fromRGB(100, 100, 110)
- PlayerList.ScrollBarThickness = 4
- PlayerList.CanvasSize = UDim2.new(0, 0, 0, 0)
- PlayerList.Parent = MainFrame
- -- Шаблон кнопки игрока
- PlayerButtonTemplate.Name = "PlayerButtonTemplate"
- PlayerButtonTemplate.BackgroundColor3 = Color3.fromRGB(40, 40, 46)
- PlayerButtonTemplate.BorderSizePixel = 0
- PlayerButtonTemplate.Size = UDim2.new(1, 0, 0, 40)
- PlayerButtonTemplate.Visible = false
- PlayerButtonTemplate.Font = Enum.Font.Gotham
- PlayerButtonTemplate.Text = ""
- PlayerButtonTemplate.TextColor3 = Color3.fromRGB(220, 220, 220)
- PlayerButtonTemplate.TextSize = 14
- PlayerButtonTemplate.TextXAlignment = Enum.TextXAlignment.Left
- PlayerButtonTemplate.Parent = PlayerList
- local UICorner_3 = Instance.new("UICorner")
- UICorner_3.CornerRadius = UDim.new(0, 6)
- UICorner_3.Parent = PlayerButtonTemplate
- local UIPadding_2 = Instance.new("UIPadding")
- UIPadding_2.PaddingLeft = UDim.new(0, 12)
- UIPadding_2.Parent = PlayerButtonTemplate
- -- Кнопка телепортации
- TeleportButton.Name = "TeleportButton"
- TeleportButton.BackgroundColor3 = Color3.fromRGB(0, 162, 255)
- TeleportButton.BorderSizePixel = 0
- TeleportButton.Position = UDim2.new(0.5, -100, 1, -100)
- TeleportButton.Size = UDim2.new(0, 200, 0, 40)
- TeleportButton.Font = Enum.Font.GothamBold
- TeleportButton.Text = "ТЕЛЕПОРТИРОВАТЬСЯ"
- TeleportButton.TextColor3 = Color3.new(1, 1, 1)
- TeleportButton.TextSize = 14
- TeleportButton.Parent = MainFrame
- local UICorner_4 = Instance.new("UICorner")
- UICorner_4.CornerRadius = UDim.new(0, 6)
- UICorner_4.Parent = TeleportButton
- -- Кнопка переключения режима телепортации/полета
- FlyToggle.Name = "FlyToggle"
- FlyToggle.BackgroundColor3 = Color3.fromRGB(80, 80, 90)
- FlyToggle.BorderSizePixel = 0
- FlyToggle.Position = UDim2.new(0.5, -100, 1, -50)
- FlyToggle.Size = UDim2.new(0, 200, 0, 40)
- FlyToggle.Font = Enum.Font.GothamBold
- FlyToggle.Text = "РЕЖИМ: ТЕЛЕПОРТ"
- FlyToggle.TextColor3 = Color3.new(1, 1, 1)
- FlyToggle.TextSize = 14
- FlyToggle.Parent = MainFrame
- local UICorner_5 = Instance.new("UICorner")
- UICorner_5.CornerRadius = UDim.new(0, 6)
- UICorner_5.Parent = FlyToggle
- -- Индикатор загрузки
- LoadingIndicator.Name = "LoadingIndicator"
- LoadingIndicator.BackgroundColor3 = Color3.fromRGB(0, 162, 255)
- LoadingIndicator.BorderSizePixel = 0
- LoadingIndicator.Position = UDim2.new(0.5, -15, 1, -60)
- LoadingIndicator.Size = UDim2.new(0, 30, 0, 3)
- LoadingIndicator.Visible = false
- LoadingIndicator.Parent = MainFrame
- -- Перетаскивание окна
- local dragging
- local dragInput
- local dragStart
- local startPos
- local function updateInput(input)
- local delta = input.Position - dragStart
- MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
- end
- TitleBar.InputBegan:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 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)
- TitleBar.InputChanged:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseMovement then
- dragInput = input
- end
- end)
- UserInputService.InputChanged:Connect(function(input)
- if input == dragInput and dragging then
- updateInput(input)
- end
- end)
- -- Логика телепортации
- local selectedPlayer = nil
- local debounce = false
- local teleportMode = "teleport" -- "teleport" или "fly"
- -- Функция полета к игроку
- local function flyToPlayer(targetCFrame)
- local character = Players.LocalPlayer.Character
- if not character then return end
- local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
- if not humanoidRootPart then return end
- local tweenInfo = TweenInfo.new(
- 2, -- Длительность
- Enum.EasingStyle.Quad, -- Стиль анимации
- Enum.EasingDirection.Out, -- Направление
- 0, -- Количество повторений
- false, -- Обратная анимация
- 0 -- Задержка
- )
- local tween = TweenService:Create(humanoidRootPart, tweenInfo, {CFrame = targetCFrame})
- tween:Play()
- return tween
- end
- -- Функция создания кнопки игрока
- local function createPlayerButton(player)
- local button = PlayerButtonTemplate:Clone()
- button.Name = player.Name
- button.Text = player.DisplayName ~= "" and player.DisplayName or player.Name
- button.Visible = true
- button.Parent = PlayerList
- local playerIcon = Instance.new("ImageLabel")
- playerIcon.Name = "PlayerIcon"
- playerIcon.BackgroundTransparency = 1
- playerIcon.Position = UDim2.new(1, -32, 0.5, -12)
- playerIcon.Size = UDim2.new(0, 24, 0, 24)
- playerIcon.Image = Players:GetUserThumbnailAsync(player.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size100x100)
- playerIcon.Parent = button
- button.MouseButton1Click:Connect(function()
- -- Сбрасываем выделение у всех кнопок
- for _, child in ipairs(PlayerList:GetChildren()) do
- if child:IsA("TextButton") and child ~= PlayerButtonTemplate then
- child.BackgroundColor3 = Color3.fromRGB(40, 40, 46)
- end
- end
- -- Выделяем выбранную кнопку
- button.BackgroundColor3 = Color3.fromRGB(60, 60, 70)
- selectedPlayer = player
- end)
- return button
- end
- -- Функция обновления списка игроков
- local function updatePlayerList(searchTerm)
- -- Очищаем старый список
- for _, child in ipairs(PlayerList:GetChildren()) do
- if child:IsA("TextButton") and child ~= PlayerButtonTemplate then
- child:Destroy()
- end
- end
- -- Добавляем игроков с учетом поиска
- local players = Players:GetPlayers()
- local yOffset = 0
- local localPlayer = Players.LocalPlayer
- for _, player in ipairs(players) do
- if player ~= localPlayer then
- local playerName = player.Name:lower()
- local displayName = player.DisplayName:lower()
- local searchLower = searchTerm and searchTerm:lower() or ""
- if searchTerm == "" or playerName:find(searchLower) or displayName:find(searchLower) then
- local button = createPlayerButton(player)
- button.Position = UDim2.new(0, 0, 0, yOffset)
- yOffset = yOffset + 45
- end
- end
- end
- PlayerList.CanvasSize = UDim2.new(0, 0, 0, yOffset)
- end
- -- Поиск игроков
- SearchBox:GetPropertyChangedSignal("Text"):Connect(function()
- updatePlayerList(SearchBox.Text)
- end)
- -- Переключение режима телепортации/полета
- FlyToggle.MouseButton1Click:Connect(function()
- if teleportMode == "teleport" then
- teleportMode = "fly"
- FlyToggle.Text = "РЕЖИМ: ПОЛЕТ"
- FlyToggle.BackgroundColor3 = Color3.fromRGB(255, 162, 0)
- TeleportButton.Text = "ЛЕТЕТЬ К ИГРОКУ"
- else
- teleportMode = "teleport"
- FlyToggle.Text = "РЕЖИМ: ТЕЛЕПОРТ"
- FlyToggle.BackgroundColor3 = Color3.fromRGB(80, 80, 90)
- TeleportButton.Text = "ТЕЛЕПОРТИРОВАТЬСЯ"
- end
- end)
- -- Телепортация/полет
- TeleportButton.MouseButton1Click:Connect(function()
- if debounce then return end
- if selectedPlayer then
- debounce = true
- TeleportButton.Text = teleportMode == "teleport" and "ТЕЛЕПОРТАЦИЯ..." or "ПОЛЕТ..."
- LoadingIndicator.Visible = true
- local character = Players.LocalPlayer.Character
- local targetCharacter = selectedPlayer.Character
- if character and targetCharacter and targetCharacter:FindFirstChild("HumanoidRootPart") then
- local humanoid = character:FindFirstChildOfClass("Humanoid")
- if humanoid then
- -- Анимация перед перемещением
- humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
- task.wait(0.2)
- if teleportMode == "teleport" then
- -- Обычная телепортация
- character:PivotTo(targetCharacter.HumanoidRootPart.CFrame * CFrame.new(0, 0, -3))
- humanoid:ChangeState(Enum.HumanoidStateType.GettingUp)
- else
- -- Режим полета
- local targetCFrame = targetCharacter.HumanoidRootPart.CFrame * CFrame.new(0, 0, -5)
- local tween = flyToPlayer(targetCFrame)
- -- Ждем завершения твина или 3 секунды максимум
- local completed = false
- tween.Completed:Connect(function()
- completed = true
- end)
- for _ = 1, 30 do -- 3 секунды (30 * 0.1)
- if completed then break end
- task.wait(0.1)
- end
- humanoid:ChangeState(Enum.HumanoidStateType.GettingUp)
- end
- end
- else
- game.StarterGui:SetCore("SendNotification", {
- Title = "Ошибка",
- Text = "Персонаж игрока не найден",
- Duration = 3,
- Icon = "rbxassetid://3926305904",
- IconColor = Color3.fromRGB(255, 80, 80)
- })
- end
- task.wait(0.5)
- TeleportButton.Text = teleportMode == "teleport" and "ТЕЛЕПОРТИРОВАТЬСЯ" or "ЛЕТЕТЬ К ИГРОКУ"
- LoadingIndicator.Visible = false
- debounce = false
- else
- game.StarterGui:SetCore("SendNotification", {
- Title = "Ошибка",
- Text = "Выберите игрока из списка",
- Duration = 3,
- Icon = "rbxassetid://3926305904",
- IconColor = Color3.fromRGB(255, 170, 0)
- })
- end
- end)
- -- Обновление списка при изменении игроков
- Players.PlayerAdded:Connect(function(player)
- updatePlayerList(SearchBox.Text)
- end)
- Players.PlayerRemoving:Connect(function(player)
- updatePlayerList(SearchBox.Text)
- end)
- -- Первоначальное обновление списка
- updatePlayerList("")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement