Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- ╔═══════════════════════════════════════════════════════════╗
- ║ Pré-história - By: NickZScripts ║
- ║ Sistema Modular & Anti-Conflitos ║
- ║ Interface: Custom UI (No Library) ║
- ╚═══════════════════════════════════════════════════════════╝
- ]]
- --// ========== SERVICES ========== //
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local HttpService = game:GetService("HttpService")
- local ReplicatedStorage = game:GetService("ReplicatedStorage")
- local Teams = game:GetService("Teams")
- local TweenService = game:GetService("TweenService")
- local UserInputService = game:GetService("UserInputService")
- local CoreGui = game:GetService("CoreGui")
- --// ========== VARIÁVEIS GLOBAIS ========== //
- local LocalPlayer = Players.LocalPlayer
- local ScriptVersion = "v5.0.0"
- local LastSpawnPosition = nil
- local Camera = workspace.CurrentCamera
- local ActiveTeleportConnection = nil
- --// ========== CONFIGURAÇÕES DO AUTO FARM ========== //
- local Config = {
- AutoFarm = false,
- AutoColeta = false,
- CheckDelay = 0.3,
- DelayBetweenCrystals = 0.1,
- raioDeColeta = 25,
- delayEntreTentativas = 0.25,
- podeExecutar = true,
- -- ESP de Carnes
- EspMeatActive = false,
- ESP_MIN_SIZE = 35,
- ESP_MAX_SIZE = 65,
- ESP_UPDATE_RATE = 0.1,
- MAX_VISIBLE_DISTANCE = 999999,
- -- ESP de Jogadores
- PlayerESP = false,
- PlayerESP_ShowHP = false,
- PlayerESP_TeamCheck = false,
- -- Click Teleport
- ClickTeleportEnabled = false,
- -- Teleports Salvos
- SavedTeleports = {},
- -- Patrulha
- PatrulhaPontos = {
- CFrame.new(0, 30, 0),
- CFrame.new(800, 30, 400),
- CFrame.new(-750, 30, -600),
- CFrame.new(450, 30, -1000),
- CFrame.new(-900, 30, 700),
- CFrame.new(0, 30, 1000),
- },
- }
- --// ========== CACHE DE NÍVEL ========== //
- local DinoLevelCache = {
- value = 0,
- lastUpdate = 0,
- updateInterval = 2
- }
- --// ========== DETECTAR POSIÇÃO DE SPAWN ========== //
- task.spawn(function()
- local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
- local root = char:WaitForChild("HumanoidRootPart", 10)
- if root then
- task.wait(2)
- LastSpawnPosition = root.CFrame
- end
- LocalPlayer.CharacterAdded:Connect(function(newChar)
- task.wait(2)
- local newRoot = newChar:FindFirstChild("HumanoidRootPart")
- if newRoot then
- LastSpawnPosition = newRoot.CFrame
- end
- end)
- end)
- --// ========== SISTEMA DE UI CUSTOMIZADA ========== //
- local UI = {}
- UI.Theme = {
- Background = Color3.fromRGB(20, 20, 30),
- Secondary = Color3.fromRGB(30, 30, 40),
- Accent = Color3.fromRGB(100, 150, 255),
- Success = Color3.fromRGB(80, 200, 120),
- Danger = Color3.fromRGB(255, 80, 80),
- Warning = Color3.fromRGB(255, 180, 60),
- Text = Color3.fromRGB(255, 255, 255),
- TextDim = Color3.fromRGB(180, 180, 200),
- Border = Color3.fromRGB(60, 60, 80),
- }
- UI.Elements = {}
- UI.Tabs = {}
- UI.CurrentTab = nil
- UI.Notifications = {}
- --// ========== FUNÇÕES DE UTILIDADE UI ========== //
- local function CreateInstance(className, properties)
- local instance = Instance.new(className)
- for k, v in pairs(properties) do
- if k ~= "Parent" then
- instance[k] = v
- end
- end
- instance.Parent = properties.Parent
- return instance
- end
- local function Tween(object, properties, duration, style, direction)
- duration = duration or 0.3
- style = style or Enum.EasingStyle.Quad
- direction = direction or Enum.EasingDirection.Out
- local tween = TweenService:Create(object, TweenInfo.new(duration, style, direction), properties)
- tween:Play()
- return tween
- end
- local function AddCorner(parent, radius)
- return CreateInstance("UICorner", {
- CornerRadius = UDim.new(0, radius or 8),
- Parent = parent
- })
- end
- local function AddStroke(parent, color, thickness, transparency)
- return CreateInstance("UIStroke", {
- Color = color or UI.Theme.Border,
- Thickness = thickness or 1,
- Transparency = transparency or 0,
- Parent = parent
- })
- end
- local function AddPadding(parent, offset)
- return CreateInstance("UIPadding", {
- PaddingLeft = UDim.new(0, offset or 10),
- PaddingRight = UDim.new(0, offset or 10),
- PaddingTop = UDim.new(0, offset or 10),
- PaddingBottom = UDim.new(0, offset or 10),
- Parent = parent
- })
- end
- --// ========== SISTEMA DE NOTIFICAÇÕES ========== //
- function UI:Notify(title, content, duration, icon)
- duration = duration or 3
- icon = icon or "ℹ️"
- local notifContainer = self.Elements.NotificationContainer
- if not notifContainer then return end
- local notif = CreateInstance("Frame", {
- Size = UDim2.new(1, -20, 0, 0),
- Position = UDim2.new(0, 10, 0, 0),
- BackgroundColor3 = UI.Theme.Secondary,
- BackgroundTransparency = 0.1,
- BorderSizePixel = 0,
- ClipsDescendants = true,
- Parent = notifContainer
- })
- AddCorner(notif, 8)
- AddStroke(notif, UI.Theme.Accent, 1, 0.5)
- local iconLabel = CreateInstance("TextLabel", {
- Size = UDim2.new(0, 40, 1, 0),
- BackgroundTransparency = 1,
- Text = icon,
- TextSize = 20,
- TextColor3 = UI.Theme.Accent,
- Font = Enum.Font.GothamBold,
- Parent = notif
- })
- local textContainer = CreateInstance("Frame", {
- Size = UDim2.new(1, -50, 1, 0),
- Position = UDim2.new(0, 45, 0, 0),
- BackgroundTransparency = 1,
- Parent = notif
- })
- AddPadding(textContainer, 5)
- local titleLabel = CreateInstance("TextLabel", {
- Size = UDim2.new(1, 0, 0, 18),
- BackgroundTransparency = 1,
- Text = title,
- TextSize = 14,
- TextColor3 = UI.Theme.Text,
- Font = Enum.Font.GothamBold,
- TextXAlignment = Enum.TextXAlignment.Left,
- TextYAlignment = Enum.TextYAlignment.Top,
- Parent = textContainer
- })
- local contentLabel = CreateInstance("TextLabel", {
- Size = UDim2.new(1, 0, 1, -20),
- Position = UDim2.new(0, 0, 0, 20),
- BackgroundTransparency = 1,
- Text = content,
- TextSize = 12,
- TextColor3 = UI.Theme.TextDim,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- TextYAlignment = Enum.TextYAlignment.Top,
- TextWrapped = true,
- Parent = textContainer
- })
- -- Animar entrada
- Tween(notif, {Size = UDim2.new(1, -20, 0, 70)}, 0.3, Enum.EasingStyle.Back)
- -- Remover após duração
- task.delay(duration, function()
- Tween(notif, {
- Size = UDim2.new(1, -20, 0, 0),
- BackgroundTransparency = 1
- }, 0.3)
- task.wait(0.3)
- notif:Destroy()
- end)
- -- Reposicionar outras notificações
- task.wait(0.1)
- local yOffset = 0
- for _, child in ipairs(notifContainer:GetChildren()) do
- if child:IsA("Frame") then
- Tween(child, {Position = UDim2.new(0, 10, 0, yOffset)}, 0.2)
- yOffset = yOffset + child.Size.Y.Offset + 10
- end
- end
- end
- --// ========== CRIAR INTERFACE PRINCIPAL ========== //
- function UI:CreateWindow(title)
- -- Limpar UI antiga se existir
- local oldGui = CoreGui:FindFirstChild("PreHistoriaUI")
- if oldGui then oldGui:Destroy() end
- -- ScreenGui Principal
- local screenGui = CreateInstance("ScreenGui", {
- Name = "PreHistoriaUI",
- ResetOnSpawn = false,
- ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
- Parent = CoreGui
- })
- self.Elements.ScreenGui = screenGui
- -- Container de Notificações
- local notifContainer = CreateInstance("Frame", {
- Name = "NotificationContainer",
- Size = UDim2.new(0, 300, 1, -100),
- Position = UDim2.new(1, -310, 0, 10),
- BackgroundTransparency = 1,
- Parent = screenGui
- })
- self.Elements.NotificationContainer = notifContainer
- -- Frame Principal
- local mainFrame = CreateInstance("Frame", {
- Name = "MainFrame",
- Size = UDim2.new(0, 550, 0, 600),
- Position = UDim2.new(0.5, -275, 0.5, -300),
- BackgroundColor3 = UI.Theme.Background,
- BorderSizePixel = 0,
- Active = true,
- Parent = screenGui
- })
- AddCorner(mainFrame, 12)
- AddStroke(mainFrame, UI.Theme.Accent, 2, 0.3)
- self.Elements.MainFrame = mainFrame
- -- Gradiente de fundo
- CreateInstance("UIGradient", {
- Color = ColorSequence.new{
- ColorSequenceKeypoint.new(0, Color3.fromRGB(25, 25, 35)),
- ColorSequenceKeypoint.new(1, Color3.fromRGB(15, 15, 25))
- },
- Rotation = 45,
- Parent = mainFrame
- })
- -- Header
- local header = CreateInstance("Frame", {
- Name = "Header",
- Size = UDim2.new(1, 0, 0, 50),
- BackgroundColor3 = UI.Theme.Secondary,
- BackgroundTransparency = 0.3,
- BorderSizePixel = 0,
- Parent = mainFrame
- })
- AddCorner(header, 12)
- -- Fix para cantos do header
- CreateInstance("Frame", {
- Size = UDim2.new(1, 0, 0, 12),
- Position = UDim2.new(0, 0, 1, -12),
- BackgroundColor3 = UI.Theme.Secondary,
- BackgroundTransparency = 0.3,
- BorderSizePixel = 0,
- Parent = header
- })
- -- Título
- local titleLabel = CreateInstance("TextLabel", {
- Size = UDim2.new(1, -120, 1, 0),
- Position = UDim2.new(0, 15, 0, 0),
- BackgroundTransparency = 1,
- Text = title,
- TextColor3 = UI.Theme.Text,
- TextSize = 18,
- Font = Enum.Font.GothamBold,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = header
- })
- -- Botão Minimizar
- local minimizeBtn = CreateInstance("TextButton", {
- Size = UDim2.new(0, 35, 0, 35),
- Position = UDim2.new(1, -80, 0.5, -17.5),
- BackgroundColor3 = UI.Theme.Warning,
- BackgroundTransparency = 0.2,
- Text = "➖",
- TextColor3 = UI.Theme.Text,
- TextSize = 18,
- Font = Enum.Font.GothamBold,
- AutoButtonColor = false,
- Parent = header
- })
- AddCorner(minimizeBtn, 8)
- minimizeBtn.MouseButton1Click:Connect(function()
- self:ToggleMinimize()
- end)
- -- Botão Fechar
- local closeBtn = CreateInstance("TextButton", {
- Size = UDim2.new(0, 35, 0, 35),
- Position = UDim2.new(1, -40, 0.5, -17.5),
- BackgroundColor3 = UI.Theme.Danger,
- BackgroundTransparency = 0.2,
- Text = "✕",
- TextColor3 = UI.Theme.Text,
- TextSize = 20,
- Font = Enum.Font.GothamBold,
- AutoButtonColor = false,
- Parent = header
- })
- AddCorner(closeBtn, 8)
- closeBtn.MouseButton1Click:Connect(function()
- self:Destroy()
- end)
- -- Hover effects
- local function addHoverEffect(btn)
- btn.MouseEnter:Connect(function()
- Tween(btn, {BackgroundTransparency = 0}, 0.2)
- end)
- btn.MouseLeave:Connect(function()
- Tween(btn, {BackgroundTransparency = 0.2}, 0.2)
- end)
- end
- addHoverEffect(minimizeBtn)
- addHoverEffect(closeBtn)
- -- Tornar draggable
- local dragging, dragInput, dragStart, startPos
- header.InputBegan:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch 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)
- header.InputChanged:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
- dragInput = input
- end
- end)
- UserInputService.InputChanged:Connect(function(input)
- if input == dragInput and dragging then
- 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
- end)
- -- Container de Tabs
- local tabContainer = CreateInstance("Frame", {
- Name = "TabContainer",
- Size = UDim2.new(0, 120, 1, -60),
- Position = UDim2.new(0, 5, 0, 55),
- BackgroundTransparency = 1,
- Parent = mainFrame
- })
- CreateInstance("UIListLayout", {
- Padding = UDim.new(0, 5),
- SortOrder = Enum.SortOrder.LayoutOrder,
- Parent = tabContainer
- })
- self.Elements.TabContainer = tabContainer
- -- Container de Conteúdo
- local contentContainer = CreateInstance("Frame", {
- Name = "ContentContainer",
- Size = UDim2.new(1, -135, 1, -65),
- Position = UDim2.new(0, 130, 0, 60),
- BackgroundTransparency = 1,
- ClipsDescendants = true,
- Parent = mainFrame
- })
- self.Elements.ContentContainer = contentContainer
- return self
- end
- function UI:ToggleMinimize()
- local mainFrame = self.Elements.MainFrame
- local isMinimized = mainFrame.Size.Y.Offset <= 55
- if isMinimized then
- Tween(mainFrame, {Size = UDim2.new(0, 550, 0, 600)}, 0.3, Enum.EasingStyle.Back)
- else
- Tween(mainFrame, {Size = UDim2.new(0, 550, 0, 50)}, 0.3, Enum.EasingStyle.Back)
- end
- end
- function UI:Destroy()
- if self.Elements.ScreenGui then
- self.Elements.ScreenGui:Destroy()
- end
- ClickTeleportModule.Cleanup()
- print("🗑️ UI Destruída")
- end
- --// ========== CRIAR TAB ========== //
- function UI:CreateTab(name, icon)
- icon = icon or "📁"
- local tabBtn = CreateInstance("TextButton", {
- Name = name,
- Size = UDim2.new(1, 0, 0, 40),
- BackgroundColor3 = UI.Theme.Secondary,
- BackgroundTransparency = 0.5,
- Text = "",
- AutoButtonColor = false,
- Parent = self.Elements.TabContainer
- })
- AddCorner(tabBtn, 8)
- local iconLabel = CreateInstance("TextLabel", {
- Size = UDim2.new(0, 30, 1, 0),
- Position = UDim2.new(0, 5, 0, 0),
- BackgroundTransparency = 1,
- Text = icon,
- TextSize = 18,
- TextColor3 = UI.Theme.TextDim,
- Font = Enum.Font.GothamBold,
- Parent = tabBtn
- })
- local nameLabel = CreateInstance("TextLabel", {
- Size = UDim2.new(1, -40, 1, 0),
- Position = UDim2.new(0, 35, 0, 0),
- BackgroundTransparency = 1,
- Text = name,
- TextSize = 13,
- TextColor3 = UI.Theme.TextDim,
- Font = Enum.Font.GothamBold,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = tabBtn
- })
- -- Conteúdo da Tab
- local tabContent = CreateInstance("ScrollingFrame", {
- Name = name .. "Content",
- Size = UDim2.new(1, 0, 1, 0),
- BackgroundTransparency = 1,
- BorderSizePixel = 0,
- ScrollBarThickness = 4,
- ScrollBarImageColor3 = UI.Theme.Accent,
- CanvasSize = UDim2.new(0, 0, 0, 0),
- Visible = false,
- Parent = self.Elements.ContentContainer
- })
- CreateInstance("UIListLayout", {
- Padding = UDim.new(0, 8),
- SortOrder = Enum.SortOrder.LayoutOrder,
- Parent = tabContent
- })
- AddPadding(tabContent, 5)
- -- Auto-resize canvas
- tabContent:GetPropertyChangedSignal("AbsoluteCanvasSize"):Connect(function()
- tabContent.CanvasSize = UDim2.new(0, 0, 0, tabContent.AbsoluteCanvasSize.Y + 10)
- end)
- -- Função de seleção
- tabBtn.MouseButton1Click:Connect(function()
- self:SelectTab(name)
- end)
- -- Hover effect
- tabBtn.MouseEnter:Connect(function()
- if self.CurrentTab ~= name then
- Tween(tabBtn, {BackgroundTransparency = 0.3}, 0.2)
- end
- end)
- tabBtn.MouseLeave:Connect(function()
- if self.CurrentTab ~= name then
- Tween(tabBtn, {BackgroundTransparency = 0.5}, 0.2)
- end
- end)
- self.Tabs[name] = {
- Button = tabBtn,
- Content = tabContent,
- Icon = iconLabel,
- Name = nameLabel
- }
- -- Primeira tab ativa por padrão
- if not self.CurrentTab then
- self:SelectTab(name)
- end
- return {
- CreateSection = function(_, sectionName)
- return self:CreateSection(tabContent, sectionName)
- end,
- CreateToggle = function(_, config)
- return self:CreateToggle(tabContent, config)
- end,
- CreateButton = function(_, config)
- return self:CreateButton(tabContent, config)
- end,
- CreateLabel = function(_, text)
- return self:CreateLabel(tabContent, text)
- end,
- CreateSlider = function(_, config)
- return self:CreateSlider(tabContent, config)
- end,
- CreateParagraph = function(_, config)
- return self:CreateParagraph(tabContent, config)
- end
- }
- end
- function UI:SelectTab(name)
- for tabName, tab in pairs(self.Tabs) do
- if tabName == name then
- -- Ativar
- Tween(tab.Button, {BackgroundTransparency = 0}, 0.2)
- Tween(tab.Icon, {TextColor3 = UI.Theme.Accent}, 0.2)
- Tween(tab.Name, {TextColor3 = UI.Theme.Text}, 0.2)
- tab.Content.Visible = true
- else
- -- Desativar
- Tween(tab.Button, {BackgroundTransparency = 0.5}, 0.2)
- Tween(tab.Icon, {TextColor3 = UI.Theme.TextDim}, 0.2)
- Tween(tab.Name, {TextColor3 = UI.Theme.TextDim}, 0.2)
- tab.Content.Visible = false
- end
- end
- self.CurrentTab = name
- end
- --// ========== CRIAR SEÇÃO ========== //
- function UI:CreateSection(parent, name)
- local section = CreateInstance("Frame", {
- Size = UDim2.new(1, 0, 0, 35),
- BackgroundTransparency = 1,
- Parent = parent
- })
- local line = CreateInstance("Frame", {
- Size = UDim2.new(1, 0, 0, 2),
- Position = UDim2.new(0, 0, 0.5, 0),
- BackgroundColor3 = UI.Theme.Border,
- BorderSizePixel = 0,
- Parent = section
- })
- local label = CreateInstance("TextLabel", {
- Size = UDim2.new(0, 0, 1, 0),
- Position = UDim2.new(0, 0, 0, 0),
- BackgroundColor3 = UI.Theme.Background,
- BackgroundTransparency = 0,
- Text = " " .. name .. " ",
- TextSize = 14,
- TextColor3 = UI.Theme.Accent,
- Font = Enum.Font.GothamBold,
- AutomaticSize = Enum.AutomaticSize.X,
- Parent = section
- })
- return section
- end
- --// ========== CRIAR TOGGLE ========== //
- function UI:CreateToggle(parent, config)
- local name = config.Name or "Toggle"
- local default = config.CurrentValue or false
- local callback = config.Callback or function() end
- local container = CreateInstance("Frame", {
- Size = UDim2.new(1, 0, 0, 40),
- BackgroundColor3 = UI.Theme.Secondary,
- BackgroundTransparency = 0.3,
- BorderSizePixel = 0,
- Parent = parent
- })
- AddCorner(container, 8)
- local nameLabel = CreateInstance("TextLabel", {
- Size = UDim2.new(1, -60, 1, 0),
- Position = UDim2.new(0, 10, 0, 0),
- BackgroundTransparency = 1,
- Text = name,
- TextSize = 14,
- TextColor3 = UI.Theme.Text,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = container
- })
- local toggleBtn = CreateInstance("TextButton", {
- Size = UDim2.new(0, 45, 0, 25),
- Position = UDim2.new(1, -50, 0.5, -12.5),
- BackgroundColor3 = default and UI.Theme.Success or UI.Theme.Border,
- Text = "",
- AutoButtonColor = false,
- Parent = container
- })
- AddCorner(toggleBtn, 12)
- local indicator = CreateInstance("Frame", {
- Size = UDim2.new(0, 19, 0, 19),
- Position = default and UDim2.new(1, -22, 0.5, -9.5) or UDim2.new(0, 3, 0.5, -9.5),
- BackgroundColor3 = UI.Theme.Text,
- Parent = toggleBtn
- })
- AddCorner(indicator, 10)
- local state = default
- toggleBtn.MouseButton1Click:Connect(function()
- state = not state
- Tween(toggleBtn, {
- BackgroundColor3 = state and UI.Theme.Success or UI.Theme.Border
- }, 0.2)
- Tween(indicator, {
- Position = state and UDim2.new(1, -22, 0.5, -9.5) or UDim2.new(0, 3, 0.5, -9.5)
- }, 0.2, Enum.EasingStyle.Quad)
- task.spawn(callback, state)
- end)
- return {
- Set = function(_, value)
- state = value
- Tween(toggleBtn, {
- BackgroundColor3 = state and UI.Theme.Success or UI.Theme.Border
- }, 0.2)
- Tween(indicator, {
- Position = state and UDim2.new(1, -22, 0.5, -9.5) or UDim2.new(0, 3, 0.5, -9.5)
- }, 0.2, Enum.EasingStyle.Quad)
- end
- }
- end
- --// ========== CRIAR BOTÃO ========== //
- function UI:CreateButton(parent, config)
- local name = config.Name or "Button"
- local callback = config.Callback or function() end
- local btn = CreateInstance("TextButton", {
- Size = UDim2.new(1, 0, 0, 40),
- BackgroundColor3 = UI.Theme.Accent,
- BackgroundTransparency = 0.2,
- Text = name,
- TextColor3 = UI.Theme.Text,
- TextSize = 14,
- Font = Enum.Font.GothamBold,
- AutoButtonColor = false,
- Parent = parent
- })
- AddCorner(btn, 8)
- AddStroke(btn, UI.Theme.Accent, 1, 0.5)
- btn.MouseButton1Click:Connect(function()
- Tween(btn, {BackgroundTransparency = 0}, 0.1)
- task.wait(0.1)
- Tween(btn, {BackgroundTransparency = 0.2}, 0.2)
- task.spawn(callback)
- end)
- btn.MouseEnter:Connect(function()
- Tween(btn, {BackgroundTransparency = 0.1}, 0.2)
- end)
- btn.MouseLeave:Connect(function()
- Tween(btn, {BackgroundTransparency = 0.2}, 0.2)
- end)
- return btn
- end
- --// ========== CRIAR LABEL ========== //
- function UI:CreateLabel(parent, text)
- local label = CreateInstance("TextLabel", {
- Size = UDim2.new(1, 0, 0, 30),
- BackgroundTransparency = 1,
- Text = text,
- TextSize = 13,
- TextColor3 = UI.Theme.TextDim,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = parent
- })
- return {
- Set = function(_, newText)
- label.Text = newText
- end
- }
- end
- --// ========== CRIAR PARÁGRAFO ========== //
- function UI:CreateParagraph(parent, config)
- local title = config.Title or "Title"
- local content = config.Content or "Content"
- local container = CreateInstance("Frame", {
- Size = UDim2.new(1, 0, 0, 0),
- BackgroundColor3 = UI.Theme.Secondary,
- BackgroundTransparency = 0.5,
- BorderSizePixel = 0,
- AutomaticSize = Enum.AutomaticSize.Y,
- Parent = parent
- })
- AddCorner(container, 8)
- AddPadding(container, 10)
- local titleLabel = CreateInstance("TextLabel", {
- Size = UDim2.new(1, 0, 0, 20),
- BackgroundTransparency = 1,
- Text = title,
- TextSize = 14,
- TextColor3 = UI.Theme.Accent,
- Font = Enum.Font.GothamBold,
- TextXAlignment = Enum.TextXAlignment.Left,
- TextYAlignment = Enum.TextYAlignment.Top,
- Parent = container
- })
- local contentLabel = CreateInstance("TextLabel", {
- Size = UDim2.new(1, 0, 0, 0),
- Position = UDim2.new(0, 0, 0, 25),
- BackgroundTransparency = 1,
- Text = content,
- TextSize = 12,
- TextColor3 = UI.Theme.TextDim,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- TextYAlignment = Enum.TextYAlignment.Top,
- TextWrapped = true,
- AutomaticSize = Enum.AutomaticSize.Y,
- Parent = container
- })
- return container
- end
- --// ========== CRIAR SLIDER ========== //
- function UI:CreateSlider(parent, config)
- local name = config.Name or "Slider"
- local min = config.Min or 0
- local max = config.Max or 100
- local default = config.CurrentValue or min
- local increment = config.Increment or 1
- local callback = config.Callback or function() end
- local container = CreateInstance("Frame", {
- Size = UDim2.new(1, 0, 0, 50),
- BackgroundColor3 = UI.Theme.Secondary,
- BackgroundTransparency = 0.3,
- BorderSizePixel = 0,
- Parent = parent
- })
- AddCorner(container, 8)
- local nameLabel = CreateInstance("TextLabel", {
- Size = UDim2.new(1, -60, 0, 20),
- Position = UDim2.new(0, 10, 0, 5),
- BackgroundTransparency = 1,
- Text = name,
- TextSize = 13,
- TextColor3 = UI.Theme.Text,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = container
- })
- local valueLabel = CreateInstance("TextLabel", {
- Size = UDim2.new(0, 50, 0, 20),
- Position = UDim2.new(1, -55, 0, 5),
- BackgroundTransparency = 1,
- Text = tostring(default),
- TextSize = 13,
- TextColor3 = UI.Theme.Accent,
- Font = Enum.Font.GothamBold,
- TextXAlignment = Enum.TextXAlignment.Right,
- Parent = container
- })
- local sliderBack = CreateInstance("Frame", {
- Size = UDim2.new(1, -20, 0, 6),
- Position = UDim2.new(0, 10, 1, -15),
- BackgroundColor3 = UI.Theme.Border,
- BorderSizePixel = 0,
- Parent = container
- })
- AddCorner(sliderBack, 3)
- local sliderFill = CreateInstance("Frame", {
- Size = UDim2.new((default - min) / (max - min), 0, 1, 0),
- BackgroundColor3 = UI.Theme.Accent,
- BorderSizePixel = 0,
- Parent = sliderBack
- })
- AddCorner(sliderFill, 3)
- local sliderBtn = CreateInstance("TextButton", {
- Size = UDim2.new(0, 16, 0, 16),
- Position = UDim2.new((default - min) / (max - min), -8, 0.5, -8),
- BackgroundColor3 = UI.Theme.Text,
- Text = "",
- AutoButtonColor = false,
- Parent = sliderBack
- })
- AddCorner(sliderBtn, 8)
- local dragging = false
- local function update(input)
- local sizeX = sliderBack.AbsoluteSize.X
- local posX = math.clamp(input.Position.X - sliderBack.AbsolutePosition.X, 0, sizeX)
- local percent = posX / sizeX
- local value = math.floor((min + (max - min) * percent) / increment + 0.5) * increment
- value = math.clamp(value, min, max)
- sliderFill.Size = UDim2.new(percent, 0, 1, 0)
- sliderBtn.Position = UDim2.new(percent, -8, 0.5, -8)
- valueLabel.Text = tostring(value)
- task.spawn(callback, value)
- end
- sliderBtn.InputBegan:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
- dragging = true
- update(input)
- end
- end)
- sliderBtn.InputEnded:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
- dragging = false
- end
- end)
- UserInputService.InputChanged:Connect(function(input)
- if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
- update(input)
- end
- end)
- sliderBack.InputBegan:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
- update(input)
- end
- end)
- return container
- end
- --// ========== FUNÇÕES DE UTILIDADE ========== //
- local function getCharacter()
- return LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
- end
- local function getHumanoidRootPart()
- local char = getCharacter()
- return char and char:FindFirstChild("HumanoidRootPart")
- end
- local function teleportTo(cf)
- local root = getHumanoidRootPart()
- if root and root.Parent then
- root.Parent:SetPrimaryPartCFrame(cf)
- end
- end
- local function teleportToCrystal(c)
- local root = getHumanoidRootPart()
- if root and c then
- root.Parent:SetPrimaryPartCFrame(CFrame.new(c.Position + Vector3.new(0, 4.5, 0)))
- end
- end
- --// ========== SISTEMA DE TELEPORTE SEGURO ========== //
- local function safeTeleport(targetCFrame, locationName)
- if ActiveTeleportConnection then
- ActiveTeleportConnection:Disconnect()
- ActiveTeleportConnection = nil
- end
- local char = LocalPlayer.Character
- local root = char and char:FindFirstChild("HumanoidRootPart")
- local humanoid = char and char:FindFirstChild("Humanoid")
- if not root or not humanoid then
- UI:Notify("❌ Erro", "Personagem não encontrado!", 2)
- return false
- end
- UI:Notify("🚀 Teleportando", "Indo para: " .. locationName, 1)
- root.CFrame = targetCFrame
- task.spawn(function()
- task.wait(0.05)
- local rayParams = RaycastParams.new()
- rayParams.FilterType = Enum.RaycastFilterType.Blacklist
- rayParams.FilterDescendantsInstances = {char}
- local rayResult = workspace:Raycast(
- root.Position,
- Vector3.new(0, -100, 0),
- rayParams
- )
- if rayResult then
- root.CFrame = CFrame.new(rayResult.Position + Vector3.new(0, 3, 0))
- end
- end)
- local teleportStartTime = tick()
- local maxWaitTime = 1.2
- local minWaitTime = 0.2
- ActiveTeleportConnection = RunService.Heartbeat:Connect(function()
- if not char or not char.Parent or not root or not root.Parent or not humanoid then
- if ActiveTeleportConnection then
- ActiveTeleportConnection:Disconnect()
- ActiveTeleportConnection = nil
- end
- return
- end
- local elapsedTime = tick() - teleportStartTime
- local floorMaterial = humanoid.FloorMaterial
- local isOnGround = floorMaterial ~= Enum.Material.Air
- local velocity = root.AssemblyLinearVelocity
- local isStationary = velocity.Magnitude < 2
- local humanoidState = humanoid:GetState()
- local isLanded = humanoidState == Enum.HumanoidStateType.Landed or
- humanoidState == Enum.HumanoidStateType.Running or
- humanoidState == Enum.HumanoidStateType.RunningNoPhysics
- if (elapsedTime > minWaitTime and (isOnGround or (isStationary and isLanded))) or elapsedTime > maxWaitTime then
- if ActiveTeleportConnection then
- ActiveTeleportConnection:Disconnect()
- ActiveTeleportConnection = nil
- end
- if isOnGround or isLanded then
- UI:Notify("✅ Chegou", locationName, 1)
- else
- local rayParams = RaycastParams.new()
- rayParams.FilterType = Enum.RaycastFilterType.Blacklist
- rayParams.FilterDescendantsInstances = {char}
- local rayResult = workspace:Raycast(
- root.Position,
- Vector3.new(0, -200, 0),
- rayParams
- )
- if rayResult then
- root.CFrame = CFrame.new(rayResult.Position + Vector3.new(0, 3, 0))
- end
- UI:Notify("⚠️ Ajustado", "Posição corrigida", 1)
- end
- return
- end
- end)
- return true
- end
- --// ========== MÓDULO: CLICK TELEPORT ========== //
- local ClickTeleportModule = (function()
- local _enabled = false
- local _uiVisible = false
- local _screenGui = nil
- local _mainFrame = nil
- local _minimizedBtn = nil
- local _connections = {}
- local Mouse = LocalPlayer:GetMouse()
- local ClickState = {
- StartTime = 0,
- StartPosition = nil,
- IsValid = false,
- }
- local CTConfig = {
- MaxClickTime = 0.3,
- MaxDragDistance = 10,
- RaycastDistance = 10000,
- TeleportOffset = 3,
- }
- local CTTheme = {
- Background = Color3.fromRGB(25, 25, 35),
- Secondary = Color3.fromRGB(35, 35, 45),
- Accent = Color3.fromRGB(90, 170, 255),
- Success = Color3.fromRGB(90, 255, 140),
- Danger = Color3.fromRGB(255, 90, 90),
- Text = Color3.fromRGB(255, 255, 255),
- TextDim = Color3.fromRGB(180, 180, 200),
- }
- local function _getMouseHit()
- local unitRay = Camera:ScreenPointToRay(Mouse.X, Mouse.Y)
- local raycastParams = RaycastParams.new()
- raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
- raycastParams.FilterDescendantsInstances = {LocalPlayer.Character}
- raycastParams.IgnoreWater = false
- local raycastResult = workspace:Raycast(
- unitRay.Origin,
- unitRay.Direction * CTConfig.RaycastDistance,
- raycastParams
- )
- return raycastResult
- end
- local function _teleportToPosition(position)
- local root = getHumanoidRootPart()
- if not root then return false end
- local currentPosition = root.Position
- local teleportPos = position + Vector3.new(0, CTConfig.TeleportOffset, 0)
- local directionVector = (position - currentPosition)
- local horizontalDirection = Vector3.new(directionVector.X, 0, directionVector.Z)
- local lookDirection = horizontalDirection.Unit
- local targetCFrame = CFrame.new(teleportPos, teleportPos + lookDirection)
- root.CFrame = targetCFrame
- return true
- end
- local function _isValidClick(startPos, endPos, duration)
- if duration > CTConfig.MaxClickTime then return false end
- local dragDistance = (endPos - startPos).Magnitude
- if dragDistance > CTConfig.MaxDragDistance then return false end
- return true
- end
- local function _updateStatusLabel(text, color)
- if _mainFrame then
- local statusLabel = _mainFrame:FindFirstChild("Container"):FindFirstChild("StatusLabel")
- if statusLabel then
- statusLabel.Text = text
- statusLabel.TextColor3 = color
- end
- end
- end
- local function _enableClickDetection()
- for _, conn in ipairs(_connections) do
- if conn and conn.Connected then
- conn:Disconnect()
- end
- end
- _connections = {}
- table.insert(_connections, UserInputService.InputBegan:Connect(function(input, gameProcessed)
- if gameProcessed then return end
- if not _enabled then return end
- if input.UserInputType == Enum.UserInputType.MouseButton1 or
- input.UserInputType == Enum.UserInputType.Touch then
- ClickState.StartTime = tick()
- ClickState.StartPosition = Vector2.new(Mouse.X, Mouse.Y)
- ClickState.IsValid = true
- end
- end))
- table.insert(_connections, UserInputService.InputEnded:Connect(function(input, gameProcessed)
- if gameProcessed then return end
- if not _enabled then return end
- if not ClickState.IsValid then return end
- if input.UserInputType == Enum.UserInputType.MouseButton1 or
- input.UserInputType == Enum.UserInputType.Touch then
- local clickDuration = tick() - ClickState.StartTime
- local endPosition = Vector2.new(Mouse.X, Mouse.Y)
- if _isValidClick(ClickState.StartPosition, endPosition, clickDuration) then
- local raycastResult = _getMouseHit()
- if raycastResult then
- if _teleportToPosition(raycastResult.Position) then
- _updateStatusLabel("✅ Teleportado!", CTTheme.Success)
- task.wait(1)
- _updateStatusLabel("Clique em qualquer lugar para teleportar", CTTheme.TextDim)
- end
- else
- _updateStatusLabel("❌ Não é possível teleportar para o céu", CTTheme.Danger)
- task.wait(1.5)
- _updateStatusLabel("Clique em qualquer lugar para teleportar", CTTheme.TextDim)
- end
- end
- ClickState.IsValid = false
- end
- end))
- end
- local function _disableClickDetection()
- for _, conn in ipairs(_connections) do
- if conn and conn.Connected then
- conn:Disconnect()
- end
- end
- _connections = {}
- end
- local function _minimizeUI()
- if _mainFrame then
- _mainFrame.Visible = false
- end
- if _minimizedBtn then
- _minimizedBtn.Visible = true
- _minimizedBtn.Size = UDim2.new(0, 0, 0, 0)
- TweenService:Create(_minimizedBtn, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
- Size = UDim2.new(0, 50, 0, 50)
- }):Play()
- end
- end
- local function _maximizeUI()
- if _minimizedBtn then
- TweenService:Create(_minimizedBtn, TweenInfo.new(0.2, Enum.EasingStyle.Back, Enum.EasingDirection.In), {
- Size = UDim2.new(0, 0, 0, 0)
- }):Play()
- task.wait(0.2)
- _minimizedBtn.Visible = false
- end
- if _mainFrame then
- _mainFrame.Visible = true
- _mainFrame.Size = UDim2.new(0, 0, 0, 0)
- TweenService:Create(_mainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
- Size = UDim2.new(0, 260, 0, 180)
- }):Play()
- end
- end
- local function _createUI()
- if _screenGui then
- pcall(function() _screenGui:Destroy() end)
- _screenGui = nil
- end
- _screenGui = Instance.new("ScreenGui")
- _screenGui.Name = "ClickTeleportUI_PreHistoria"
- _screenGui.ResetOnSpawn = false
- _screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
- _screenGui.Parent = game:GetService("CoreGui")
- _mainFrame = Instance.new("Frame")
- _mainFrame.Name = "MainFrame"
- _mainFrame.Size = UDim2.new(0, 260, 0, 180)
- _mainFrame.Position = UDim2.new(0.5, -130, 0.5, -90)
- _mainFrame.BackgroundColor3 = CTTheme.Background
- _mainFrame.BackgroundTransparency = 0.05
- _mainFrame.BorderSizePixel = 0
- _mainFrame.Active = true
- _mainFrame.Draggable = true
- _mainFrame.Parent = _screenGui
- AddCorner(_mainFrame, 12)
- AddStroke(_mainFrame, CTTheme.Accent, 2, 0.3)
- local bgGradient = Instance.new("UIGradient")
- bgGradient.Color = ColorSequence.new{
- ColorSequenceKeypoint.new(0, Color3.fromRGB(30, 30, 40)),
- ColorSequenceKeypoint.new(1, Color3.fromRGB(20, 20, 30))
- }
- bgGradient.Rotation = 45
- bgGradient.Parent = _mainFrame
- local header = Instance.new("Frame")
- header.Size = UDim2.new(1, 0, 0, 50)
- header.BackgroundColor3 = CTTheme.Secondary
- header.BackgroundTransparency = 0.2
- header.BorderSizePixel = 0
- header.Parent = _mainFrame
- AddCorner(header, 12)
- local headerFix = Instance.new("Frame")
- headerFix.Size = UDim2.new(1, 0, 0, 12)
- headerFix.Position = UDim2.new(0, 0, 1, -12)
- headerFix.BackgroundColor3 = CTTheme.Secondary
- headerFix.BackgroundTransparency = 0.2
- headerFix.BorderSizePixel = 0
- headerFix.Parent = header
- local title = Instance.new("TextLabel")
- title.Size = UDim2.new(1, -85, 1, 0)
- title.Position = UDim2.new(0, 15, 0, 0)
- title.BackgroundTransparency = 1
- title.Text = "🎯 Click Teleport"
- title.TextColor3 = CTTheme.Text
- title.TextSize = 17
- title.Font = Enum.Font.GothamBold
- title.TextXAlignment = Enum.TextXAlignment.Left
- title.Parent = header
- local minimizeBtn = Instance.new("TextButton")
- minimizeBtn.Size = UDim2.new(0, 35, 0, 35)
- minimizeBtn.Position = UDim2.new(1, -78, 0.5, -17.5)
- minimizeBtn.BackgroundColor3 = Color3.fromRGB(255, 200, 100)
- minimizeBtn.BackgroundTransparency = 0.2
- minimizeBtn.Text = "➖"
- minimizeBtn.TextColor3 = CTTheme.Text
- minimizeBtn.TextSize = 18
- minimizeBtn.Font = Enum.Font.GothamBold
- minimizeBtn.AutoButtonColor = false
- minimizeBtn.Parent = header
- AddCorner(minimizeBtn, 8)
- local closeBtn = Instance.new("TextButton")
- closeBtn.Size = UDim2.new(0, 35, 0, 35)
- closeBtn.Position = UDim2.new(1, -38, 0.5, -17.5)
- closeBtn.BackgroundColor3 = CTTheme.Danger
- closeBtn.BackgroundTransparency = 0.2
- closeBtn.Text = "✕"
- closeBtn.TextColor3 = CTTheme.Text
- closeBtn.TextSize = 20
- closeBtn.Font = Enum.Font.GothamBold
- closeBtn.AutoButtonColor = false
- closeBtn.Parent = header
- AddCorner(closeBtn, 8)
- local container = Instance.new("Frame")
- container.Name = "Container"
- container.Size = UDim2.new(1, -20, 1, -60)
- container.Position = UDim2.new(0, 10, 0, 55)
- container.BackgroundTransparency = 1
- container.Parent = _mainFrame
- local toggleBtn = Instance.new("TextButton")
- toggleBtn.Name = "ToggleBtn"
- toggleBtn.Size = UDim2.new(1, 0, 0, 55)
- toggleBtn.Position = UDim2.new(0, 0, 0, 0)
- toggleBtn.BackgroundColor3 = CTTheme.Danger
- toggleBtn.BackgroundTransparency = 0.1
- toggleBtn.Text = "🔴 DESATIVADO"
- toggleBtn.TextColor3 = CTTheme.Text
- toggleBtn.TextSize = 16
- toggleBtn.Font = Enum.Font.GothamBold
- toggleBtn.AutoButtonColor = false
- toggleBtn.Parent = container
- AddCorner(toggleBtn, 10)
- local toggleStroke = Instance.new("UIStroke")
- toggleStroke.Name = "Stroke"
- toggleStroke.Color = CTTheme.Danger
- toggleStroke.Thickness = 2
- toggleStroke.Transparency = 0.3
- toggleStroke.Parent = toggleBtn
- local statusLabel = Instance.new("TextLabel")
- statusLabel.Name = "StatusLabel"
- statusLabel.Size = UDim2.new(1, 0, 0, 25)
- statusLabel.Position = UDim2.new(0, 0, 0, 65)
- statusLabel.BackgroundTransparency = 1
- statusLabel.Text = "Clique em qualquer lugar para teleportar"
- statusLabel.TextColor3 = CTTheme.TextDim
- statusLabel.TextSize = 12
- statusLabel.Font = Enum.Font.Gotham
- statusLabel.TextWrapped = true
- statusLabel.Parent = container
- local infoLabel = Instance.new("TextLabel")
- infoLabel.Size = UDim2.new(1, 0, 0, 20)
- infoLabel.Position = UDim2.new(0, 0, 0, 92)
- infoLabel.BackgroundTransparency = 1
- infoLabel.Text = "⚡ Teleporte limpo e instantâneo"
- infoLabel.TextColor3 = CTTheme.Success
- infoLabel.TextSize = 11
- infoLabel.Font = Enum.Font.Gotham
- infoLabel.Parent = container
- _minimizedBtn = Instance.new("TextButton")
- _minimizedBtn.Name = "MinimizedBtn"
- _minimizedBtn.Size = UDim2.new(0, 50, 0, 50)
- _minimizedBtn.Position = UDim2.new(1, -60, 0, 10)
- _minimizedBtn.BackgroundColor3 = CTTheme.Accent
- _minimizedBtn.BackgroundTransparency = 0.1
- _minimizedBtn.Text = "🎯"
- _minimizedBtn.TextColor3 = CTTheme.Text
- _minimizedBtn.TextSize = 24
- _minimizedBtn.Font = Enum.Font.GothamBold
- _minimizedBtn.AutoButtonColor = false
- _minimizedBtn.Visible = false
- _minimizedBtn.Active = true
- _minimizedBtn.Draggable = true
- _minimizedBtn.Parent = _screenGui
- AddCorner(_minimizedBtn, 12)
- AddStroke(_minimizedBtn, CTTheme.Accent, 2)
- toggleBtn.MouseButton1Click:Connect(function()
- _enabled = not _enabled
- if _enabled then
- toggleBtn.Text = "🟢 ATIVADO"
- toggleBtn.BackgroundColor3 = CTTheme.Success
- toggleStroke.Color = CTTheme.Success
- statusLabel.Text = "Clique em qualquer lugar para teleportar"
- _enableClickDetection()
- else
- toggleBtn.Text = "🔴 DESATIVADO"
- toggleBtn.BackgroundColor3 = CTTheme.Danger
- toggleStroke.Color = CTTheme.Danger
- statusLabel.Text = "Teleporte desativado"
- _disableClickDetection()
- end
- end)
- minimizeBtn.MouseButton1Click:Connect(function()
- _minimizeUI()
- end)
- _minimizedBtn.MouseButton1Click:Connect(function()
- _maximizeUI()
- end)
- closeBtn.MouseButton1Click:Connect(function()
- _enabled = false
- _disableClickDetection()
- if _screenGui then
- pcall(function() _screenGui:Destroy() end)
- _screenGui = nil
- _mainFrame = nil
- _minimizedBtn = nil
- end
- _uiVisible = false
- Config.ClickTeleportEnabled = false
- UI:Notify("🎯 Click Teleport", "Desativado completamente", 2)
- end)
- _uiVisible = true
- end
- return {
- Init = function()
- print("✅ Módulo Click Teleport inicializado")
- end,
- Toggle = function(state)
- Config.ClickTeleportEnabled = state
- if state then
- if not _uiVisible then
- _createUI()
- UI:Notify("🎯 Click Teleport", "Interface aberta!", 2)
- end
- else
- if _screenGui then
- _enabled = false
- _disableClickDetection()
- pcall(function() _screenGui:Destroy() end)
- _screenGui = nil
- _mainFrame = nil
- _minimizedBtn = nil
- end
- _uiVisible = false
- UI:Notify("🎯 Click Teleport", "Desativado", 2)
- end
- end,
- Cleanup = function()
- _enabled = false
- _disableClickDetection()
- if _screenGui then
- pcall(function() _screenGui:Destroy() end)
- _screenGui = nil
- _mainFrame = nil
- _minimizedBtn = nil
- end
- _uiVisible = false
- print("🧹 Click Teleport limpo")
- end,
- IsEnabled = function()
- return Config.ClickTeleportEnabled
- end
- }
- end)()
- ClickTeleportModule.Init()
- --// ========== SISTEMA DE NÍVEL DO DINO ========== //
- local function getDinoLevelSilent()
- local now = tick()
- if (now - DinoLevelCache.lastUpdate) < DinoLevelCache.updateInterval then
- return DinoLevelCache.value
- end
- local leaderstats = LocalPlayer:FindFirstChild("leaderstats")
- if leaderstats then
- for _, stat in ipairs(leaderstats:GetChildren()) do
- local name = stat.Name:lower()
- if name:find("level") or name:find("lvl") or name:find("nivel") then
- if stat:IsA("IntValue") or stat:IsA("NumberValue") then
- local val = tonumber(stat.Value) or 0
- if val > 0 then
- DinoLevelCache.value = val
- DinoLevelCache.lastUpdate = now
- return val
- end
- end
- end
- end
- end
- local playerGui = LocalPlayer:FindFirstChild("PlayerGui")
- if playerGui then
- for _, gui in ipairs(playerGui:GetDescendants()) do
- if gui:IsA("TextLabel") or gui:IsA("TextBox") then
- local text = gui.Text:lower()
- if text:find("level") or text:find("lvl") or text:find("nivel") then
- local number = text:match("%d+")
- if number then
- local val = tonumber(number)
- if val and val > 0 and val <= 100 then
- DinoLevelCache.value = val
- DinoLevelCache.lastUpdate = now
- return val
- end
- end
- end
- end
- end
- end
- DinoLevelCache.lastUpdate = now
- return DinoLevelCache.value
- end
- --// ========== SISTEMA DE CRISTAIS ========== //
- local prioridadeMap = { legendary = 1, epic = 2, rare = 3, crystal = 4 }
- local function getCrystalRank(name)
- name = name:lower()
- for key, rank in pairs(prioridadeMap) do
- if name:find(key) then return rank end
- end
- return 5
- end
- local function getSortedCrystals()
- local found = {}
- for _, obj in ipairs(workspace:GetDescendants()) do
- if obj:IsA("BasePart") and obj.Parent and obj.Parent:IsA("Model") then
- local rank = getCrystalRank(obj.Parent.Name)
- if rank < 5 then
- table.insert(found, {part = obj, rank = rank})
- end
- end
- end
- table.sort(found, function(a, b) return a.rank < b.rank end)
- local parts = {}
- for _, entry in ipairs(found) do
- table.insert(parts, entry.part)
- end
- return parts
- end
- --// ========== SISTEMA ESP DE CARNES ========== //
- local ActiveMeatESPs = {}
- local meatUpdateLoop = nil
- local meatScanLoop = nil
- local function isMeatObject(obj)
- if not obj then return false, nil end
- if obj:IsA("ProximityPrompt") and obj.Enabled then
- local action = (obj.ActionText or ""):lower()
- local objText = (obj.ObjectText or ""):lower()
- local foodActions = {"coma", "eat", "pegar", "pick", "grab", "take"}
- for _, foodAction in ipairs(foodActions) do
- if action:find(foodAction) then
- local fullText = action .. " " .. objText
- local excludeWords = {"plant", "fish", "berry", "fruit", "vegetable", "seed"}
- local isExcluded = false
- for _, word in ipairs(excludeWords) do
- if fullText:find(word) then
- isExcluded = true
- break
- end
- end
- if not isExcluded then
- local parent = obj.Parent
- if parent and parent:IsA("BasePart") then
- for _, player in ipairs(Players:GetPlayers()) do
- if player.Character and parent:IsDescendantOf(player.Character) then
- return false, nil
- end
- end
- return true, parent
- end
- end
- end
- end
- end
- if obj:IsA("Model") or obj:IsA("BasePart") then
- local name = (obj.Name or ""):lower()
- local meatWords = {
- "meat", "carne", "beef", "steak", "chicken",
- "frango", "pork", "porco", "bacon", "ham"
- }
- for _, word in ipairs(meatWords) do
- if name:find(word) then
- for _, player in ipairs(Players:GetPlayers()) do
- if player.Character and obj:IsDescendantOf(player.Character) then
- return false, nil
- end
- end
- if obj:IsA("Model") then
- local part = obj.PrimaryPart or obj:FindFirstChildWhichIsA("BasePart")
- return part ~= nil, part
- else
- return true, obj
- end
- end
- end
- end
- return false, nil
- end
- local function findNearestMeat()
- local char = LocalPlayer.Character
- local root = char and char:FindFirstChild("HumanoidRootPart")
- if not root then return nil, math.huge end
- local nearestMeat = nil
- local nearestDistance = math.huge
- for _, obj in ipairs(workspace:GetDescendants()) do
- local isMeat, part = isMeatObject(obj)
- if isMeat and part and part.Parent then
- local distance = (part.Position - root.Position).Magnitude
- if distance < nearestDistance then
- nearestDistance = distance
- nearestMeat = part
- end
- end
- end
- return nearestMeat, nearestDistance
- end
- local function createMeatESP(part)
- if not part or not part:IsA("BasePart") or not part.Parent then return end
- local id = tostring(part:GetDebugId())
- if ActiveMeatESPs[id] then return end
- local esp = Instance.new("BillboardGui")
- esp.Name = "MeatESP_" .. id
- esp.Adornee = part
- esp.Size = UDim2.new(0, Config.ESP_MAX_SIZE, 0, Config.ESP_MAX_SIZE * 0.4)
- esp.StudsOffset = Vector3.new(0, 3, 0)
- esp.AlwaysOnTop = true
- esp.LightInfluence = 0
- esp.MaxDistance = Config.MAX_VISIBLE_DISTANCE
- esp.Parent = workspace
- esp.Enabled = true
- local frame = Instance.new("Frame", esp)
- frame.Size = UDim2.new(1, 0, 1, 0)
- frame.BackgroundColor3 = Color3.fromRGB(255, 80, 80)
- frame.BackgroundTransparency = 0.4
- frame.BorderSizePixel = 1
- frame.BorderColor3 = Color3.fromRGB(255, 200, 0)
- AddCorner(frame, 6)
- local iconLabel = Instance.new("TextLabel", frame)
- iconLabel.Size = UDim2.new(0.3, 0, 0.9, 0)
- iconLabel.Position = UDim2.new(0, 2, 0.05, 0)
- iconLabel.BackgroundTransparency = 1
- iconLabel.Text = "🥩"
- iconLabel.TextScaled = true
- iconLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
- iconLabel.Font = Enum.Font.SourceSansBold
- iconLabel.TextStrokeTransparency = 0.5
- local distLabel = Instance.new("TextLabel", frame)
- distLabel.Name = "Distance"
- distLabel.Size = UDim2.new(0.7, -4, 0.9, 0)
- distLabel.Position = UDim2.new(0.3, 2, 0.05, 0)
- distLabel.BackgroundTransparency = 1
- distLabel.Text = "0m"
- distLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
- distLabel.TextStrokeTransparency = 0.3
- distLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
- distLabel.Font = Enum.Font.GothamBold
- distLabel.TextScaled = true
- ActiveMeatESPs[id] = {
- gui = esp,
- part = part,
- distLabel = distLabel,
- frame = frame,
- iconLabel = iconLabel
- }
- return true
- end
- local function scanForMeats()
- if not Config.EspMeatActive then return end
- for id, data in pairs(ActiveMeatESPs) do
- if data.gui then
- pcall(function() data.gui:Destroy() end)
- end
- end
- ActiveMeatESPs = {}
- local meatCount = 0
- local checkedCount = 0
- for _, obj in ipairs(workspace:GetDescendants()) do
- checkedCount = checkedCount + 1
- if checkedCount % 300 == 0 then
- task.wait()
- if not Config.EspMeatActive then return end
- end
- local isMeat, part = isMeatObject(obj)
- if isMeat and part and part.Parent then
- if createMeatESP(part) then
- meatCount = meatCount + 1
- end
- end
- end
- end
- local function updateMeatESPInfo()
- if not Config.EspMeatActive then return end
- local char = LocalPlayer.Character
- local root = char and char:FindFirstChild("HumanoidRootPart")
- if not root then return end
- for id, data in pairs(ActiveMeatESPs) do
- if data.part and data.part.Parent and data.gui and data.gui.Parent then
- local distance = (data.part.Position - root.Position).Magnitude
- data.gui.Enabled = true
- if data.distLabel then
- if distance < 100 then
- data.distLabel.Text = string.format("%.0fm", distance)
- elseif distance < 1000 then
- data.distLabel.Text = string.format("%.0fm", distance)
- else
- data.distLabel.Text = string.format("%.1fkm", distance / 1000)
- end
- end
- local scaleFactor
- if distance <= 50 then scaleFactor = 1.0
- elseif distance <= 200 then scaleFactor = 0.75
- elseif distance <= 500 then scaleFactor = 0.6
- elseif distance <= 1000 then scaleFactor = 0.5
- else scaleFactor = 0.4 end
- local newSize = Config.ESP_MIN_SIZE + ((Config.ESP_MAX_SIZE - Config.ESP_MIN_SIZE) * scaleFactor)
- data.gui.Size = UDim2.new(0, newSize, 0, newSize * 0.4)
- if data.frame then
- local transparency
- if distance < 300 then transparency = 0.3
- elseif distance < 1000 then transparency = 0.5
- else transparency = 0.7 end
- data.frame.BackgroundTransparency = transparency
- end
- if distance < 100 then
- data.frame.BackgroundColor3 = Color3.fromRGB(100, 255, 100)
- data.frame.BorderColor3 = Color3.fromRGB(200, 255, 200)
- elseif distance < 500 then
- data.frame.BackgroundColor3 = Color3.fromRGB(255, 255, 100)
- data.frame.BorderColor3 = Color3.fromRGB(255, 255, 150)
- else
- data.frame.BackgroundColor3 = Color3.fromRGB(255, 120, 120)
- data.frame.BorderColor3 = Color3.fromRGB(255, 150, 150)
- end
- else
- if data.gui then
- pcall(function() data.gui:Destroy() end)
- end
- ActiveMeatESPs[id] = nil
- end
- end
- end
- local function startMeatESP()
- if meatUpdateLoop then return end
- scanForMeats()
- meatUpdateLoop = RunService.Heartbeat:Connect(function()
- updateMeatESPInfo()
- end)
- meatScanLoop = task.spawn(function()
- while Config.EspMeatActive do
- task.wait(10)
- if Config.EspMeatActive then
- scanForMeats()
- end
- end
- end)
- workspace.DescendantAdded:Connect(function(obj)
- if not Config.EspMeatActive then return end
- task.wait(0.1)
- local isMeat, part = isMeatObject(obj)
- if isMeat and part then
- local id = tostring(part:GetDebugId())
- if not ActiveMeatESPs[id] then
- createMeatESP(part)
- end
- end
- end)
- end
- local function stopMeatESP()
- if meatUpdateLoop then
- meatUpdateLoop:Disconnect()
- meatUpdateLoop = nil
- end
- if meatScanLoop then
- task.cancel(meatScanLoop)
- meatScanLoop = nil
- end
- for id, data in pairs(ActiveMeatESPs) do
- if data.gui then
- pcall(function() data.gui:Destroy() end)
- end
- end
- ActiveMeatESPs = {}
- end
- --// ========== SISTEMA ESP DE JOGADORES ========== //
- local PlayerESP_Data = {}
- local ESP_CONFIG = {
- UpdateInterval = 0.5,
- HPBarMaxDistance = 4000,
- HPBarSize = UDim2.new(0, 50, 0, 5),
- HPBarYOffset = 0.5,
- HighlightFillTransparency = 0.85,
- OutlineTransparency = 0.15,
- }
- local COLOR_ENEMY = Color3.fromRGB(255, 85, 85)
- local COLOR_FRIEND = Color3.fromRGB(85, 255, 85)
- local COLOR_NEUTRAL = Color3.fromRGB(240, 240, 240)
- local function isNeutralPlayer(p)
- return p.Team == nil
- end
- local function isAllyPlayer(p)
- return LocalPlayer.Team and p.Team == LocalPlayer.Team
- end
- local function colorForPlayer(p)
- if isNeutralPlayer(p) then
- return COLOR_NEUTRAL
- end
- if isAllyPlayer(p) then
- return COLOR_FRIEND
- end
- return COLOR_ENEMY
- end
- local function shouldShowPlayerESP(p)
- if not Config.PlayerESP then return false end
- if Config.PlayerESP_TeamCheck then return not isAllyPlayer(p) end
- return true
- end
- local function shouldShowPlayerHP(p)
- if not Config.PlayerESP_ShowHP then return false end
- if Config.PlayerESP_TeamCheck then return not isAllyPlayer(p) end
- return true
- end
- local function clearPlayerESP(plr)
- local pack = PlayerESP_Data[plr]
- if not pack then return end
- if pack.highlight then
- pcall(function() pack.highlight:Destroy() end)
- pack.highlight = nil
- end
- if pack.hpGui then
- pcall(function() pack.hpGui:Destroy() end)
- pack.hpGui = nil
- end
- PlayerESP_Data[plr] = nil
- end
- local function setupPlayerESP(plr)
- if plr == LocalPlayer then return end
- if not plr.Character then return end
- clearPlayerESP(plr)
- local char = plr.Character
- local hum = char:FindFirstChildOfClass("Humanoid")
- local root = char:FindFirstChild("HumanoidRootPart")
- local head = char:FindFirstChild("Head")
- if not hum or not root then return end
- PlayerESP_Data[plr] = {}
- -- Highlight
- local hi = Instance.new("Highlight")
- hi.Name = "PlayerESP_Highlight"
- hi.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
- hi.FillTransparency = ESP_CONFIG.HighlightFillTransparency
- hi.OutlineTransparency = ESP_CONFIG.OutlineTransparency
- hi.Adornee = char
- hi.Parent = char
- local col = colorForPlayer(plr)
- hi.FillColor = col
- hi.OutlineColor = col
- hi.Enabled = shouldShowPlayerESP(plr)
- PlayerESP_Data[plr].highlight = hi
- -- HP Bar
- local bill = Instance.new("BillboardGui")
- bill.Name = "PlayerESP_HP"
- bill.AlwaysOnTop = true
- bill.LightInfluence = 0
- bill.Size = ESP_CONFIG.HPBarSize
- bill.MaxDistance = ESP_CONFIG.HPBarMaxDistance
- bill.Parent = char
- if head then
- bill.Adornee = head
- local headSize = head.Size.Y
- bill.StudsOffset = Vector3.new(0, headSize/2 + ESP_CONFIG.HPBarYOffset, 0)
- else
- bill.Adornee = root
- bill.StudsOffset = Vector3.new(0, 2.5 + ESP_CONFIG.HPBarYOffset, 0)
- end
- local bg = Instance.new("Frame", bill)
- bg.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
- bg.BackgroundTransparency = 0.2
- bg.BorderSizePixel = 0
- bg.Size = UDim2.fromScale(1, 1)
- AddCorner(bg, 2)
- AddStroke(bg, Color3.fromRGB(0, 0, 0), 1.5)
- local fill = Instance.new("Frame", bg)
- fill.BackgroundColor3 = COLOR_FRIEND
- fill.BorderSizePixel = 0
- fill.Size = UDim2.fromScale(1, 1)
- AddCorner(fill, 2)
- bill.Enabled = shouldShowPlayerHP(plr)
- PlayerESP_Data[plr].hpGui = bill
- PlayerESP_Data[plr].hpFill = fill
- PlayerESP_Data[plr].hum = hum
- end
- task.spawn(function()
- while true do
- task.wait(ESP_CONFIG.UpdateInterval)
- for plr, pack in pairs(PlayerESP_Data) do
- if plr and plr.Parent and plr.Character then
- local hum = pack.hum
- if hum and pack.hpFill then
- local h = hum.Health
- local m = hum.MaxHealth
- if m <= 0 then m = 100 end
- local ratio = math.clamp(h / m, 0, 1)
- pack.hpFill.Size = UDim2.new(ratio, 0, 1, 0)
- local r, g
- if ratio > 0.5 then
- r = (1 - ratio) * 2 * 255
- g = 255
- else
- r = 255
- g = ratio * 2 * 255
- end
- pack.hpFill.BackgroundColor3 = Color3.fromRGB(r, g, 0)
- if pack.hpGui then
- pack.hpGui.Enabled = shouldShowPlayerHP(plr) and (h > 0)
- end
- end
- if pack.highlight then
- pack.highlight.Enabled = shouldShowPlayerESP(plr)
- end
- else
- clearPlayerESP(plr)
- end
- end
- end
- end)
- Players.PlayerAdded:Connect(function(plr)
- plr.CharacterAdded:Connect(function()
- task.wait(1)
- setupPlayerESP(plr)
- end)
- end)
- Players.PlayerRemoving:Connect(function(plr)
- clearPlayerESP(plr)
- end)
- for _, plr in ipairs(Players:GetPlayers()) do
- if plr ~= LocalPlayer and plr.Character then
- setupPlayerESP(plr)
- end
- plr.CharacterAdded:Connect(function()
- task.wait(1)
- setupPlayerESP(plr)
- end)
- end
- --// ========== CARREGAR TELEPORTS SALVOS ========== //
- local function loadSavedTeleports()
- local success, data = pcall(function()
- return HttpService:JSONDecode(readfile("PreHistoria_Teleports.json"))
- end)
- if success and data then
- Config.SavedTeleports = data
- print("📍 Carregado " .. #data .. " teleports salvos")
- else
- Config.SavedTeleports = {}
- print("📍 Nenhum teleport salvo encontrado")
- end
- end
- loadSavedTeleports()
- --// ========== CRIAR INTERFACE ========== //
- UI:CreateWindow("🦖 Pré-história - By: NickZScripts")
- --// ========== ABA MENU ========== //
- local MenuTab = UI:CreateTab("Menu", "🏠")
- MenuTab:CreateSection("📊 Informações")
- local PlayersCountLabel = MenuTab:CreateLabel("👥 Players Online: 0/0")
- local function updatePlayerCount()
- local current = #Players:GetPlayers()
- local max = Players.MaxPlayers
- PlayersCountLabel:Set(string.format("👥 Players Online: %d/%d", current, max))
- end
- updatePlayerCount()
- Players.PlayerAdded:Connect(updatePlayerCount)
- Players.PlayerRemoving:Connect(updatePlayerCount)
- task.spawn(function()
- while true do
- task.wait(5)
- updatePlayerCount()
- end
- end)
- MenuTab:CreateParagraph({
- Title = "📜 Script Info",
- Content = "Versão: " .. ScriptVersion .. "\nStatus: ✅ Operacional\nInterface: Custom UI"
- })
- MenuTab:CreateParagraph({
- Title = "👤 Jogador",
- Content = "Nome: " .. LocalPlayer.Name .. "\nDisplay: " .. LocalPlayer.DisplayName .. "\nID: " .. LocalPlayer.UserId
- })
- MenuTab:CreateSection("⚡ Sistemas Ativos")
- local AutoFarmStatusLabel = MenuTab:CreateLabel("💎 Auto Farm - Desligado")
- local EspCarnesStatusLabel = MenuTab:CreateLabel("🥩 ESP Carnes - Desligado")
- local EspJogadoresStatusLabel = MenuTab:CreateLabel("👥 ESP Jogadores - Desligado")
- local AutoColetaStatusLabel = MenuTab:CreateLabel("🔄 Auto Coleta - Desligado")
- MenuTab:CreateSection("👨💻 Créditos")
- MenuTab:CreateParagraph({
- Title = "Desenvolvedor",
- Content = "Script: NickZScripts\nInterface: Custom UI (No Library)\nVersão: " .. ScriptVersion
- })
- --// ========== ABA AUTO FARM ========== //
- local FarmTab = UI:CreateTab("Auto Farm", "⚡")
- FarmTab:CreateSection("💎 Farm de Cristais")
- local DinoLevelLabel = FarmTab:CreateLabel("🦖 Nível do Dino: 0/60")
- task.spawn(function()
- while true do
- task.wait(2)
- local level = getDinoLevelSilent()
- DinoLevelLabel:Set(string.format("🦖 Nível do Dino: %d/60", level))
- end
- end)
- local AutoFarmToggle = FarmTab:CreateToggle({
- Name = "Auto Farm Cristais",
- CurrentValue = false,
- Callback = function(Value)
- Config.AutoFarm = Value
- if Value then
- AutoFarmStatusLabel:Set("💎 Auto Farm - Ligado")
- UI:Notify("✅ Ativado", "Auto Farm ligado", 2)
- else
- AutoFarmStatusLabel:Set("💎 Auto Farm - Desligado")
- UI:Notify("❌ Desativado", "Auto Farm desligado", 2)
- end
- end,
- })
- FarmTab:CreateSection("🔄 Auto Coleta")
- local AutoColetaToggle = FarmTab:CreateToggle({
- Name = "Auto Coleta",
- CurrentValue = false,
- Callback = function(Value)
- Config.AutoColeta = Value
- if Value then
- AutoColetaStatusLabel:Set("🔄 Auto Coleta - Ligado")
- UI:Notify("✅ Ativado", "Auto Coleta ligado", 2)
- else
- AutoColetaStatusLabel:Set("🔄 Auto Coleta - Desligado")
- UI:Notify("❌ Desativado", "Auto Coleta desligado", 2)
- end
- end,
- })
- --// ========== ABA ESP ========== //
- local EspTab = UI:CreateTab("ESP", "👁️")
- EspTab:CreateSection("👥 ESP de Jogadores")
- local EspJogadoresToggle = EspTab:CreateToggle({
- Name = "ESP de Jogadores",
- CurrentValue = false,
- Callback = function(Value)
- Config.PlayerESP = Value
- if Value then
- EspJogadoresStatusLabel:Set("👥 ESP Jogadores - Ligado")
- for _, plr in ipairs(Players:GetPlayers()) do
- if plr ~= LocalPlayer then
- setupPlayerESP(plr)
- end
- end
- UI:Notify("✅ Ativado", "ESP Jogadores ligado", 2)
- else
- EspJogadoresStatusLabel:Set("👥 ESP Jogadores - Desligado")
- for plr, pack in pairs(PlayerESP_Data) do
- if pack.highlight then pack.highlight.Enabled = false end
- if pack.hpGui then pack.hpGui.Enabled = false end
- end
- UI:Notify("❌ Desativado", "ESP Jogadores desligado", 2)
- end
- end,
- })
- local EspHPToggle = EspTab:CreateToggle({
- Name = "Barra de Vida",
- CurrentValue = false,
- Callback = function(Value)
- Config.PlayerESP_ShowHP = Value
- for plr, pack in pairs(PlayerESP_Data) do
- if pack.hpGui then
- pack.hpGui.Enabled = shouldShowPlayerHP(plr)
- end
- end
- UI:Notify(Value and "✅ Ativado" or "❌ Desativado", "Barra de Vida " .. (Value and "ligada" or "desligada"), 2)
- end,
- })
- local EspTeamCheckToggle = EspTab:CreateToggle({
- Name = "TeamCheck (Só Inimigos)",
- CurrentValue = false,
- Callback = function(Value)
- Config.PlayerESP_TeamCheck = Value
- for plr, pack in pairs(PlayerESP_Data) do
- if pack.highlight then
- pack.highlight.Enabled = shouldShowPlayerESP(plr)
- end
- if pack.hpGui then
- pack.hpGui.Enabled = shouldShowPlayerHP(plr)
- end
- end
- UI:Notify(Value and "✅ Ativado" or "❌ Desativado", "TeamCheck " .. (Value and "ligado" or "desligado"), 2)
- end,
- })
- EspTab:CreateSection("🥩 ESP de Carnes")
- local EspToggle = EspTab:CreateToggle({
- Name = "ESP de Carnes",
- CurrentValue = false,
- Callback = function(Value)
- Config.EspMeatActive = Value
- if Value then
- EspCarnesStatusLabel:Set("🥩 ESP Carnes - Ligado")
- startMeatESP()
- UI:Notify("✅ Ativado", "ESP Carnes ligado", 2)
- else
- EspCarnesStatusLabel:Set("🥩 ESP Carnes - Desligado")
- stopMeatESP()
- UI:Notify("❌ Desativado", "ESP Carnes desligado", 2)
- end
- end,
- })
- --// ========== ABA TELEPORT ========== //
- local TeleportTab = UI:CreateTab("Teleport", "🚀")
- TeleportTab:CreateSection("🍖 Teleportes Rápidos")
- TeleportTab:CreateButton({
- Name = "Teleportar para Carne Mais Próxima",
- Callback = function()
- local meat, distance = findNearestMeat()
- if not meat then
- UI:Notify("❌ Erro", "Nenhuma carne encontrada!", 2)
- return
- end
- safeTeleport(CFrame.new(meat.Position + Vector3.new(0, 3, 0)), "Carne")
- end,
- })
- TeleportTab:CreateSection("🏠 Teleporte para Spawn")
- TeleportTab:CreateButton({
- Name = "Voltar ao Spawn",
- Callback = function()
- if not LastSpawnPosition then
- UI:Notify("❌ Erro", "Spawn não detectado!", 2)
- return
- end
- safeTeleport(LastSpawnPosition, "Spawn")
- end,
- })
- TeleportTab:CreateSection("📍 Locais Salvos")
- if #Config.SavedTeleports > 0 then
- for i, data in ipairs(Config.SavedTeleports) do
- if data.position then
- local locationName = data.name or ("Local " .. i)
- TeleportTab:CreateButton({
- Name = "📍 " .. locationName,
- Callback = function()
- local pos = data.position
- if not pos or not pos.X or not pos.Y or not pos.Z then
- UI:Notify("❌ Erro", "Posição inválida!", 2)
- return
- end
- local targetCF = CFrame.new(pos.X, pos.Y, pos.Z)
- safeTeleport(targetCF, locationName)
- end,
- })
- end
- end
- else
- TeleportTab:CreateParagraph({
- Title = "ℹ️ Nenhum Local Salvo",
- Content = "Você ainda não possui locais salvos."
- })
- end
- --// ========== ABA OUTROS ========== //
- local OutrosTab = UI:CreateTab("Outros", "⚙️")
- OutrosTab:CreateSection("🎯 Click Teleport")
- OutrosTab:CreateParagraph({
- Title = "ℹ️ Sobre Click Teleport",
- Content = "Teleporte instantâneo clicando em qualquer superfície.\n\n✅ Personagem olha para onde clicou\n✅ Sem efeitos visuais\n✅ Interface móvel"
- })
- OutrosTab:CreateButton({
- Name = "🎯 Abrir Click Teleport",
- Callback = function()
- if not Config.ClickTeleportEnabled then
- ClickTeleportModule.Toggle(true)
- UI:Notify("✅ Click Teleport", "Interface aberta!", 2)
- else
- UI:Notify("ℹ️ Já Ativo", "Click Teleport já está aberto!", 2)
- end
- end,
- })
- OutrosTab:CreateSection("ℹ️ Informações")
- OutrosTab:CreateParagraph({
- Title = "⚙️ Sobre",
- Content = "Interface customizada sem bibliotecas externas!\n\nTodas as funcionalidades foram mantidas do script original."
- })
- --// ========== AUTO FARM LOOP ========== //
- task.spawn(function()
- local index = 1
- while true do
- task.wait(Config.CheckDelay)
- if Config.AutoFarm then
- local currentLevel = getDinoLevelSilent()
- if currentLevel >= 60 then
- Config.AutoFarm = false
- AutoFarmToggle:Set(false)
- AutoFarmStatusLabel:Set("💎 Auto Farm - Desligado")
- UI:Notify("✅ Completo", "Nível 60 atingido!", 3)
- else
- local crystals = getSortedCrystals()
- if #crystals > 0 then
- for _, c in ipairs(crystals) do
- if not Config.AutoFarm or not c or not c.Parent then break end
- teleportToCrystal(c)
- local fixarConexao = RunService.Heartbeat:Connect(function()
- if Config.AutoFarm and c and c:IsDescendantOf(workspace) then
- local char = getCharacter()
- if char and char.PrimaryPart then
- char:SetPrimaryPartCFrame(CFrame.new(c.Position + Vector3.new(0, 4.5, 0)))
- end
- end
- end)
- local elapsed = 0
- while c:IsDescendantOf(workspace) and elapsed < 12 and Config.AutoFarm do
- task.wait(Config.CheckDelay)
- elapsed += Config.CheckDelay
- end
- fixarConexao:Disconnect()
- task.wait(Config.DelayBetweenCrystals)
- end
- else
- index = (index % #Config.PatrulhaPontos) + 1
- teleportTo(Config.PatrulhaPontos[index])
- task.wait(2)
- end
- end
- end
- end
- end)
- --// ========== AUTO COLETA ========== //
- RunService.Heartbeat:Connect(function()
- if not (Config.AutoFarm or Config.AutoColeta) then return end
- if not Config.podeExecutar then return end
- Config.podeExecutar = false
- local root = getHumanoidRootPart()
- if root then
- for _, obj in ipairs(workspace:GetDescendants()) do
- if obj:IsA("ProximityPrompt") and obj.Parent and obj.Parent:IsA("BasePart") then
- if obj.Enabled and (obj.Parent.Position - root.Position).Magnitude <= Config.raioDeColeta then
- pcall(function()
- fireproximityprompt(obj)
- end)
- end
- end
- end
- end
- task.delay(Config.delayEntreTentativas, function()
- Config.podeExecutar = true
- end)
- end)
- --// ========== CLEANUP AO SAIR ========== //
- LocalPlayer.CharacterRemoving:Connect(function()
- ClickTeleportModule.Cleanup()
- end)
- --// ========== LOGS FINAIS ========== //
- print("╔═══════════════════════════════════════════════════════════╗")
- print("║ Pré-história - By: NickZScripts ║")
- print("╠═══════════════════════════════════════════════════════════╣")
- print("║ ✅ Interface UI Customizada carregada! ║")
- print("║ 📌 Versão: " .. ScriptVersion .. " ║")
- print("║ 🎮 Jogador: " .. LocalPlayer.Name)
- print("║ 📊 Players: " .. #Players:GetPlayers() .. "/" .. Players.MaxPlayers)
- print("║ 📍 Teleports Salvos: " .. #Config.SavedTeleports)
- print("╠═══════════════════════════════════════════════════════════╣")
- print("║ 🎨 Interface: 100% Customizada (Sem Bibliotecas) ║")
- print("║ 🚀 Sistema de Teleporte Ultra-Rápido ║")
- print("║ 👁️ ESP de Jogadores e Carnes ║")
- print("║ ⚡ Auto Farm + Auto Coleta ║")
- print("║ 🎯 Click Teleport Integrado ║")
- print("╚═══════════════════════════════════════════════════════════╝")
- UI:Notify("🦖 Pré-história", "Script carregado com sucesso!\nVersão: " .. ScriptVersion, 3, "✅")
Advertisement
Add Comment
Please, Sign In to add comment