Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- ╔═══════════════════════════════════════════════════════════╗
- ║ 🦖 PRÉ-HISTÓRIA - AUTO FARM COMPLETO 🦖 ║
- ║ By: NickZScripts ║
- ║ Interface: WindUI + Auto-Otimização ║
- ║ Versão: v5.0.0 ULTIMATE ║
- ╚═══════════════════════════════════════════════════════════╝
- ]]
- --// ========== 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 Workspace = game:GetService("Workspace")
- local CoreGui = game:GetService("CoreGui")
- --// ========== VARIÁVEIS GLOBAIS ========== //
- local LocalPlayer = Players.LocalPlayer
- local ScriptVersion = "v5.0.0"
- local Camera = Workspace.CurrentCamera
- local Mouse = LocalPlayer:GetMouse()
- --// ========== SISTEMA DE AUTO-OTIMIZAÇÃO ========== //
- local PerformanceManager = {
- FPS = 0,
- LastFPSUpdate = 0,
- FrameTimes = {},
- MaxFrameTimes = 30,
- OptimizationLevel = 1, -- 1 = Normal, 2 = Médio, 3 = Agressivo
- Thresholds = {
- Normal = 55,
- Medium = 40,
- Aggressive = 25
- },
- Settings = {
- [1] = { -- Normal
- ESPUpdateRate = 0.1,
- MaxESPDistance = 999999,
- PlayerProcessPerFrame = 2,
- MeatScanInterval = 10,
- DinoLevelUpdateInterval = 2
- },
- [2] = { -- Médio
- ESPUpdateRate = 0.15,
- MaxESPDistance = 5000,
- PlayerProcessPerFrame = 1,
- MeatScanInterval = 15,
- DinoLevelUpdateInterval = 3
- },
- [3] = { -- Agressivo
- ESPUpdateRate = 0.25,
- MaxESPDistance = 2500,
- PlayerProcessPerFrame = 1,
- MeatScanInterval = 20,
- DinoLevelUpdateInterval = 4
- }
- }
- }
- function PerformanceManager:UpdateFPS()
- local currentTime = tick()
- table.insert(self.FrameTimes, currentTime)
- while #self.FrameTimes > self.MaxFrameTimes do
- table.remove(self.FrameTimes, 1)
- end
- if #self.FrameTimes >= 2 then
- local totalTime = self.FrameTimes[#self.FrameTimes] - self.FrameTimes[1]
- local frameCount = #self.FrameTimes - 1
- self.FPS = math.floor(frameCount / totalTime)
- end
- if currentTime - self.LastFPSUpdate > 2 then
- self:OptimizeBasedOnFPS()
- self.LastFPSUpdate = currentTime
- end
- end
- function PerformanceManager:OptimizeBasedOnFPS()
- local oldLevel = self.OptimizationLevel
- if self.FPS >= self.Thresholds.Normal then
- self.OptimizationLevel = 1
- elseif self.FPS >= self.Thresholds.Medium then
- self.OptimizationLevel = 2
- elseif self.FPS >= self.Thresholds.Aggressive then
- self.OptimizationLevel = 3
- end
- if oldLevel ~= self.OptimizationLevel then
- self:ApplyOptimizations()
- end
- end
- function PerformanceManager:ApplyOptimizations()
- local settings = self.Settings[self.OptimizationLevel]
- -- Aplicar configurações aos módulos
- if MeatESPModule then
- MeatESPModule.UpdateRate = settings.ESPUpdateRate
- MeatESPModule.ScanInterval = settings.MeatScanInterval
- end
- if PlayerESPModule then
- PlayerESPModule.MaxPlayersPerFrame = settings.PlayerProcessPerFrame
- PlayerESPModule.UpdateInterval = settings.ESPUpdateRate
- end
- if DinoLevelModule then
- DinoLevelModule.UpdateInterval = settings.DinoLevelUpdateInterval
- end
- local levelNames = {"Normal", "Médio", "Agressivo"}
- print("🔧 Otimização: " .. levelNames[self.OptimizationLevel] .. " | FPS: " .. self.FPS)
- end
- function PerformanceManager:GetCurrentSettings()
- return self.Settings[self.OptimizationLevel]
- end
- function PerformanceManager:Init()
- RunService.Heartbeat:Connect(function()
- self:UpdateFPS()
- end)
- print("✅ Sistema de Auto-Otimização inicializado")
- end
- --// ========== CONFIGURAÇÕES GLOBAIS ========== //
- local Config = {
- -- Auto Farm
- AutoFarm = false,
- AutoColeta = false,
- -- Farm Settings
- CheckDelay = 0.3,
- DelayBetweenCrystals = 0.1,
- MaxDinoLevel = 60,
- -- Coleta Settings
- raioDeColeta = 25,
- delayEntreTentativas = 0.25,
- podeExecutar = true,
- -- ESP Settings
- EspMeatActive = false,
- PlayerESP = false,
- PlayerESP_ShowHP = false,
- PlayerESP_TeamCheck = false,
- -- Click Teleport
- ClickTeleportEnabled = false,
- -- Teleports
- SavedTeleports = {},
- LastSpawnPosition = nil,
- -- 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),
- }
- }
- --// ========== MÓDULO: UTILIDADES ========== //
- local UtilityModule = {}
- function UtilityModule.getCharacter()
- return LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
- end
- function UtilityModule.getHumanoidRootPart()
- local char = UtilityModule.getCharacter()
- return char and char:FindFirstChild("HumanoidRootPart")
- end
- function UtilityModule.getHumanoid()
- local char = UtilityModule.getCharacter()
- return char and char:FindFirstChildOfClass("Humanoid")
- end
- function UtilityModule.isValidCharacter(char)
- if not char or not char.Parent then return false end
- return char:FindFirstChild("Humanoid") and char:FindFirstChild("HumanoidRootPart")
- end
- function UtilityModule.SafePcall(func)
- local success, result = pcall(func)
- if not success then
- warn("⚠️ Erro capturado:", result)
- end
- return success, result
- end
- function UtilityModule.CleanupConnections(connections)
- for _, conn in ipairs(connections) do
- if conn and conn.Connected then
- UtilityModule.SafePcall(function()
- conn:Disconnect()
- end)
- end
- end
- end
- print("✅ Módulo de Utilidades carregado")
- --// ========== MÓDULO: NÍVEL DO DINO ========== //
- local DinoLevelModule = {
- CurrentLevel = 0,
- LastUpdate = 0,
- UpdateInterval = 2,
- Label = nil
- }
- function DinoLevelModule:GetLevel()
- local now = tick()
- if (now - self.LastUpdate) < self.UpdateInterval then
- return self.CurrentLevel
- end
- -- 1. Verificar leaderstats
- 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
- self.CurrentLevel = val
- self.LastUpdate = now
- return val
- end
- end
- end
- end
- end
- -- 2. Verificar PlayerGui
- 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
- self.CurrentLevel = val
- self.LastUpdate = now
- return val
- end
- end
- end
- end
- end
- end
- -- 3. Verificar Character
- local char = LocalPlayer.Character
- if char then
- for _, obj in ipairs(char:GetDescendants()) do
- if obj:IsA("IntValue") or obj:IsA("NumberValue") then
- local name = obj.Name:lower()
- if name:find("level") or name:find("lvl") or name:find("nivel") then
- local val = tonumber(obj.Value) or 0
- if val > 0 then
- self.CurrentLevel = val
- self.LastUpdate = now
- return val
- end
- end
- end
- end
- end
- -- 4. Verificar Workspace folders
- local possibleFolders = {
- Workspace:FindFirstChild("Dinosaurs"),
- Workspace:FindFirstChild("Pets"),
- Workspace:FindFirstChild("NPCs"),
- Workspace:FindFirstChild("Creatures"),
- Workspace:FindFirstChild("Animals")
- }
- for _, folder in ipairs(possibleFolders) do
- if folder then
- for _, dino in ipairs(folder:GetChildren()) do
- local owner = dino:FindFirstChild("Owner") or dino:FindFirstChild("Player")
- if owner and owner:IsA("ObjectValue") and owner.Value == LocalPlayer then
- for _, obj in ipairs(dino:GetDescendants()) do
- if obj:IsA("IntValue") or obj:IsA("NumberValue") then
- local name = obj.Name:lower()
- if name:find("level") or name:find("lvl") or name:find("nivel") then
- local val = tonumber(obj.Value) or 0
- if val > 0 then
- self.CurrentLevel = val
- self.LastUpdate = now
- return val
- end
- end
- end
- end
- end
- end
- end
- end
- self.LastUpdate = now
- return self.CurrentLevel
- end
- function DinoLevelModule:StartAutoUpdate()
- task.spawn(function()
- while true do
- task.wait(self.UpdateInterval)
- local level = self:GetLevel()
- if self.Label then
- self.Label:Set(string.format("🦖 Nível do Dino: %d/%d", level, Config.MaxDinoLevel))
- end
- end
- end)
- end
- function DinoLevelModule:DebugSearch()
- print("\n╔════════════════════════════════════════╗")
- print("║ INICIANDO BUSCA DE NÍVEL DO DINO ║")
- print("╚════════════════════════════════════════╝\n")
- local function printValues(parent, prefix)
- prefix = prefix or ""
- for _, child in ipairs(parent:GetChildren()) do
- if child:IsA("IntValue") or child:IsA("NumberValue") or child:IsA("StringValue") then
- print(prefix .. "├─ " .. child.ClassName .. ": " .. child.Name .. " = " .. tostring(child.Value))
- end
- if #child:GetChildren() > 0 then
- print(prefix .. "└─ Folder: " .. child.Name)
- printValues(child, prefix .. " ")
- end
- end
- end
- print("[1] Verificando leaderstats...")
- local leaderstats = LocalPlayer:FindFirstChild("leaderstats")
- if leaderstats then
- print("✓ leaderstats encontrado!")
- printValues(leaderstats, " ")
- else
- print("✗ leaderstats não encontrado")
- end
- print("\n[2] Verificando PlayerGui...")
- local playerGui = LocalPlayer:FindFirstChild("PlayerGui")
- if playerGui then
- print("✓ PlayerGui encontrado!")
- 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
- print(" └─ Texto: " .. gui.Text)
- end
- end
- end
- end
- print("\n╔════════════════════════════════════════╗")
- print("║ Nível encontrado: " .. self:GetLevel())
- print("╚════════════════════════════════════════╝\n")
- return self.CurrentLevel
- end
- print("✅ Módulo de Nível do Dino carregado")
- --// ========== MÓDULO: SISTEMA DE CRISTAIS ========== //
- local CrystalModule = {
- PriorityMap = {
- legendary = 1,
- epic = 2,
- rare = 3,
- crystal = 4
- }
- }
- function CrystalModule:GetRank(name)
- name = name:lower()
- for key, rank in pairs(self.PriorityMap) do
- if name:find(key) then
- return rank
- end
- end
- return 5
- end
- function CrystalModule: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 = self:GetRank(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
- print("✅ Módulo de Cristais carregado")
- --// ========== MÓDULO: SISTEMA DE TELEPORTE ========== //
- local TeleportModule = {
- ActiveConnection = nil
- }
- function TeleportModule:SafeTeleport(targetCFrame, locationName, notificationWindow)
- if self.ActiveConnection then
- self.ActiveConnection:Disconnect()
- self.ActiveConnection = nil
- end
- local char = UtilityModule.getCharacter()
- local root = UtilityModule.getHumanoidRootPart()
- local humanoid = UtilityModule.getHumanoid()
- if not root or not humanoid then
- if notificationWindow then
- notificationWindow:Notify({
- Title = "Erro",
- Content = "Personagem não encontrado!",
- Duration = 1
- })
- end
- return false
- end
- if notificationWindow then
- notificationWindow:Notify({
- Title = "Teleportando",
- Content = "Indo para: " .. locationName,
- Duration = 0.5
- })
- end
- 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
- self.ActiveConnection = RunService.Heartbeat:Connect(function()
- if not char or not char.Parent or not root or not root.Parent or not humanoid then
- if self.ActiveConnection then
- self.ActiveConnection:Disconnect()
- self.ActiveConnection = 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 self.ActiveConnection then
- self.ActiveConnection:Disconnect()
- self.ActiveConnection = nil
- end
- if not isOnGround and not isLanded then
- 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
- end
- if notificationWindow then
- notificationWindow:Notify({
- Title = "Chegou",
- Content = locationName,
- Duration = 0.5
- })
- end
- return
- end
- end)
- return true
- end
- function TeleportModule:TeleportToCrystal(crystal)
- local root = UtilityModule.getHumanoidRootPart()
- if root and crystal then
- local char = UtilityModule.getCharacter()
- if char and char.PrimaryPart then
- char:SetPrimaryPartCFrame(CFrame.new(crystal.Position + Vector3.new(0, 4.5, 0)))
- end
- end
- end
- function TeleportModule:TeleportTo(cf)
- local root = UtilityModule.getHumanoidRootPart()
- if root and root.Parent then
- local char = UtilityModule.getCharacter()
- if char and char.PrimaryPart then
- char:SetPrimaryPartCFrame(cf)
- end
- end
- end
- print("✅ Módulo de Teleporte carregado")
- --// ========== MÓDULO: ESP DE CARNES ========== //
- local MeatESPModule = {
- ActiveESPs = {},
- UpdateLoop = nil,
- ScanLoop = nil,
- UpdateRate = 0.1,
- ScanInterval = 10,
- ESP_MIN_SIZE = 35,
- ESP_MAX_SIZE = 65,
- MAX_VISIBLE_DISTANCE = 999999
- }
- function MeatESPModule:IsMeatObject(obj)
- if not obj then return false, nil end
- -- Verificar ProximityPrompt
- 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
- -- Verificar se não está no personagem de algum jogador
- 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
- -- Verificar pelo nome
- 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
- -- Verificar se não está no personagem
- 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
- function MeatESPModule:FindNearest()
- local root = UtilityModule.getHumanoidRootPart()
- 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 = self: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
- function MeatESPModule:CreateESP(part)
- if not part or not part:IsA("BasePart") or not part.Parent then return end
- local id = tostring(part:GetDebugId())
- if self.ActiveESPs[id] then return end
- local esp = Instance.new("BillboardGui")
- esp.Name = "MeatESP_" .. id
- esp.Adornee = part
- esp.Size = UDim2.new(0, self.ESP_MAX_SIZE, 0, self.ESP_MAX_SIZE * 0.4)
- esp.StudsOffset = Vector3.new(0, 3, 0)
- esp.AlwaysOnTop = true
- esp.LightInfluence = 0
- esp.MaxDistance = self.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)
- local corner = Instance.new("UICorner", frame)
- corner.CornerRadius = UDim.new(0, 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
- self.ActiveESPs[id] = {
- gui = esp,
- part = part,
- distLabel = distLabel,
- frame = frame,
- iconLabel = iconLabel
- }
- return true
- end
- function MeatESPModule:Scan()
- if not Config.EspMeatActive then return end
- for id, data in pairs(self.ActiveESPs) do
- if data.gui then
- UtilityModule.SafePcall(function() data.gui:Destroy() end)
- end
- end
- self.ActiveESPs = {}
- 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 = self:IsMeatObject(obj)
- if isMeat and part and part.Parent then
- if self:CreateESP(part) then
- meatCount = meatCount + 1
- end
- end
- end
- print("🥩 ESP Carnes: " .. meatCount .. " encontradas")
- end
- function MeatESPModule:UpdateInfo()
- if not Config.EspMeatActive then return end
- local root = UtilityModule.getHumanoidRootPart()
- if not root then return end
- for id, data in pairs(self.ActiveESPs) 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
- -- Atualizar distância
- 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
- -- Atualizar tamanho baseado na distância
- 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
- elseif distance <= 2000 then scaleFactor = 0.4
- elseif distance <= 3000 then scaleFactor = 0.35
- elseif distance <= 5000 then scaleFactor = 0.3
- elseif distance <= 10000 then scaleFactor = 0.25
- else scaleFactor = 0.2 end
- local newSize = self.ESP_MIN_SIZE + ((self.ESP_MAX_SIZE - self.ESP_MIN_SIZE) * scaleFactor)
- data.gui.Size = UDim2.new(0, newSize, 0, newSize * 0.4)
- -- Atualizar transparência
- if data.frame then
- local transparency
- if distance < 300 then transparency = 0.3
- elseif distance < 1000 then transparency = 0.5
- elseif distance < 2500 then transparency = 0.65
- elseif distance < 5000 then transparency = 0.75
- elseif distance < 10000 then transparency = 0.8
- else transparency = 0.85 end
- data.frame.BackgroundTransparency = transparency
- end
- -- Atualizar cor baseada na distância
- 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)
- elseif distance < 1500 then
- data.frame.BackgroundColor3 = Color3.fromRGB(255, 180, 100)
- data.frame.BorderColor3 = Color3.fromRGB(255, 200, 150)
- elseif distance < 3000 then
- data.frame.BackgroundColor3 = Color3.fromRGB(255, 120, 120)
- data.frame.BorderColor3 = Color3.fromRGB(255, 150, 150)
- elseif distance < 5000 then
- data.frame.BackgroundColor3 = Color3.fromRGB(200, 150, 255)
- data.frame.BorderColor3 = Color3.fromRGB(220, 180, 255)
- elseif distance < 10000 then
- data.frame.BackgroundColor3 = Color3.fromRGB(180, 180, 255)
- data.frame.BorderColor3 = Color3.fromRGB(200, 200, 255)
- else
- data.frame.BackgroundColor3 = Color3.fromRGB(150, 150, 150)
- data.frame.BorderColor3 = Color3.fromRGB(180, 180, 180)
- end
- else
- if data.gui then
- UtilityModule.SafePcall(function() data.gui:Destroy() end)
- end
- self.ActiveESPs[id] = nil
- end
- end
- end
- function MeatESPModule:Start()
- if self.UpdateLoop then return end
- self:Scan()
- self.UpdateLoop = RunService.Heartbeat:Connect(function()
- self:UpdateInfo()
- end)
- self.ScanLoop = task.spawn(function()
- while Config.EspMeatActive do
- task.wait(self.ScanInterval)
- if Config.EspMeatActive then
- -- Adicionar novos ESPs
- for _, obj in ipairs(Workspace:GetDescendants()) do
- if not Config.EspMeatActive then break end
- local isMeat, part = self:IsMeatObject(obj)
- if isMeat and part then
- local id = tostring(part:GetDebugId())
- if not self.ActiveESPs[id] then
- self:CreateESP(part)
- end
- end
- end
- -- Remover ESPs inválidos
- for id, data in pairs(self.ActiveESPs) do
- if not data.part or not data.part.Parent then
- if data.gui then
- UtilityModule.SafePcall(function() data.gui:Destroy() end)
- end
- self.ActiveESPs[id] = nil
- end
- end
- end
- end
- end)
- -- Detectar novos objetos
- Workspace.DescendantAdded:Connect(function(obj)
- if not Config.EspMeatActive then return end
- task.wait(0.1)
- local isMeat, part = self:IsMeatObject(obj)
- if isMeat and part then
- local id = tostring(part:GetDebugId())
- if not self.ActiveESPs[id] then
- self:CreateESP(part)
- end
- end
- end)
- print("✅ ESP de Carnes iniciado")
- end
- function MeatESPModule:Stop()
- if self.UpdateLoop then
- self.UpdateLoop:Disconnect()
- self.UpdateLoop = nil
- end
- if self.ScanLoop then
- task.cancel(self.ScanLoop)
- self.ScanLoop = nil
- end
- for id, data in pairs(self.ActiveESPs) do
- if data.gui then
- UtilityModule.SafePcall(function() data.gui:Destroy() end)
- end
- end
- self.ActiveESPs = {}
- print("🛑 ESP de Carnes parado")
- end
- print("✅ Módulo ESP de Carnes carregado")
- --// ========== MÓDULO: ESP DE JOGADORES ========== //
- local PlayerESPModule = {
- Data = {},
- ProcessQueue = {},
- UpdateInterval = 0.5,
- MaxPlayersPerFrame = 2,
- HPBarMaxDistance = 4000,
- HPBarSize = UDim2.new(0, 50, 0, 5),
- HPBarYOffset = 0.5,
- HighlightFillTransparency = 0.85,
- OutlineTransparency = 0.15,
- TeamColorMap = {},
- UsedHues = {},
- NextHueIndex = 0,
- COLOR_ENEMY = Color3.fromRGB(255, 85, 85),
- COLOR_FRIEND = Color3.fromRGB(85, 255, 85),
- COLOR_NEUTRAL = Color3.fromRGB(240, 240, 240)
- }
- function PlayerESPModule:GenerateUniqueTeamColor()
- local goldenRatio = 0.618033988749895
- local hue = (self.NextHueIndex * goldenRatio) % 1
- -- Evitar tons de verde (aliados)
- if hue >= 0.25 and hue <= 0.45 then
- hue = (hue + 0.35) % 1
- end
- local minDistance = 0.15
- for _, usedHue in pairs(self.UsedHues) do
- local distance = math.abs(hue - usedHue)
- if distance < minDistance or distance > (1 - minDistance) then
- self.NextHueIndex = self.NextHueIndex + 1
- return self:GenerateUniqueTeamColor()
- end
- end
- table.insert(self.UsedHues, hue)
- self.NextHueIndex = self.NextHueIndex + 1
- local sat = 0.8 + (math.random() * 0.2)
- local val = 0.9 + (math.random() * 0.1)
- return Color3.fromHSV(hue, sat, val)
- end
- function PlayerESPModule:IsNeutralPlayer(p)
- return p.Team == nil
- end
- function PlayerESPModule:IsAllyPlayer(p)
- return LocalPlayer.Team and p.Team == LocalPlayer.Team
- end
- function PlayerESPModule:GetColorForPlayer(p)
- if self:IsNeutralPlayer(p) then
- return self.COLOR_NEUTRAL
- end
- if self:IsAllyPlayer(p) then
- return self.COLOR_FRIEND
- end
- if p.Team and not self.TeamColorMap[p.Team] then
- self.TeamColorMap[p.Team] = self:GenerateUniqueTeamColor()
- end
- return self.TeamColorMap[p.Team] or self.COLOR_ENEMY
- end
- function PlayerESPModule:ShouldShowESP(p)
- if not Config.PlayerESP then return false end
- if Config.PlayerESP_TeamCheck then return not self:IsAllyPlayer(p) end
- return true
- end
- function PlayerESPModule:ShouldShowHP(p)
- if not Config.PlayerESP_ShowHP then return false end
- if Config.PlayerESP_TeamCheck then return not self:IsAllyPlayer(p) end
- return true
- end
- function PlayerESPModule:ClearConnections(pack)
- if not pack or not pack.conns then return end
- UtilityModule.CleanupConnections(pack.conns)
- pack.conns = {}
- end
- function PlayerESPModule:Detach(plr)
- local pack = self.Data[plr]
- if not pack then return end
- self:ClearConnections(pack)
- if pack.highlight then
- UtilityModule.SafePcall(function() pack.highlight:Destroy() end)
- pack.highlight = nil
- end
- if pack.hpGui then
- UtilityModule.SafePcall(function() pack.hpGui:Destroy() end)
- pack.hpGui = nil
- end
- self.Data[plr] = nil
- end
- function PlayerESPModule:EnsureHighlight(plr, char)
- local pack = self.Data[plr]
- if not pack or not UtilityModule.isValidCharacter(char) then return end
- if not pack.highlight or not pack.highlight.Parent then
- -- Remover highlights antigos
- for _, obj in ipairs(char:GetChildren()) do
- if obj:IsA("Highlight") and obj.Name == "PlayerESP_Highlight" then
- UtilityModule.SafePcall(function() obj:Destroy() end)
- end
- end
- local hi = Instance.new("Highlight")
- hi.Name = "PlayerESP_Highlight"
- hi.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
- hi.FillTransparency = self.HighlightFillTransparency
- hi.OutlineTransparency = self.OutlineTransparency
- hi.Adornee = char
- hi.Parent = char
- pack.highlight = hi
- end
- local col = self:GetColorForPlayer(plr)
- pack.highlight.FillColor = col
- pack.highlight.OutlineColor = col
- pack.highlight.Adornee = char
- pack.highlight.Enabled = self:ShouldShowESP(plr)
- end
- function PlayerESPModule:EnsureHPGui(plr, char)
- local pack = self.Data[plr]
- if not pack or not UtilityModule.isValidCharacter(char) then return end
- local hum = char:FindFirstChildOfClass("Humanoid")
- local head = char:FindFirstChild("Head")
- local root = char:FindFirstChild("HumanoidRootPart")
- if not hum or not root then
- if pack.hpGui then
- pack.hpGui.Enabled = false
- end
- return
- end
- pack.hum = hum
- pack.head = head
- pack.root = root
- if not pack.hpGui or not pack.hpGui.Parent then
- -- Remover GUIs antigas
- for _, obj in ipairs(char:GetChildren()) do
- if obj:IsA("BillboardGui") and obj.Name == "PlayerESP_HP" then
- UtilityModule.SafePcall(function() obj:Destroy() end)
- end
- end
- local bill = Instance.new("BillboardGui")
- bill.Name = "PlayerESP_HP"
- bill.AlwaysOnTop = true
- bill.LightInfluence = 0
- bill.Size = self.HPBarSize
- bill.MaxDistance = self.HPBarMaxDistance
- bill.Parent = char
- local bg = Instance.new("Frame")
- bg.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
- bg.BackgroundTransparency = 0.2
- bg.BorderSizePixel = 0
- bg.Size = UDim2.fromScale(1, 1)
- bg.Parent = bill
- local stroke = Instance.new("UIStroke")
- stroke.Color = Color3.fromRGB(0, 0, 0)
- stroke.Thickness = 1.5
- stroke.Parent = bg
- local corner1 = Instance.new("UICorner")
- corner1.CornerRadius = UDim.new(0, 2)
- corner1.Parent = bg
- local fill = Instance.new("Frame")
- fill.BackgroundColor3 = self.COLOR_FRIEND
- fill.BorderSizePixel = 0
- fill.Size = UDim2.fromScale(1, 1)
- fill.Parent = bg
- local corner2 = Instance.new("UICorner")
- corner2.CornerRadius = UDim.new(0, 2)
- corner2.Parent = fill
- pack.hpGui = bill
- pack.hpFill = fill
- end
- if head then
- pack.hpGui.Adornee = head
- local headSize = head.Size.Y
- pack.hpGui.StudsOffset = Vector3.new(0, headSize/2 + self.HPBarYOffset, 0)
- else
- pack.hpGui.Adornee = root
- pack.hpGui.StudsOffset = Vector3.new(0, 2.5 + self.HPBarYOffset, 0)
- end
- pack.hpGui.Enabled = self:ShouldShowHP(plr)
- end
- function PlayerESPModule:UpdateHPBar(plr)
- local pack = self.Data[plr]
- if not pack or not pack.hpGui or not pack.hpFill or not pack.hum then return end
- local h = pack.hum.Health
- local m = pack.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, b
- if ratio > 0.5 then
- r = (1 - ratio) * 2 * 255
- g = 255
- b = 0
- else
- r = 255
- g = ratio * 2 * 255
- b = 0
- end
- pack.hpFill.BackgroundColor3 = Color3.fromRGB(r, g, b)
- pack.hpGui.Enabled = self:ShouldShowHP(plr) and (h > 0)
- end
- function PlayerESPModule:Setup(plr, char)
- if plr == LocalPlayer or not UtilityModule.isValidCharacter(char) then return end
- local pack = self.Data[plr] or {conns = {}}
- self.Data[plr] = pack
- if pack.char and pack.char ~= char then
- self:ClearConnections(pack)
- if pack.highlight then UtilityModule.SafePcall(function() pack.highlight:Destroy() end) end
- if pack.hpGui then UtilityModule.SafePcall(function() pack.hpGui:Destroy() end) end
- pack.char = nil
- pack.highlight = nil
- pack.hpGui = nil
- pack.hpFill = nil
- pack.hum = nil
- pack.head = nil
- end
- pack.char = char
- local hum = char:FindFirstChildOfClass("Humanoid")
- if not hum then return end
- pack.hum = hum
- hum.HealthDisplayType = Enum.HumanoidHealthDisplayType.AlwaysOff
- task.wait(0.1)
- self:EnsureHighlight(plr, char)
- self:EnsureHPGui(plr, char)
- self:UpdateHPBar(plr)
- table.insert(pack.conns, hum.HealthChanged:Connect(function()
- self:UpdateHPBar(plr)
- end))
- table.insert(pack.conns, plr:GetPropertyChangedSignal("Team"):Connect(function()
- task.spawn(function()
- self:EnsureHighlight(plr, char)
- self:UpdateHPBar(plr)
- end)
- end))
- pack.initialized = true
- end
- function PlayerESPModule:Hook(plr)
- if plr == LocalPlayer then return end
- table.insert(self.ProcessQueue, plr)
- end
- function PlayerESPModule:ReinitializeAll()
- for plr, _ in pairs(self.Data) do
- self:Detach(plr)
- end
- self.ProcessQueue = {}
- task.wait(0.1)
- for _, p in ipairs(Players:GetPlayers()) do
- if p ~= LocalPlayer then
- self:Hook(p)
- end
- end
- end
- function PlayerESPModule:StartProcessQueue()
- task.spawn(function()
- while true do
- task.wait(0.2)
- if #self.ProcessQueue > 0 and Config.PlayerESP then
- local plr = table.remove(self.ProcessQueue, 1)
- if plr and plr.Parent then
- self:Detach(plr)
- self.Data[plr] = {conns = {}}
- if plr.Character then
- task.spawn(function()
- self:Setup(plr, plr.Character)
- end)
- end
- table.insert(self.Data[plr].conns, plr.CharacterAdded:Connect(function(char)
- task.wait(0.5)
- self:Setup(plr, char)
- end))
- table.insert(self.Data[plr].conns, plr.CharacterRemoving:Connect(function()
- local pack = self.Data[plr]
- if pack then
- if pack.hpGui then
- UtilityModule.SafePcall(function() pack.hpGui:Destroy() end)
- pack.hpGui = nil
- end
- if pack.highlight then
- UtilityModule.SafePcall(function() pack.highlight:Destroy() end)
- pack.highlight = nil
- end
- pack.hum = nil
- pack.head = nil
- pack.initialized = false
- end
- end))
- end
- end
- end
- end)
- end
- function PlayerESPModule:StartUpdateLoop()
- task.spawn(function()
- while true do
- task.wait(self.UpdateInterval)
- if not Config.PlayerESP then
- task.wait(1)
- continue
- end
- local processed = 0
- for plr, pack in pairs(self.Data) do
- if processed >= self.MaxPlayersPerFrame then
- task.wait()
- processed = 0
- end
- if plr and plr.Parent and plr ~= LocalPlayer then
- local char = plr.Character
- if char and UtilityModule.isValidCharacter(char) then
- if not pack.initialized or pack.char ~= char then
- self:Setup(plr, char)
- else
- if not pack.highlight or not pack.highlight.Parent then
- self:EnsureHighlight(plr, char)
- end
- if not pack.hpGui or not pack.hpGui.Parent then
- self:EnsureHPGui(plr, char)
- end
- if pack.highlight then
- pack.highlight.Enabled = self:ShouldShowESP(plr)
- end
- if pack.hpGui then
- pack.hpGui.Enabled = self:ShouldShowHP(plr) and pack.hum and pack.hum.Health > 0
- end
- self:UpdateHPBar(plr)
- end
- end
- end
- processed = processed + 1
- end
- end
- end)
- end
- function PlayerESPModule:Init()
- -- Conectar eventos de jogadores
- task.spawn(function()
- task.wait(2)
- Players.PlayerAdded:Connect(function(p)
- task.wait(0.5)
- self:Hook(p)
- end)
- Players.PlayerRemoving:Connect(function(p)
- self:Detach(p)
- end)
- end)
- self:StartProcessQueue()
- self:StartUpdateLoop()
- print("✅ Módulo ESP de Jogadores inicializado")
- end
- print("✅ Módulo ESP de Jogadores carregado")
- --// ========== MÓDULO: CLICK TELEPORT ========== //
- local ClickTeleportModule = {
- Enabled = false,
- UIVisible = false,
- ScreenGui = nil,
- MainFrame = nil,
- MinimizedBtn = nil,
- Connections = {},
- ClickState = {
- StartTime = 0,
- StartPosition = nil,
- IsValid = false
- },
- Config = {
- MaxClickTime = 0.3,
- MaxDragDistance = 10,
- RaycastDistance = 10000,
- TeleportOffset = 3
- },
- Theme = {
- 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)
- }
- }
- function ClickTeleportModule: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 * self.Config.RaycastDistance,
- raycastParams
- )
- return raycastResult
- end
- function ClickTeleportModule:TeleportToPosition(position)
- local root = UtilityModule.getHumanoidRootPart()
- if not root then return false end
- local currentPosition = root.Position
- local teleportPos = position + Vector3.new(0, self.Config.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
- function ClickTeleportModule:IsValidClick(startPos, endPos, duration)
- if duration > self.Config.MaxClickTime then return false end
- local dragDistance = (endPos - startPos).Magnitude
- if dragDistance > self.Config.MaxDragDistance then return false end
- return true
- end
- function ClickTeleportModule:UpdateStatusLabel(text, color)
- if self.MainFrame then
- local statusLabel = self.MainFrame:FindFirstChild("Container"):FindFirstChild("StatusLabel")
- if statusLabel then
- statusLabel.Text = text
- statusLabel.TextColor3 = color
- end
- end
- end
- function ClickTeleportModule:EnableClickDetection()
- UtilityModule.CleanupConnections(self.Connections)
- self.Connections = {}
- table.insert(self.Connections, UserInputService.InputBegan:Connect(function(input, gameProcessed)
- if gameProcessed then return end
- if not self.Enabled then return end
- if input.UserInputType == Enum.UserInputType.MouseButton1 or
- input.UserInputType == Enum.UserInputType.Touch then
- self.ClickState.StartTime = tick()
- self.ClickState.StartPosition = Vector2.new(Mouse.X, Mouse.Y)
- self.ClickState.IsValid = true
- end
- end))
- table.insert(self.Connections, UserInputService.InputEnded:Connect(function(input, gameProcessed)
- if gameProcessed then return end
- if not self.Enabled then return end
- if not self.ClickState.IsValid then return end
- if input.UserInputType == Enum.UserInputType.MouseButton1 or
- input.UserInputType == Enum.UserInputType.Touch then
- local clickDuration = tick() - self.ClickState.StartTime
- local endPosition = Vector2.new(Mouse.X, Mouse.Y)
- if self:IsValidClick(self.ClickState.StartPosition, endPosition, clickDuration) then
- local raycastResult = self:GetMouseHit()
- if raycastResult then
- if self:TeleportToPosition(raycastResult.Position) then
- self:UpdateStatusLabel("✅ Teleportado!", self.Theme.Success)
- task.wait(1)
- self:UpdateStatusLabel("Clique em qualquer lugar para teleportar", self.Theme.TextDim)
- end
- else
- self:UpdateStatusLabel("❌ Não é possível teleportar para o céu", self.Theme.Danger)
- task.wait(1.5)
- self:UpdateStatusLabel("Clique em qualquer lugar para teleportar", self.Theme.TextDim)
- end
- end
- self.ClickState.IsValid = false
- end
- end))
- end
- function ClickTeleportModule:DisableClickDetection()
- UtilityModule.CleanupConnections(self.Connections)
- self.Connections = {}
- end
- function ClickTeleportModule:MinimizeUI()
- if self.MainFrame then
- self.MainFrame.Visible = false
- end
- if self.MinimizedBtn then
- self.MinimizedBtn.Visible = true
- self.MinimizedBtn.Size = UDim2.new(0, 0, 0, 0)
- TweenService:Create(self.MinimizedBtn, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
- Size = UDim2.new(0, 50, 0, 50)
- }):Play()
- end
- end
- function ClickTeleportModule:MaximizeUI()
- if self.MinimizedBtn then
- TweenService:Create(self.MinimizedBtn, TweenInfo.new(0.2, Enum.EasingStyle.Back, Enum.EasingDirection.In), {
- Size = UDim2.new(0, 0, 0, 0)
- }):Play()
- task.wait(0.2)
- self.MinimizedBtn.Visible = false
- end
- if self.MainFrame then
- self.MainFrame.Visible = true
- self.MainFrame.Size = UDim2.new(0, 0, 0, 0)
- TweenService:Create(self.MainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
- Size = UDim2.new(0, 260, 0, 180)
- }):Play()
- end
- end
- function ClickTeleportModule:CreateUI()
- if self.ScreenGui then
- UtilityModule.SafePcall(function() self.ScreenGui:Destroy() end)
- self.ScreenGui = nil
- end
- self.ScreenGui = Instance.new("ScreenGui")
- self.ScreenGui.Name = "ClickTeleportUI_PreHistoria"
- self.ScreenGui.ResetOnSpawn = false
- self.ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
- self.ScreenGui.Parent = CoreGui
- self.MainFrame = Instance.new("Frame")
- self.MainFrame.Name = "MainFrame"
- self.MainFrame.Size = UDim2.new(0, 260, 0, 180)
- self.MainFrame.Position = UDim2.new(0.5, -130, 0.5, -90)
- self.MainFrame.BackgroundColor3 = self.Theme.Background
- self.MainFrame.BackgroundTransparency = 0.05
- self.MainFrame.BorderSizePixel = 0
- self.MainFrame.Active = true
- self.MainFrame.Draggable = true
- self.MainFrame.Parent = self.ScreenGui
- local mainCorner = Instance.new("UICorner")
- mainCorner.CornerRadius = UDim.new(0, 12)
- mainCorner.Parent = self.MainFrame
- local mainStroke = Instance.new("UIStroke")
- mainStroke.Color = self.Theme.Accent
- mainStroke.Thickness = 2
- mainStroke.Transparency = 0.3
- mainStroke.Parent = self.MainFrame
- 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 = self.MainFrame
- local header = Instance.new("Frame")
- header.Size = UDim2.new(1, 0, 0, 50)
- header.BackgroundColor3 = self.Theme.Secondary
- header.BackgroundTransparency = 0.2
- header.BorderSizePixel = 0
- header.Parent = self.MainFrame
- local headerCorner = Instance.new("UICorner")
- headerCorner.CornerRadius = UDim.new(0, 12)
- headerCorner.Parent = header
- local headerFix = Instance.new("Frame")
- headerFix.Size = UDim2.new(1, 0, 0, 12)
- headerFix.Position = UDim2.new(0, 0, 1, -12)
- headerFix.BackgroundColor3 = self.Theme.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 = self.Theme.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 = self.Theme.Text
- minimizeBtn.TextSize = 18
- minimizeBtn.Font = Enum.Font.GothamBold
- minimizeBtn.AutoButtonColor = false
- minimizeBtn.Parent = header
- local minimizeCorner = Instance.new("UICorner")
- minimizeCorner.CornerRadius = UDim.new(0, 8)
- minimizeCorner.Parent = minimizeBtn
- 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 = self.Theme.Danger
- closeBtn.BackgroundTransparency = 0.2
- closeBtn.Text = "✕"
- closeBtn.TextColor3 = self.Theme.Text
- closeBtn.TextSize = 20
- closeBtn.Font = Enum.Font.GothamBold
- closeBtn.AutoButtonColor = false
- closeBtn.Parent = header
- local closeCorner = Instance.new("UICorner")
- closeCorner.CornerRadius = UDim.new(0, 8)
- closeCorner.Parent = closeBtn
- 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 = self.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 = self.Theme.Danger
- toggleBtn.BackgroundTransparency = 0.1
- toggleBtn.Text = "🔴 DESATIVADO"
- toggleBtn.TextColor3 = self.Theme.Text
- toggleBtn.TextSize = 16
- toggleBtn.Font = Enum.Font.GothamBold
- toggleBtn.AutoButtonColor = false
- toggleBtn.Parent = container
- local toggleCorner = Instance.new("UICorner")
- toggleCorner.CornerRadius = UDim.new(0, 10)
- toggleCorner.Parent = toggleBtn
- local toggleStroke = Instance.new("UIStroke")
- toggleStroke.Name = "Stroke"
- toggleStroke.Color = self.Theme.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 = self.Theme.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 = self.Theme.Success
- infoLabel.TextSize = 11
- infoLabel.Font = Enum.Font.Gotham
- infoLabel.Parent = container
- self.MinimizedBtn = Instance.new("TextButton")
- self.MinimizedBtn.Name = "MinimizedBtn"
- self.MinimizedBtn.Size = UDim2.new(0, 50, 0, 50)
- self.MinimizedBtn.Position = UDim2.new(1, -60, 0, 10)
- self.MinimizedBtn.BackgroundColor3 = self.Theme.Accent
- self.MinimizedBtn.BackgroundTransparency = 0.1
- self.MinimizedBtn.Text = "🎯"
- self.MinimizedBtn.TextColor3 = self.Theme.Text
- self.MinimizedBtn.TextSize = 24
- self.MinimizedBtn.Font = Enum.Font.GothamBold
- self.MinimizedBtn.AutoButtonColor = false
- self.MinimizedBtn.Visible = false
- self.MinimizedBtn.Active = true
- self.MinimizedBtn.Draggable = true
- self.MinimizedBtn.Parent = self.ScreenGui
- local minimizedCorner = Instance.new("UICorner")
- minimizedCorner.CornerRadius = UDim.new(0, 12)
- minimizedCorner.Parent = self.MinimizedBtn
- local minimizedStroke = Instance.new("UIStroke")
- minimizedStroke.Color = self.Theme.Accent
- minimizedStroke.Thickness = 2
- minimizedStroke.Parent = self.MinimizedBtn
- local minimizedGradient = Instance.new("UIGradient")
- minimizedGradient.Color = ColorSequence.new{
- ColorSequenceKeypoint.new(0, Color3.fromRGB(100, 180, 255)),
- ColorSequenceKeypoint.new(1, Color3.fromRGB(70, 140, 255))
- }
- minimizedGradient.Rotation = 90
- minimizedGradient.Parent = self.MinimizedBtn
- -- Eventos
- toggleBtn.MouseButton1Click:Connect(function()
- self.Enabled = not self.Enabled
- if self.Enabled then
- toggleBtn.Text = "🟢 ATIVADO"
- toggleBtn.BackgroundColor3 = self.Theme.Success
- toggleStroke.Color = self.Theme.Success
- statusLabel.Text = "Clique em qualquer lugar para teleportar"
- self:EnableClickDetection()
- else
- toggleBtn.Text = "🔴 DESATIVADO"
- toggleBtn.BackgroundColor3 = self.Theme.Danger
- toggleStroke.Color = self.Theme.Danger
- statusLabel.Text = "Teleporte desativado"
- self:DisableClickDetection()
- end
- end)
- minimizeBtn.MouseButton1Click:Connect(function()
- self:MinimizeUI()
- end)
- self.MinimizedBtn.MouseButton1Click:Connect(function()
- self:MaximizeUI()
- end)
- closeBtn.MouseButton1Click:Connect(function()
- self:Toggle(false, nil)
- end)
- -- Hover effects
- local function addHoverEffect(button, normalTrans)
- button.MouseEnter:Connect(function()
- TweenService:Create(button, TweenInfo.new(0.2), {
- BackgroundTransparency = 0
- }):Play()
- end)
- button.MouseLeave:Connect(function()
- TweenService:Create(button, TweenInfo.new(0.2), {
- BackgroundTransparency = normalTrans or 0.1
- }):Play()
- end)
- end
- addHoverEffect(toggleBtn, 0.1)
- addHoverEffect(minimizeBtn, 0.2)
- addHoverEffect(closeBtn, 0.2)
- addHoverEffect(self.MinimizedBtn, 0.1)
- self.UIVisible = true
- end
- function ClickTeleportModule:Toggle(state, notificationWindow)
- Config.ClickTeleportEnabled = state
- if state then
- if not self.UIVisible then
- self:CreateUI()
- if notificationWindow then
- notificationWindow:Notify({
- Title = "Click Teleport",
- Content = "Interface aberta!",
- Duration = 1
- })
- end
- end
- else
- self.Enabled = false
- self:DisableClickDetection()
- if self.ScreenGui then
- UtilityModule.SafePcall(function() self.ScreenGui:Destroy() end)
- self.ScreenGui = nil
- self.MainFrame = nil
- self.MinimizedBtn = nil
- end
- self.UIVisible = false
- if notificationWindow then
- notificationWindow:Notify({
- Title = "Click Teleport",
- Content = "Desativado",
- Duration = 1
- })
- end
- end
- end
- function ClickTeleportModule:Cleanup()
- self.Enabled = false
- self:DisableClickDetection()
- if self.ScreenGui then
- UtilityModule.SafePcall(function() self.ScreenGui:Destroy() end)
- self.ScreenGui = nil
- self.MainFrame = nil
- self.MinimizedBtn = nil
- end
- self.UIVisible = false
- print("🧹 Click Teleport limpo")
- end
- print("✅ Módulo Click Teleport carregado")
- --// ========== MÓDULO: AUTO COLETA ========== //
- local AutoColetaModule = {}
- function AutoColetaModule:Start()
- 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 = UtilityModule.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
- UtilityModule.SafePcall(function()
- fireproximityprompt(obj)
- end)
- end
- end
- end
- end
- task.delay(Config.delayEntreTentativas, function()
- Config.podeExecutar = true
- end)
- end)
- print("✅ Módulo Auto Coleta inicializado")
- end
- print("✅ Módulo Auto Coleta carregado")
- --// ========== MÓDULO: AUTO FARM ========== //
- local AutoFarmModule = {
- Running = false,
- CurrentIndex = 1
- }
- function AutoFarmModule:Start()
- if self.Running then return end
- self.Running = true
- task.spawn(function()
- while true do
- task.wait(Config.CheckDelay)
- if Config.AutoFarm then
- local currentLevel = DinoLevelModule:GetLevel()
- if currentLevel >= Config.MaxDinoLevel then
- Config.AutoFarm = false
- self.Running = false
- if AutoFarmToggle then
- AutoFarmToggle:Set(false)
- end
- if AutoFarmStatusLabel then
- AutoFarmStatusLabel:Set("💎 Auto Farm - Desligado")
- end
- if Window then
- Window:Notify({
- Title = "Completo",
- Content = "Nível " .. Config.MaxDinoLevel .. " atingido!",
- Duration = 2
- })
- end
- break
- else
- local crystals = CrystalModule: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
- TeleportModule:TeleportToCrystal(c)
- local fixarConexao = RunService.Heartbeat:Connect(function()
- if Config.AutoFarm and c and c:IsDescendantOf(Workspace) then
- local char = UtilityModule.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 = elapsed + Config.CheckDelay
- end
- fixarConexao:Disconnect()
- task.wait(Config.DelayBetweenCrystals)
- end
- else
- -- Patrulha
- self.CurrentIndex = (self.CurrentIndex % #Config.PatrulhaPontos) + 1
- TeleportModule:TeleportTo(Config.PatrulhaPontos[self.CurrentIndex])
- task.wait(2)
- end
- end
- else
- self.Running = false
- break
- end
- end
- end)
- print("✅ Auto Farm iniciado")
- end
- function AutoFarmModule:Stop()
- Config.AutoFarm = false
- self.Running = false
- print("🛑 Auto Farm parado")
- end
- print("✅ Módulo Auto Farm carregado")
- --// ========== MÓDULO: TELEPORTS SALVOS ========== //
- local SavedTeleportsModule = {}
- function SavedTeleportsModule:Load()
- local success, data = UtilityModule.SafePcall(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
- print("✅ Módulo Teleports Salvos carregado")
- --// ========== DETECTAR SPAWN ========== //
- task.spawn(function()
- local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
- local root = char:WaitForChild("HumanoidRootPart", 10)
- if root then
- task.wait(2)
- Config.LastSpawnPosition = root.CFrame
- print("📍 Spawn detectado: " .. tostring(Config.LastSpawnPosition))
- end
- LocalPlayer.CharacterAdded:Connect(function(newChar)
- task.wait(2)
- local newRoot = newChar:FindFirstChild("HumanoidRootPart")
- if newRoot then
- Config.LastSpawnPosition = newRoot.CFrame
- print("📍 Spawn atualizado")
- end
- end)
- end)
- --// ========== INICIALIZAR MÓDULOS ========== //
- PerformanceManager:Init()
- PlayerESPModule:Init()
- AutoColetaModule:Start()
- SavedTeleportsModule:Load()
- --// ========== CARREGAR WINDUI ========== //
- local WindUI = loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))()
- --// ========== CRIAR WINDOW ========== //
- local Window = WindUI:CreateWindow({
- Title = "🦖 Pré-história - NickZScripts",
- Icon = "home",
- Author = "By NickZScripts",
- Folder = "PreHistoriaHub",
- Size = UDim2.fromOffset(580, 460),
- Transparent = true,
- Theme = "Dark",
- Resizable = true,
- SideBarWidth = 200,
- Acrylic = true,
- DisableInfo = false
- })
- --// ========== TAB: MENU ========== //
- local MenuTab = Window:Tab({
- Title = "Menu",
- Icon = "home"
- })
- local MenuSection = MenuTab:Section({
- Title = "Informações do Servidor"
- })
- local PlayersCountLabel = MenuTab:Label({
- Text = "👥 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(function()
- task.wait(0.1)
- updatePlayerCount()
- end)
- Players.PlayerRemoving:Connect(function()
- task.wait(0.1)
- updatePlayerCount()
- end)
- task.spawn(function()
- while true do
- task.wait(2)
- updatePlayerCount()
- end
- end)
- MenuTab:Label({
- Text = "📜 Script Info"
- })
- MenuTab:Label({
- Text = "Versão: " .. ScriptVersion
- })
- MenuTab:Label({
- Text = "Status: ✅ Operacional"
- })
- MenuTab:Label({
- Text = "👤 Jogador: " .. LocalPlayer.Name
- })
- MenuTab:Label({
- Text = "Display: " .. LocalPlayer.DisplayName
- })
- MenuTab:Label({
- Text = "ID: " .. LocalPlayer.UserId
- })
- local FPSLabel = MenuTab:Label({
- Text = "⚡ FPS: 0"
- })
- task.spawn(function()
- while true do
- task.wait(0.5)
- local levelNames = {"Normal", "Médio", "Agressivo"}
- FPSLabel:Set(string.format("⚡ FPS: %d | Otimização: %s", PerformanceManager.FPS, levelNames[PerformanceManager.OptimizationLevel]))
- end
- end)
- local SystemsSection = MenuTab:Section({
- Title = "Sistemas Ativos"
- })
- AutoFarmStatusLabel = MenuTab:Label({
- Text = "💎 Auto Farm - Desligado"
- })
- local EspCarnesStatusLabel = MenuTab:Label({
- Text = "🥩 ESP Carnes - Desligado"
- })
- local EspJogadoresStatusLabel = MenuTab:Label({
- Text = "👥 ESP Jogadores - Desligado"
- })
- AutoColetaStatusLabel = MenuTab:Label({
- Text = "🔄 Auto Colet - Desligado"
- })
- local ClickTeleportStatusLabel = MenuTab:Label({
- Text = "🎯 Click Teleport - Desligado"
- })
- local CreditsSection = MenuTab:Section({
- Title = "Créditos"
- })
- MenuTab:Label({
- Text = "👨💻 Desenvolvedor: NickZScripts"
- })
- MenuTab:Label({
- Text = "Interface: WindUI Library"
- })
- MenuTab:Label({
- Text = "Versão: " .. ScriptVersion
- })
- --// ========== TAB: AUTO FARM ========== //
- local AutoFarmTab = Window:Tab({
- Title = "Auto Farm",
- Icon = "zap"
- })
- local FarmSection = AutoFarmTab:Section({
- Title = "Farm de Cristais"
- })
- DinoLevelModule.Label = AutoFarmTab:Label({
- Text = "🦖 Nível do Dino: 0/60"
- })
- DinoLevelModule:StartAutoUpdate()
- AutoFarmToggle = AutoFarmTab:Toggle({
- Title = "Auto Farm Cristais",
- Desc = "Farma cristais automaticamente",
- Icon = "gem",
- Type = "Checkbox",
- Default = false,
- Callback = function(Value)
- Config.AutoFarm = Value
- if Value then
- AutoFarmStatusLabel:Set("💎 Auto Farm - Ligado")
- AutoFarmModule:Start()
- else
- AutoFarmStatusLabel:Set("💎 Auto Farm - Desligado")
- AutoFarmModule:Stop()
- end
- Window:Notify({
- Title = Value and "✅ Ativado" or "❌ Desativado",
- Content = "Auto Farm " .. (Value and "ligado" or "desligado"),
- Duration = 1
- })
- end,
- })
- local ColetaSection = AutoFarmTab:Section({
- Title = "Auto Colet"
- })
- local AutoColetaToggle = AutoFarmTab:Toggle({
- Title = "Auto Colet",
- Desc = "Coleta itens próximos automaticamente",
- Icon = "refresh-cw",
- Type = "Checkbox",
- Default = false,
- Callback = function(Value)
- Config.AutoColeta = Value
- if Value then
- AutoColetaStatusLabel:Set("🔄 Auto Colet - Ligado")
- else
- AutoColetaStatusLabel:Set("🔄 Auto Colet - Desligado")
- end
- Window:Notify({
- Title = Value and "✅ Ativado" or "❌ Desativado",
- Content = "Auto Colet " .. (Value and "ligado" or "desligado"),
- Duration = 1
- })
- end,
- })
- --// ========== TAB: ESP ========== //
- local EspTab = Window:Tab({
- Title = "ESP",
- Icon = "eye"
- })
- local EspJogadoresSection = EspTab:Section({
- Title = "ESP de Jogadores"
- })
- local EspJogadoresToggle = EspTab:Toggle({
- Title = "ESP de Jogadores",
- Desc = "Mostra jogadores através de paredes",
- Icon = "users",
- Type = "Checkbox",
- Default = false,
- Callback = function(Value)
- Config.PlayerESP = Value
- if Value then
- EspJogadoresStatusLabel:Set("👥 ESP Jogadores - Ligado")
- PlayerESPModule:ReinitializeAll()
- else
- EspJogadoresStatusLabel:Set("👥 ESP Jogadores - Desligado")
- for plr, pack in pairs(PlayerESPModule.Data) do
- if pack.highlight then pack.highlight.Enabled = false end
- if pack.hpGui then pack.hpGui.Enabled = false end
- end
- end
- Window:Notify({
- Title = Value and "✅ Ativado" or "❌ Desativado",
- Content = "ESP Jogadores " .. (Value and "ligado" or "desligado"),
- Duration = 1
- })
- end,
- })
- local EspHPToggle = EspTab:Toggle({
- Title = "Barra de Vida",
- Desc = "Mostra HP dos jogadores",
- Icon = "heart",
- Type = "Checkbox",
- Default = false,
- Callback = function(Value)
- Config.PlayerESP_ShowHP = Value
- for plr, pack in pairs(PlayerESPModule.Data) do
- if pack.hpGui then
- pack.hpGui.Enabled = PlayerESPModule:ShouldShowHP(plr) and pack.hum and pack.hum.Health > 0
- end
- end
- Window:Notify({
- Title = Value and "✅ Ativado" or "❌ Desativado",
- Content = "Barra de Vida " .. (Value and "ligada" or "desligada"),
- Duration = 1
- })
- end,
- })
- local EspTeamCheckToggle = EspTab:Toggle({
- Title = "TeamCheck (Só Inimigos)",
- Desc = "Mostra apenas jogadores inimigos",
- Icon = "shield",
- Type = "Checkbox",
- Default = false,
- Callback = function(Value)
- Config.PlayerESP_TeamCheck = Value
- for plr, pack in pairs(PlayerESPModule.Data) do
- if pack.highlight then
- pack.highlight.Enabled = PlayerESPModule:ShouldShowESP(plr)
- end
- if pack.hpGui then
- pack.hpGui.Enabled = PlayerESPModule:ShouldShowHP(plr) and pack.hum and pack.hum.Health > 0
- end
- end
- Window:Notify({
- Title = Value and "✅ Ativado" or "❌ Desativado",
- Content = "TeamCheck " .. (Value and "ligado" or "desligado"),
- Duration = 1
- })
- end,
- })
- local EspCarnesSection = EspTab:Section({
- Title = "ESP de Carnes"
- })
- local EspToggle = EspTab:Toggle({
- Title = "ESP de Carnes",
- Desc = "Mostra carnes no mapa",
- Icon = "crosshair",
- Type = "Checkbox",
- Default = false,
- Callback = function(Value)
- Config.EspMeatActive = Value
- if Value then
- EspCarnesStatusLabel:Set("🥩 ESP Carnes - Ligado")
- MeatESPModule:Start()
- else
- EspCarnesStatusLabel:Set("🥩 ESP Carnes - Desligado")
- MeatESPModule:Stop()
- end
- Window:Notify({
- Title = Value and "✅ Ativado" or "❌ Desativado",
- Content = "ESP Carnes " .. (Value and "ligado" or "desligado"),
- Duration = 1
- })
- end,
- })
- --// ========== TAB: TELEPORT ========== //
- local TeleportTab = Window:Tab({
- Title = "Teleport",
- Icon = "navigation"
- })
- local TeleportSection = TeleportTab:Section({
- Title = "Teleportes Rápidos"
- })
- local TeleportMeatButton = TeleportTab:Button({
- Title = "Teleportar para Carne",
- Desc = "Teleporta para a carne mais próxima",
- Icon = "crosshair",
- Callback = function()
- local meat, distance = MeatESPModule:FindNearest()
- if not meat then
- Window:Notify({
- Title = "Erro",
- Content = "Nenhuma carne encontrada!",
- Duration = 1
- })
- return
- end
- TeleportModule:SafeTeleport(CFrame.new(meat.Position + Vector3.new(0, 3, 0)), "Carne", Window)
- end,
- })
- local SpawnSection = TeleportTab:Section({
- Title = "Teleporte para Spawn"
- })
- local TeleportSpawnButton = TeleportTab:Button({
- Title = "Voltar ao Spawn",
- Desc = "Teleporta de volta ao spawn",
- Icon = "home",
- Callback = function()
- if not Config.LastSpawnPosition then
- Window:Notify({
- Title = "Erro",
- Content = "Spawn não detectado!",
- Duration = 1
- })
- return
- end
- TeleportModule:SafeTeleport(Config.LastSpawnPosition, "Spawn", Window)
- end,
- })
- local SavedTeleportsSection = TeleportTab:Section({
- Title = "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:Button({
- Title = "📍 " .. locationName,
- Desc = "Teleportar para " .. locationName,
- Icon = "map-pin",
- Callback = function()
- local pos = data.position
- if not pos or not pos.X or not pos.Y or not pos.Z then
- Window:Notify({
- Title = "Erro",
- Content = "Posição inválida!",
- Duration = 1
- })
- return
- end
- local targetCF = CFrame.new(pos.X, pos.Y, pos.Z)
- TeleportModule:SafeTeleport(targetCF, locationName, Window)
- end,
- })
- end
- end
- else
- TeleportTab:Label({
- Text = "ℹ️ Nenhum Local Salvo"
- })
- TeleportTab:Label({
- Text = "Você ainda não possui locais salvos"
- })
- end
- --// ========== TAB: OUTROS ========== //
- local OutrosTab = Window:Tab({
- Title = "Outros",
- Icon = "settings"
- })
- local DebugSection = OutrosTab:Section({
- Title = "Ferramentas de Debug"
- })
- OutrosTab:Button({
- Title = "Debug: Buscar Nível",
- Desc = "Veja o console (F9) para detalhes",
- Icon = "search",
- Callback = function()
- local level = DinoLevelModule:DebugSearch()
- Window:Notify({
- Title = "Debug",
- Content = "Nível encontrado: " .. level .. "\nVeja o console (F9)",
- Duration = 3
- })
- end,
- })
- local ClickTeleportSection = OutrosTab:Section({
- Title = "Click Teleport"
- })
- OutrosTab:Label({
- Text = "ℹ️ Sobre Click Teleport"
- })
- OutrosTab:Label({
- Text = "Teleporte instantâneo clicando"
- })
- OutrosTab:Label({
- Text = "✅ Personagem olha para onde clicou"
- })
- OutrosTab:Label({
- Text = "✅ Sem efeitos visuais"
- })
- OutrosTab:Button({
- Title = "Abrir Click Teleport",
- Desc = "Abre a interface de Click Teleport",
- Icon = "mouse-pointer",
- Callback = function()
- if not Config.ClickTeleportEnabled then
- ClickTeleportModule:Toggle(true, Window)
- ClickTeleportStatusLabel:Set("🎯 Click Teleport - Ligado")
- else
- Window:Notify({
- Title = "Já Ativo",
- Content = "Click Teleport já está aberto!",
- Duration = 2
- })
- end
- end,
- })
- local InfoSection = OutrosTab:Section({
- Title = "Informações"
- })
- OutrosTab:Label({
- Text = "⚙️ Sobre"
- })
- OutrosTab:Label({
- Text = "Todas as informações importantes"
- })
- OutrosTab:Label({
- Text = "estão na aba Menu"
- })
- --// ========== CLEANUP AO SAIR ========== //
- LocalPlayer.CharacterRemoving:Connect(function()
- ClickTeleportModule:Cleanup()
- MeatESPModule:Stop()
- end)
- --// ========== LOGS FINAIS ========== //
- print("╔═══════════════════════════════════════════════════════════╗")
- print("║ Pré-história - By: NickZScripts ║")
- print("╠═══════════════════════════════════════════════════════════╣")
- print("║ ✅ GUI WindUI carregada! ║")
- print("║ 📌 Versão: " .. ScriptVersion .. " ║")
- print("║ 🎮 Jogador: " .. LocalPlayer.Name)
- print("║ 📊 Players: " .. #Players:GetPlayers() .. "/" .. Players.MaxPlayers)
- print("║ 📍 Teleports Salvos: " .. #Config.SavedTeleports)
- print("║ ⚡ FPS Atual: " .. PerformanceManager.FPS)
- print("╠═══════════════════════════════════════════════════════════╣")
- print("║ 🔧 SISTEMA DE AUTO-OTIMIZAÇÃO ATIVO ║")
- print("║ 📈 Ajuste dinâmico de performance ║")
- print("║ 🛡️ Proteção contra crashes e travamentos ║")
- print("║ ♻️ Limpeza automática de memória ║")
- print("╠═══════════════════════════════════════════════════════════╣")
- print("║ 📋 FUNCIONALIDADES ATIVAS: ║")
- print("║ ⚡ Auto Farm de Cristais (Priorizado) ║")
- print("║ 🔄 Auto Colet Independente ║")
- print("║ 👥 ESP de Jogadores (Cores Únicas) ║")
- print("║ 🥩 ESP de Carnes (Dinâmico) ║")
- print("║ 🚀 Sistema de Teleporte Seguro ║")
- print("║ 📍 Teleportes Salvos Carregados ║")
- print("║ 🎯 Click Teleport (Orientação) ║")
- print("║ 🔍 Sistema de Debug Completo ║")
- print("╠═══════════════════════════════════════════════════════════╣")
- print("║ 🆕 NOVIDADES v5.0.0: ║")
- print("║ ✨ Sistema de Auto-Otimização ║")
- print("║ 🏗️ Arquitetura Modular ║")
- print("║ ⚡ Performance Otimizada ║")
- print("║ 🛡️ Sistema Anti-Crash ║")
- print("║ ♻️ Gestão Inteligente de Memória ║")
- print("╚═══════════════════════════════════════════════════════════╝")
- Window:Notify({
- Title = "🦖 Pré-história",
- Content = "Script carregado com sucesso!\nVersão: " .. ScriptVersion,
- Duration = 3
- })
Advertisement
Add Comment
Please, Sign In to add comment