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 player = Players.LocalPlayer
- local character = player.Character or player.CharacterAdded:Wait()
- local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
- local folders = {
- "SmallChest",
- "SmallSafe",
- "LargeChest",
- "LargeSafe",
- "MediumSafe"
- }
- local function createGUI()
- local screenGui = Instance.new("ScreenGui")
- screenGui.Name = "ModelTeleporterGUI"
- screenGui.Parent = player.PlayerGui
- -- Основное окно (теперь перемещаемое)
- local mainFrame = Instance.new("Frame")
- mainFrame.Size = UDim2.new(0, 350, 0, 450)
- mainFrame.Position = UDim2.new(0.5, -175, 0.5, -225)
- mainFrame.AnchorPoint = Vector2.new(0.5, 0.5)
- mainFrame.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
- mainFrame.BorderSizePixel = 0
- mainFrame.Parent = screenGui
- mainFrame.Active = true
- mainFrame.Draggable = true -- Включаем возможность перемещения
- -- Заголовок (будет использоваться для перемещения)
- local title = Instance.new("TextLabel")
- title.Text = "Model Teleporter (drag here to move)"
- title.Size = UDim2.new(1, 0, 0, 30)
- title.Position = UDim2.new(0, 0, 0, 0)
- title.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
- title.TextColor3 = Color3.fromRGB(255, 255, 255)
- title.Font = Enum.Font.SourceSansBold
- title.TextSize = 18
- title.Parent = mainFrame
- title.Active = true -- Позволяет взаимодействовать с заголовком
- local folderSelector = Instance.new("TextButton")
- folderSelector.Text = "Select Folder"
- folderSelector.Size = UDim2.new(0.9, 0, 0, 30)
- folderSelector.Position = UDim2.new(0.05, 0, 0, 40)
- folderSelector.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
- folderSelector.TextColor3 = Color3.fromRGB(255, 255, 255)
- folderSelector.Parent = mainFrame
- local modelList = Instance.new("ScrollingFrame")
- modelList.Size = UDim2.new(0.9, 0, 0.7, -80)
- modelList.Position = UDim2.new(0.05, 0, 0, 80)
- modelList.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
- modelList.BorderSizePixel = 0
- modelList.CanvasSize = UDim2.new(0, 0, 0, 0)
- modelList.AutomaticCanvasSize = Enum.AutomaticSize.Y
- modelList.ScrollBarThickness = 8
- modelList.Parent = mainFrame
- local uiListLayout = Instance.new("UIListLayout")
- uiListLayout.Padding = UDim.new(0, 5)
- uiListLayout.Parent = modelList
- local teleportButton = Instance.new("TextButton")
- teleportButton.Text = "Teleport to Selected"
- teleportButton.Size = UDim2.new(0.9, 0, 0, 30)
- teleportButton.Position = UDim2.new(0.05, 0, 0.9, -30)
- teleportButton.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
- teleportButton.TextColor3 = Color3.fromRGB(255, 255, 255)
- teleportButton.Parent = mainFrame
- local selectedFolder = nil
- local selectedModel = nil
- -- Функция для создания кнопки модели
- local function createModelButton(model)
- local buttonFrame = Instance.new("Frame")
- buttonFrame.Size = UDim2.new(1, 0, 0, 30)
- buttonFrame.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
- buttonFrame.BorderSizePixel = 0
- buttonFrame.Parent = modelList
- local button = Instance.new("TextButton")
- button.Text = model.Name .. " (" .. math.floor(model:GetPivot().Position.X) .. ", " ..
- math.floor(model:GetPivot().Position.Y) .. ", " ..
- math.floor(model:GetPivot().Position.Z) .. ")"
- button.Size = UDim2.new(1, -10, 1, 0)
- button.Position = UDim2.new(0, 5, 0, 0)
- button.BackgroundTransparency = 1
- button.TextColor3 = Color3.fromRGB(255, 255, 255)
- button.TextXAlignment = Enum.TextXAlignment.Left
- button.TextWrapped = true
- button.Parent = buttonFrame
- button.MouseButton1Click:Connect(function()
- -- Сброс выделения для всех кнопок
- for _, child in ipairs(modelList:GetChildren()) do
- if child:IsA("Frame") then
- child.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
- end
- end
- -- Выделение выбранной кнопки
- buttonFrame.BackgroundColor3 = Color3.fromRGB(90, 90, 90)
- selectedModel = model
- end)
- return buttonFrame
- end
- -- Улучшенная функция для обновления списка моделей
- local function updateModelList(folderName)
- modelList:ClearAllChildren()
- selectedModel = nil
- local entities = game:GetService("Workspace").Game.Entities
- if not entities:FindFirstChild(folderName) then
- local noFolderLabel = Instance.new("TextLabel")
- noFolderLabel.Text = "Folder '"..folderName.."' not found!"
- noFolderLabel.Size = UDim2.new(1, 0, 0, 30)
- noFolderLabel.TextColor3 = Color3.fromRGB(255, 100, 100)
- noFolderLabel.Parent = modelList
- warn("Folder not found:", folderName)
- return
- end
- local folder = entities[folderName]
- local models = folder:GetChildren()
- if #models == 0 then
- local noModelsLabel = Instance.new("TextLabel")
- noModelsLabel.Text = "No models found in '"..folderName.."'"
- noModelsLabel.Size = UDim2.new(1, 0, 0, 30)
- noModelsLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
- noModelsLabel.Parent = modelList
- return
- end
- for _, model in ipairs(models) do
- if model:IsA("Model") then
- createModelButton(model)
- end
- end
- end
- -- Создаем отдельное окно для выбора папки (также перемещаемое)
- local folderSelectionFrame = Instance.new("Frame")
- folderSelectionFrame.Size = UDim2.new(0, 250, 0, #folders * 35 + 70)
- folderSelectionFrame.Position = UDim2.new(0.5, -125, 0.5, -100)
- folderSelectionFrame.AnchorPoint = Vector2.new(0.5, 0.5)
- folderSelectionFrame.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
- folderSelectionFrame.BorderSizePixel = 0
- folderSelectionFrame.Visible = false
- folderSelectionFrame.Parent = screenGui
- folderSelectionFrame.Active = true
- folderSelectionFrame.Draggable = true
- local folderSelectionTitle = Instance.new("TextLabel")
- folderSelectionTitle.Text = "Select Folder (drag to move)"
- folderSelectionTitle.Size = UDim2.new(1, 0, 0, 30)
- folderSelectionTitle.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
- folderSelectionTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
- folderSelectionTitle.Font = Enum.Font.SourceSansBold
- folderSelectionTitle.Parent = folderSelectionFrame
- folderSelectionTitle.Active = true
- local folderSelectionLayout = Instance.new("UIListLayout")
- folderSelectionLayout.Padding = UDim.new(0, 5)
- folderSelectionLayout.Parent = folderSelectionFrame
- local folderSelectionPadding = Instance.new("UIPadding")
- folderSelectionPadding.PaddingTop = UDim.new(0, 35)
- folderSelectionPadding.PaddingLeft = UDim.new(0, 10)
- folderSelectionPadding.PaddingRight = UDim.new(0, 10)
- folderSelectionPadding.Parent = folderSelectionFrame
- -- Создаем кнопки для всех папок
- for _, folderName in ipairs(folders) do
- local button = Instance.new("TextButton")
- button.Text = folderName
- button.Size = UDim2.new(1, 0, 0, 30)
- button.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
- button.TextColor3 = Color3.fromRGB(255, 255, 255)
- button.Parent = folderSelectionFrame
- button.MouseButton1Click:Connect(function()
- selectedFolder = folderName
- folderSelector.Text = "Folder: " .. folderName
- updateModelList(folderName)
- folderSelectionFrame.Visible = false
- mainFrame.Visible = true
- end)
- end
- -- Кнопка закрытия меню выбора папки
- local closeFolderSelectionButton = Instance.new("TextButton")
- closeFolderSelectionButton.Text = "Close"
- closeFolderSelectionButton.Size = UDim2.new(1, 0, 0, 25)
- closeFolderSelectionButton.Position = UDim2.new(0, 0, 1, -30)
- closeFolderSelectionButton.BackgroundColor3 = Color3.fromRGB(100, 30, 30)
- closeFolderSelectionButton.TextColor3 = Color3.fromRGB(255, 255, 255)
- closeFolderSelectionButton.Parent = folderSelectionFrame
- closeFolderSelectionButton.MouseButton1Click:Connect(function()
- folderSelectionFrame.Visible = false
- mainFrame.Visible = true
- end)
- -- Обработчик кнопки выбора папки
- folderSelector.MouseButton1Click:Connect(function()
- mainFrame.Visible = false
- folderSelectionFrame.Visible = true
- end)
- -- Обработчик телепортации
- teleportButton.MouseButton1Click:Connect(function()
- if selectedModel and humanoidRootPart then
- local cframe = selectedModel:GetPivot()
- humanoidRootPart.CFrame = cframe * CFrame.new(0, 3, -2) -- Телепорт перед моделью
- end
- end)
- -- Инициализация с первой папкой
- if #folders > 0 then
- selectedFolder = folders[1]
- folderSelector.Text = "Folder: " .. selectedFolder
- updateModelList(selectedFolder)
- end
- end
- -- Ожидание загрузки персонажа и создание GUI
- player.CharacterAdded:Connect(function(newCharacter)
- character = newCharacter
- humanoidRootPart = character:WaitForChild("HumanoidRootPart")
- end)
- -- Проверяем существование папок перед созданием GUI
- local function initialize()
- local existingFolders = {}
- local entities = game:GetService("Workspace").Game.Entities
- for _, folderName in ipairs(folders) do
- if entities:FindFirstChild(folderName) then
- table.insert(existingFolders, folderName)
- else
- warn("Folder not found in game:", folderName)
- end
- end
- if #existingFolders == 0 then
- warn("No valid folders found! Check your folder names.")
- return
- end
- folders = existingFolders
- createGUI()
- end
- initialize()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement