Nevzyn

Untitled

Oct 19th, 2025 (edited)
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 74.22 KB | None | 0 0
  1. --[[
  2.   ╔═══════════════════════════════════════════════════════════╗
  3.   ║             Pré-história - By: NickZScripts              ║
  4.   ║           Sistema Modular & Anti-Conflitos                ║
  5.   ║              Interface: Rayfield Library                   ║
  6.   ║                    Versão: v4.6.1                         ║
  7.   ╚═══════════════════════════════════════════════════════════╝
  8. ]]
  9.  
  10. --// ========== SERVICES ========== //
  11. local Players = game:GetService("Players")
  12. local RunService = game:GetService("RunService")
  13. local HttpService = game:GetService("HttpService")
  14. local ReplicatedStorage = game:GetService("ReplicatedStorage")
  15. local Teams = game:GetService("Teams")
  16. local TweenService = game:GetService("TweenService")
  17. local UserInputService = game:GetService("UserInputService")
  18. local TeleportService = game:GetService("TeleportService")
  19. local Lighting = game:GetService("Lighting")
  20.  
  21. --// ========== VARIÁVEIS GLOBAIS ========== //
  22. local LocalPlayer = Players.LocalPlayer
  23. local ScriptVersion = "v4.6.1"
  24. local LastSpawnPosition = nil
  25. local Camera = workspace.CurrentCamera
  26. local ActiveTeleportConnection = nil
  27.  
  28. --// ========== NOVAS VARIÁVEIS GLOBAIS ========== //
  29. local SessionStartTime = tick()
  30. local AdminDetectionActive = true
  31. local FPSBoostEnabled = false
  32. local OriginalGraphicsSettings = {}
  33.  
  34. --// ========== CONFIGURAÇÕES DO AUTO FARM ========== //
  35. local Config = {
  36.     AutoFarm = false,
  37.     AutoColeta = false,
  38.     CheckDelay = 0.3,
  39.     DelayBetweenCrystals = 0.1,
  40.     raioDeColeta = 25,
  41.     delayEntreTentativas = 0.25,
  42.     podeExecutar = true,
  43.    
  44.     -- ESP de Carnes
  45.     EspMeatActive = false,
  46.     ESP_MIN_SIZE = 35,
  47.     ESP_MAX_SIZE = 65,
  48.     ESP_UPDATE_RATE = 0.1,
  49.     MAX_VISIBLE_DISTANCE = 999999,
  50.    
  51.     -- ESP de Jogadores
  52.     PlayerESP = false,
  53.     PlayerESP_ShowHP = false,
  54.     PlayerESP_TeamCheck = false,
  55.    
  56.     -- Click Teleport
  57.     ClickTeleportEnabled = false,
  58.    
  59.     -- Teleports Salvos
  60.     SavedTeleports = {},
  61.    
  62.     -- Patrulha
  63.     PatrulhaPontos = {
  64.         CFrame.new(0, 30, 0),
  65.         CFrame.new(800, 30, 400),
  66.         CFrame.new(-750, 30, -600),
  67.         CFrame.new(450, 30, -1000),
  68.         CFrame.new(-900, 30, 700),
  69.         CFrame.new(0, 30, 1000),
  70.     },
  71. }
  72.  
  73. --// ========== LISTA DE NOMES/TERMOS DE ADMINS ========== //
  74. local AdminKeywords = {
  75.     -- Termos gerais
  76.     "admin", "mod", "moderator", "owner", "dev", "developer",
  77.     "staff", "helper", "support", "manager", "creator",
  78.    
  79.     -- Prefixos comuns
  80.     "adm_", "mod_", "staff_", "dev_", "owner_",
  81.    
  82.     -- Sufixos comuns
  83.     "_admin", "_mod", "_staff", "_dev", "_owner",
  84.    
  85.     -- Badges/grupos
  86.     "admin badge", "moderator badge", "staff badge",
  87.    
  88.     -- Português
  89.     "administrador", "moderador", "dono", "criador",
  90.     "equipe", "ajudante", "suporte", "gerente",
  91. }
  92.  
  93. --// ========== CACHE DE NÍVEL ========== //
  94. local DinoLevelCache = {
  95.     value = 0,
  96.     lastUpdate = 0,
  97.     updateInterval = 2
  98. }
  99.  
  100. --// ========== DETECTAR POSIÇÃO DE SPAWN ========== //
  101. task.spawn(function()
  102.     local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
  103.     local root = char:WaitForChild("HumanoidRootPart", 10)
  104.    
  105.     if root then
  106.         task.wait(2)
  107.         LastSpawnPosition = root.CFrame
  108.     end
  109.    
  110.     LocalPlayer.CharacterAdded:Connect(function(newChar)
  111.         task.wait(2)
  112.         local newRoot = newChar:FindFirstChild("HumanoidRootPart")
  113.         if newRoot then
  114.             LastSpawnPosition = newRoot.CFrame
  115.         end
  116.     end)
  117. end)
  118.  
  119. --// ========== CARREGAR RAYFIELD COM TEMA PERSONALIZADO ========== //
  120. local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
  121.  
  122. --// ========== CRIAR WINDOW COM TEMA ESCURO PERSONALIZADO ========== //
  123. local Window = Rayfield:CreateWindow({
  124.     Name = "🦖 Pré-história - By: NickZScripts",
  125.     Icon = 0,
  126.     LoadingTitle = "Pré-história",
  127.     LoadingSubtitle = "By: NickZScripts",
  128.     Theme = "DarkTheme",
  129.     DisableRayfieldPrompts = false,
  130.     DisableBuildWarnings = false,
  131.    
  132.     ConfigurationSaving = {
  133.         Enabled = true,
  134.         FolderName = nil,
  135.         FileName = "PreHistoria"
  136.     },
  137.    
  138.     Discord = {
  139.         Enabled = false,
  140.         Invite = "noinvitelink",
  141.         RememberJoins = true
  142.     },
  143.    
  144.     KeySystem = false,
  145.     KeySettings = {
  146.         Title = "Pré-história",
  147.         Subtitle = "Key System",
  148.         Note = "Sem sistema de key",
  149.         FileName = "PreHistoriaKey",
  150.         SaveKey = false,
  151.         GrabKeyFromSite = false,
  152.         Key = {""}
  153.     }
  154. })
  155.  
  156. --// ========== FUNÇÕES DE UTILIDADE ========== //
  157.  
  158. local function getCharacter()
  159.     return LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
  160. end
  161.  
  162. local function getHumanoidRootPart()
  163.     local char = getCharacter()
  164.     return char and char:FindFirstChild("HumanoidRootPart")
  165. end
  166.  
  167. local function teleportTo(cf)
  168.     local root = getHumanoidRootPart()
  169.     if root and root.Parent then
  170.         root.Parent:SetPrimaryPartCFrame(cf)
  171.     end
  172. end
  173.  
  174. local function teleportToCrystal(c)
  175.     local root = getHumanoidRootPart()
  176.     if root and c then
  177.         root.Parent:SetPrimaryPartCFrame(CFrame.new(c.Position + Vector3.new(0, 4.5, 0)))
  178.     end
  179. end
  180.  
  181. --// ========== SISTEMA DE TELEPORTE SEGURO ========== //
  182.  
  183. local function safeTeleport(targetCFrame, locationName)
  184.     if ActiveTeleportConnection then
  185.         ActiveTeleportConnection:Disconnect()
  186.         ActiveTeleportConnection = nil
  187.     end
  188.    
  189.     local char = LocalPlayer.Character
  190.     local root = char and char:FindFirstChild("HumanoidRootPart")
  191.     local humanoid = char and char:FindFirstChild("Humanoid")
  192.    
  193.     if not root or not humanoid then
  194.         Rayfield:Notify({
  195.             Title = "❌ Erro",
  196.             Content = "Personagem não encontrado!",
  197.             Duration = 1,
  198.             Image = 4483362458
  199.         })
  200.         return false
  201.     end
  202.    
  203.     Rayfield:Notify({
  204.         Title = "🚀 Teleportando",
  205.         Content = "Indo para: " .. locationName,
  206.         Duration = 0.5,
  207.         Image = 4483362458
  208.     })
  209.    
  210.     root.CFrame = targetCFrame
  211.    
  212.     task.spawn(function()
  213.         task.wait(0.05)
  214.        
  215.         local rayParams = RaycastParams.new()
  216.         rayParams.FilterType = Enum.RaycastFilterType.Blacklist
  217.         rayParams.FilterDescendantsInstances = {char}
  218.        
  219.         local rayResult = workspace:Raycast(
  220.             root.Position,
  221.             Vector3.new(0, -100, 0),
  222.             rayParams
  223.         )
  224.        
  225.         if rayResult then
  226.             root.CFrame = CFrame.new(rayResult.Position + Vector3.new(0, 3, 0))
  227.         end
  228.     end)
  229.    
  230.     local teleportStartTime = tick()
  231.     local maxWaitTime = 1.2
  232.     local minWaitTime = 0.2
  233.    
  234.     ActiveTeleportConnection = RunService.Heartbeat:Connect(function()
  235.         if not char or not char.Parent or not root or not root.Parent or not humanoid then
  236.             if ActiveTeleportConnection then
  237.                 ActiveTeleportConnection:Disconnect()
  238.                 ActiveTeleportConnection = nil
  239.             end
  240.             return
  241.         end
  242.        
  243.         local elapsedTime = tick() - teleportStartTime
  244.        
  245.         local floorMaterial = humanoid.FloorMaterial
  246.         local isOnGround = floorMaterial ~= Enum.Material.Air
  247.        
  248.         local velocity = root.AssemblyLinearVelocity
  249.         local isStationary = velocity.Magnitude < 2
  250.        
  251.         local humanoidState = humanoid:GetState()
  252.         local isLanded = humanoidState == Enum.HumanoidStateType.Landed or
  253.                          humanoidState == Enum.HumanoidStateType.Running or
  254.                          humanoidState == Enum.HumanoidStateType.RunningNoPhysics
  255.        
  256.         if (elapsedTime > minWaitTime and (isOnGround or (isStationary and isLanded))) or elapsedTime > maxWaitTime then
  257.             if ActiveTeleportConnection then
  258.                 ActiveTeleportConnection:Disconnect()
  259.                 ActiveTeleportConnection = nil
  260.             end
  261.            
  262.             if isOnGround or isLanded then
  263.                 Rayfield:Notify({
  264.                     Title = "✅ Chegou",
  265.                     Content = locationName,
  266.                     Duration = 0.5,
  267.                     Image = 4483362458
  268.                 })
  269.             else
  270.                 local rayParams = RaycastParams.new()
  271.                 rayParams.FilterType = Enum.RaycastFilterType.Blacklist
  272.                 rayParams.FilterDescendantsInstances = {char}
  273.                
  274.                 local rayResult = workspace:Raycast(
  275.                     root.Position,
  276.                     Vector3.new(0, -200, 0),
  277.                     rayParams
  278.                 )
  279.                
  280.                 if rayResult then
  281.                     root.CFrame = CFrame.new(rayResult.Position + Vector3.new(0, 3, 0))
  282.                 end
  283.                
  284.                 Rayfield:Notify({
  285.                     Title = "⚠️ Ajustado",
  286.                     Content = "Posição corrigida",
  287.                     Duration = 0.5,
  288.                     Image = 4483362458
  289.                 })
  290.             end
  291.            
  292.             return
  293.         end
  294.     end)
  295.    
  296.     return true
  297. end
  298.  
  299. --// ========== MÓDULO: CLICK TELEPORT (SEM EFEITOS VISUAIS) ========== //
  300.  
  301. local ClickTeleportModule = (function()
  302.     -- Variáveis privadas do módulo
  303.     local _enabled = false
  304.     local _uiVisible = false
  305.     local _screenGui = nil
  306.     local _mainFrame = nil
  307.     local _minimizedBtn = nil
  308.     local _connections = {}
  309.    
  310.     local Mouse = LocalPlayer:GetMouse()
  311.    
  312.     -- Estado do clique
  313.     local ClickState = {
  314.         StartTime = 0,
  315.         StartPosition = nil,
  316.         IsValid = false,
  317.     }
  318.    
  319.     -- Configurações do Click Teleport
  320.     local CTConfig = {
  321.         MaxClickTime = 0.3,
  322.         MaxDragDistance = 10,
  323.         RaycastDistance = 10000,
  324.         TeleportOffset = 3,
  325.     }
  326.    
  327.     -- Tema compatível com Rayfield
  328.     local CTTheme = {
  329.         Background = Color3.fromRGB(25, 25, 35),
  330.         Secondary = Color3.fromRGB(35, 35, 45),
  331.         Accent = Color3.fromRGB(90, 170, 255),
  332.         Success = Color3.fromRGB(90, 255, 140),
  333.         Danger = Color3.fromRGB(255, 90, 90),
  334.         Text = Color3.fromRGB(255, 255, 255),
  335.         TextDim = Color3.fromRGB(180, 180, 200),
  336.     }
  337.    
  338.     -- Funções privadas
  339.     local function _getMouseHit()
  340.         local unitRay = Camera:ScreenPointToRay(Mouse.X, Mouse.Y)
  341.        
  342.         local raycastParams = RaycastParams.new()
  343.         raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
  344.         raycastParams.FilterDescendantsInstances = {LocalPlayer.Character}
  345.         raycastParams.IgnoreWater = false
  346.        
  347.         local raycastResult = workspace:Raycast(
  348.             unitRay.Origin,
  349.             unitRay.Direction * CTConfig.RaycastDistance,
  350.             raycastParams
  351.         )
  352.        
  353.         return raycastResult
  354.     end
  355.    
  356.     local function _teleportToPosition(position)
  357.         local root = getHumanoidRootPart()
  358.         if not root then return false end
  359.        
  360.         local currentPosition = root.Position
  361.         local teleportPos = position + Vector3.new(0, CTConfig.TeleportOffset, 0)
  362.         local directionVector = (position - currentPosition)
  363.         local horizontalDirection = Vector3.new(directionVector.X, 0, directionVector.Z)
  364.         local lookDirection = horizontalDirection.Unit
  365.         local targetCFrame = CFrame.new(teleportPos, teleportPos + lookDirection)
  366.        
  367.         root.CFrame = targetCFrame
  368.        
  369.         return true
  370.     end
  371.    
  372.     local function _isValidClick(startPos, endPos, duration)
  373.         if duration > CTConfig.MaxClickTime then return false end
  374.        
  375.         local dragDistance = (endPos - startPos).Magnitude
  376.         if dragDistance > CTConfig.MaxDragDistance then return false end
  377.        
  378.         return true
  379.     end
  380.    
  381.     local function _updateStatusLabel(text, color)
  382.         if _mainFrame then
  383.             local statusLabel = _mainFrame:FindFirstChild("Container"):FindFirstChild("StatusLabel")
  384.             if statusLabel then
  385.                 statusLabel.Text = text
  386.                 statusLabel.TextColor3 = color
  387.             end
  388.         end
  389.     end
  390.    
  391.     local function _enableClickDetection()
  392.         for _, conn in ipairs(_connections) do
  393.             if conn and conn.Connected then
  394.                 conn:Disconnect()
  395.             end
  396.         end
  397.         _connections = {}
  398.        
  399.         table.insert(_connections, UserInputService.InputBegan:Connect(function(input, gameProcessed)
  400.             if gameProcessed then return end
  401.             if not _enabled then return end
  402.            
  403.             if input.UserInputType == Enum.UserInputType.MouseButton1 or
  404.                input.UserInputType == Enum.UserInputType.Touch then
  405.                 ClickState.StartTime = tick()
  406.                 ClickState.StartPosition = Vector2.new(Mouse.X, Mouse.Y)
  407.                 ClickState.IsValid = true
  408.             end
  409.         end))
  410.        
  411.         table.insert(_connections, UserInputService.InputEnded:Connect(function(input, gameProcessed)
  412.             if gameProcessed then return end
  413.             if not _enabled then return end
  414.             if not ClickState.IsValid then return end
  415.            
  416.             if input.UserInputType == Enum.UserInputType.MouseButton1 or
  417.                input.UserInputType == Enum.UserInputType.Touch then
  418.                
  419.                 local clickDuration = tick() - ClickState.StartTime
  420.                 local endPosition = Vector2.new(Mouse.X, Mouse.Y)
  421.                
  422.                 if _isValidClick(ClickState.StartPosition, endPosition, clickDuration) then
  423.                     local raycastResult = _getMouseHit()
  424.                    
  425.                     if raycastResult then
  426.                         if _teleportToPosition(raycastResult.Position) then
  427.                             _updateStatusLabel("✅ Teleportado!", CTTheme.Success)
  428.                            
  429.                             task.wait(1)
  430.                             _updateStatusLabel("Clique em qualquer lugar para teleportar", CTTheme.TextDim)
  431.                         end
  432.                     else
  433.                         _updateStatusLabel("❌ Não é possível teleportar para o céu", CTTheme.Danger)
  434.                        
  435.                         task.wait(1.5)
  436.                         _updateStatusLabel("Clique em qualquer lugar para teleportar", CTTheme.TextDim)
  437.                     end
  438.                 end
  439.                
  440.                 ClickState.IsValid = false
  441.             end
  442.         end))
  443.     end
  444.    
  445.     local function _disableClickDetection()
  446.         for _, conn in ipairs(_connections) do
  447.             if conn and conn.Connected then
  448.                 conn:Disconnect()
  449.             end
  450.         end
  451.         _connections = {}
  452.     end
  453.    
  454.     local function _minimizeUI()
  455.         if _mainFrame then
  456.             _mainFrame.Visible = false
  457.         end
  458.         if _minimizedBtn then
  459.             _minimizedBtn.Visible = true
  460.            
  461.             _minimizedBtn.Size = UDim2.new(0, 0, 0, 0)
  462.             TweenService:Create(_minimizedBtn, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
  463.                 Size = UDim2.new(0, 50, 0, 50)
  464.             }):Play()
  465.         end
  466.     end
  467.    
  468.     local function _maximizeUI()
  469.         if _minimizedBtn then
  470.             TweenService:Create(_minimizedBtn, TweenInfo.new(0.2, Enum.EasingStyle.Back, Enum.EasingDirection.In), {
  471.                 Size = UDim2.new(0, 0, 0, 0)
  472.             }):Play()
  473.            
  474.             task.wait(0.2)
  475.             _minimizedBtn.Visible = false
  476.         end
  477.         if _mainFrame then
  478.             _mainFrame.Visible = true
  479.            
  480.             _mainFrame.Size = UDim2.new(0, 0, 0, 0)
  481.             TweenService:Create(_mainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
  482.                 Size = UDim2.new(0, 260, 0, 180)
  483.             }):Play()
  484.         end
  485.     end
  486.    
  487.     local function _createUI()
  488.         if _screenGui then
  489.             pcall(function() _screenGui:Destroy() end)
  490.             _screenGui = nil
  491.         end
  492.        
  493.         _screenGui = Instance.new("ScreenGui")
  494.         _screenGui.Name = "ClickTeleportUI_PreHistoria"
  495.         _screenGui.ResetOnSpawn = false
  496.         _screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
  497.         _screenGui.Parent = game:GetService("CoreGui")
  498.        
  499.         _mainFrame = Instance.new("Frame")
  500.         _mainFrame.Name = "MainFrame"
  501.         _mainFrame.Size = UDim2.new(0, 260, 0, 180)
  502.         _mainFrame.Position = UDim2.new(0.5, -130, 0.5, -90)
  503.         _mainFrame.BackgroundColor3 = CTTheme.Background
  504.         _mainFrame.BackgroundTransparency = 0.05
  505.         _mainFrame.BorderSizePixel = 0
  506.         _mainFrame.Active = true
  507.         _mainFrame.Draggable = true
  508.         _mainFrame.Parent = _screenGui
  509.        
  510.         local mainCorner = Instance.new("UICorner")
  511.         mainCorner.CornerRadius = UDim.new(0, 12)
  512.         mainCorner.Parent = _mainFrame
  513.        
  514.         local mainStroke = Instance.new("UIStroke")
  515.         mainStroke.Color = CTTheme.Accent
  516.         mainStroke.Thickness = 2
  517.         mainStroke.Transparency = 0.3
  518.         mainStroke.Parent = _mainFrame
  519.        
  520.         local bgGradient = Instance.new("UIGradient")
  521.         bgGradient.Color = ColorSequence.new{
  522.             ColorSequenceKeypoint.new(0, Color3.fromRGB(30, 30, 40)),
  523.             ColorSequenceKeypoint.new(1, Color3.fromRGB(20, 20, 30))
  524.         }
  525.         bgGradient.Rotation = 45
  526.         bgGradient.Parent = _mainFrame
  527.        
  528.         local header = Instance.new("Frame")
  529.         header.Size = UDim2.new(1, 0, 0, 50)
  530.         header.BackgroundColor3 = CTTheme.Secondary
  531.         header.BackgroundTransparency = 0.2
  532.         header.BorderSizePixel = 0
  533.         header.Parent = _mainFrame
  534.        
  535.         local headerCorner = Instance.new("UICorner")
  536.         headerCorner.CornerRadius = UDim.new(0, 12)
  537.         headerCorner.Parent = header
  538.        
  539.         local headerFix = Instance.new("Frame")
  540.         headerFix.Size = UDim2.new(1, 0, 0, 12)
  541.         headerFix.Position = UDim2.new(0, 0, 1, -12)
  542.         headerFix.BackgroundColor3 = CTTheme.Secondary
  543.         headerFix.BackgroundTransparency = 0.2
  544.         headerFix.BorderSizePixel = 0
  545.         headerFix.Parent = header
  546.        
  547.         local title = Instance.new("TextLabel")
  548.         title.Size = UDim2.new(1, -85, 1, 0)
  549.         title.Position = UDim2.new(0, 15, 0, 0)
  550.         title.BackgroundTransparency = 1
  551.         title.Text = "🎯 Click Teleport"
  552.         title.TextColor3 = CTTheme.Text
  553.         title.TextSize = 17
  554.         title.Font = Enum.Font.GothamBold
  555.         title.TextXAlignment = Enum.TextXAlignment.Left
  556.         title.Parent = header
  557.        
  558.         local minimizeBtn = Instance.new("TextButton")
  559.         minimizeBtn.Size = UDim2.new(0, 35, 0, 35)
  560.         minimizeBtn.Position = UDim2.new(1, -78, 0.5, -17.5)
  561.         minimizeBtn.BackgroundColor3 = Color3.fromRGB(255, 200, 100)
  562.         minimizeBtn.BackgroundTransparency = 0.2
  563.         minimizeBtn.Text = "➖"
  564.         minimizeBtn.TextColor3 = CTTheme.Text
  565.         minimizeBtn.TextSize = 18
  566.         minimizeBtn.Font = Enum.Font.GothamBold
  567.         minimizeBtn.AutoButtonColor = false
  568.         minimizeBtn.Parent = header
  569.        
  570.         local minimizeCorner = Instance.new("UICorner")
  571.         minimizeCorner.CornerRadius = UDim.new(0, 8)
  572.         minimizeCorner.Parent = minimizeBtn
  573.        
  574.         local closeBtn = Instance.new("TextButton")
  575.         closeBtn.Size = UDim2.new(0, 35, 0, 35)
  576.         closeBtn.Position = UDim2.new(1, -38, 0.5, -17.5)
  577.         closeBtn.BackgroundColor3 = CTTheme.Danger
  578.         closeBtn.BackgroundTransparency = 0.2
  579.         closeBtn.Text = "✕"
  580.         closeBtn.TextColor3 = CTTheme.Text
  581.         closeBtn.TextSize = 20
  582.         closeBtn.Font = Enum.Font.GothamBold
  583.         closeBtn.AutoButtonColor = false
  584.         closeBtn.Parent = header
  585.        
  586.         local closeCorner = Instance.new("UICorner")
  587.         closeCorner.CornerRadius = UDim.new(0, 8)
  588.         closeCorner.Parent = closeBtn
  589.        
  590.         local container = Instance.new("Frame")
  591.         container.Name = "Container"
  592.         container.Size = UDim2.new(1, -20, 1, -60)
  593.         container.Position = UDim2.new(0, 10, 0, 55)
  594.         container.BackgroundTransparency = 1
  595.         container.Parent = _mainFrame
  596.        
  597.         local toggleBtn = Instance.new("TextButton")
  598.         toggleBtn.Name = "ToggleBtn"
  599.         toggleBtn.Size = UDim2.new(1, 0, 0, 55)
  600.         toggleBtn.Position = UDim2.new(0, 0, 0, 0)
  601.         toggleBtn.BackgroundColor3 = CTTheme.Danger
  602.         toggleBtn.BackgroundTransparency = 0.1
  603.         toggleBtn.Text = "🔴 DESATIVADO"
  604.         toggleBtn.TextColor3 = CTTheme.Text
  605.         toggleBtn.TextSize = 16
  606.         toggleBtn.Font = Enum.Font.GothamBold
  607.         toggleBtn.AutoButtonColor = false
  608.         toggleBtn.Parent = container
  609.        
  610.         local toggleCorner = Instance.new("UICorner")
  611.         toggleCorner.CornerRadius = UDim.new(0, 10)
  612.         toggleCorner.Parent = toggleBtn
  613.        
  614.         local toggleStroke = Instance.new("UIStroke")
  615.         toggleStroke.Name = "Stroke"
  616.         toggleStroke.Color = CTTheme.Danger
  617.         toggleStroke.Thickness = 2
  618.         toggleStroke.Transparency = 0.3
  619.         toggleStroke.Parent = toggleBtn
  620.        
  621.         local statusLabel = Instance.new("TextLabel")
  622.         statusLabel.Name = "StatusLabel"
  623.         statusLabel.Size = UDim2.new(1, 0, 0, 25)
  624.         statusLabel.Position = UDim2.new(0, 0, 0, 65)
  625.         statusLabel.BackgroundTransparency = 1
  626.         statusLabel.Text = "Clique em qualquer lugar para teleportar"
  627.         statusLabel.TextColor3 = CTTheme.TextDim
  628.         statusLabel.TextSize = 12
  629.         statusLabel.Font = Enum.Font.Gotham
  630.         statusLabel.TextWrapped = true
  631.         statusLabel.Parent = container
  632.        
  633.         local infoLabel = Instance.new("TextLabel")
  634.         infoLabel.Size = UDim2.new(1, 0, 0, 20)
  635.         infoLabel.Position = UDim2.new(0, 0, 0, 92)
  636.         infoLabel.BackgroundTransparency = 1
  637.         infoLabel.Text = "⚡ Teleporte limpo e instantâneo"
  638.         infoLabel.TextColor3 = CTTheme.Success
  639.         infoLabel.TextSize = 11
  640.         infoLabel.Font = Enum.Font.Gotham
  641.         infoLabel.Parent = container
  642.        
  643.         _minimizedBtn = Instance.new("TextButton")
  644.         _minimizedBtn.Name = "MinimizedBtn"
  645.         _minimizedBtn.Size = UDim2.new(0, 50, 0, 50)
  646.         _minimizedBtn.Position = UDim2.new(1, -60, 0, 10)
  647.         _minimizedBtn.BackgroundColor3 = CTTheme.Accent
  648.         _minimizedBtn.BackgroundTransparency = 0.1
  649.         _minimizedBtn.Text = "🎯"
  650.         _minimizedBtn.TextColor3 = CTTheme.Text
  651.         _minimizedBtn.TextSize = 24
  652.         _minimizedBtn.Font = Enum.Font.GothamBold
  653.         _minimizedBtn.AutoButtonColor = false
  654.         _minimizedBtn.Visible = false
  655.         _minimizedBtn.Active = true
  656.         _minimizedBtn.Draggable = true
  657.         _minimizedBtn.Parent = _screenGui
  658.        
  659.         local minimizedCorner = Instance.new("UICorner")
  660.         minimizedCorner.CornerRadius = UDim.new(0, 12)
  661.         minimizedCorner.Parent = _minimizedBtn
  662.        
  663.         local minimizedStroke = Instance.new("UIStroke")
  664.         minimizedStroke.Color = CTTheme.Accent
  665.         minimizedStroke.Thickness = 2
  666.         minimizedStroke.Parent = _minimizedBtn
  667.        
  668.         local minimizedGradient = Instance.new("UIGradient")
  669.         minimizedGradient.Color = ColorSequence.new{
  670.             ColorSequenceKeypoint.new(0, Color3.fromRGB(100, 180, 255)),
  671.             ColorSequenceKeypoint.new(1, Color3.fromRGB(70, 140, 255))
  672.         }
  673.         minimizedGradient.Rotation = 90
  674.         minimizedGradient.Parent = _minimizedBtn
  675.        
  676.         toggleBtn.MouseButton1Click:Connect(function()
  677.             _enabled = not _enabled
  678.            
  679.             if _enabled then
  680.                 toggleBtn.Text = "🟢 ATIVADO"
  681.                 toggleBtn.BackgroundColor3 = CTTheme.Success
  682.                 toggleStroke.Color = CTTheme.Success
  683.                 statusLabel.Text = "Clique em qualquer lugar para teleportar"
  684.                 _enableClickDetection()
  685.             else
  686.                 toggleBtn.Text = "🔴 DESATIVADO"
  687.                 toggleBtn.BackgroundColor3 = CTTheme.Danger
  688.                 toggleStroke.Color = CTTheme.Danger
  689.                 statusLabel.Text = "Teleporte desativado"
  690.                 _disableClickDetection()
  691.             end
  692.         end)
  693.        
  694.         minimizeBtn.MouseButton1Click:Connect(function()
  695.             _minimizeUI()
  696.         end)
  697.        
  698.         _minimizedBtn.MouseButton1Click:Connect(function()
  699.             _maximizeUI()
  700.         end)
  701.        
  702.         closeBtn.MouseButton1Click:Connect(function()
  703.             _enabled = false
  704.             _disableClickDetection()
  705.            
  706.             if _screenGui then
  707.                 pcall(function() _screenGui:Destroy() end)
  708.                 _screenGui = nil
  709.                 _mainFrame = nil
  710.                 _minimizedBtn = nil
  711.             end
  712.            
  713.             _uiVisible = false
  714.             Config.ClickTeleportEnabled = false
  715.            
  716.             Rayfield:Notify({
  717.                 Title = "🎯 Click Teleport",
  718.                 Content = "Desativado completamente",
  719.                 Duration = 1,
  720.                 Image = 4483362458
  721.             })
  722.         end)
  723.        
  724.         local function addHoverEffect(button, normalTrans)
  725.             button.MouseEnter:Connect(function()
  726.                 TweenService:Create(button, TweenInfo.new(0.2), {
  727.                     BackgroundTransparency = 0
  728.                 }):Play()
  729.             end)
  730.            
  731.             button.MouseLeave:Connect(function()
  732.                 TweenService:Create(button, TweenInfo.new(0.2), {
  733.                     BackgroundTransparency = normalTrans or 0.1
  734.                 }):Play()
  735.             end)
  736.         end
  737.        
  738.         addHoverEffect(toggleBtn, 0.1)
  739.         addHoverEffect(minimizeBtn, 0.2)
  740.         addHoverEffect(closeBtn, 0.2)
  741.         addHoverEffect(_minimizedBtn, 0.1)
  742.        
  743.         _uiVisible = true
  744.     end
  745.    
  746.     return {
  747.         Init = function()
  748.             print("✅ Módulo Click Teleport inicializado (Sem efeitos visuais)")
  749.         end,
  750.        
  751.         Toggle = function(state)
  752.             Config.ClickTeleportEnabled = state
  753.            
  754.             if state then
  755.                 if not _uiVisible then
  756.                     _createUI()
  757.                    
  758.                     Rayfield:Notify({
  759.                         Title = "🎯 Click Teleport",
  760.                         Content = "Interface aberta!",
  761.                         Duration = 1,
  762.                         Image = 4483362458
  763.                     })
  764.                 end
  765.             else
  766.                 if _screenGui then
  767.                     _enabled = false
  768.                     _disableClickDetection()
  769.                    
  770.                     pcall(function() _screenGui:Destroy() end)
  771.                     _screenGui = nil
  772.                     _mainFrame = nil
  773.                     _minimizedBtn = nil
  774.                 end
  775.                
  776.                 _uiVisible = false
  777.                
  778.                 Rayfield:Notify({
  779.                     Title = "🎯 Click Teleport",
  780.                     Content = "Desativado",
  781.                     Duration = 1,
  782.                     Image = 4483362458
  783.                 })
  784.             end
  785.         end,
  786.        
  787.         Cleanup = function()
  788.             _enabled = false
  789.             _disableClickDetection()
  790.            
  791.             if _screenGui then
  792.                 pcall(function() _screenGui:Destroy() end)
  793.                 _screenGui = nil
  794.                 _mainFrame = nil
  795.                 _minimizedBtn = nil
  796.             end
  797.            
  798.             _uiVisible = false
  799.             print("🧹 Click Teleport limpo")
  800.         end,
  801.        
  802.         IsEnabled = function()
  803.             return Config.ClickTeleportEnabled
  804.         end
  805.     }
  806. end)()
  807.  
  808. ClickTeleportModule.Init()
  809.  
  810. --// ========== SISTEMA DE SESSÃO (SESSION TIME) ========== //
  811.  
  812. local function formatSessionTime()
  813.     local elapsed = tick() - SessionStartTime
  814.     local hours = math.floor(elapsed / 3600)
  815.     local minutes = math.floor((elapsed % 3600) / 60)
  816.     local seconds = math.floor(elapsed % 60)
  817.    
  818.     if hours > 0 then
  819.         return string.format("⏱️ Tempo de Sessão: %02d:%02d:%02d", hours, minutes, seconds)
  820.     else
  821.         return string.format("⏱️ Tempo de Sessão: %02d:%02d", minutes, seconds)
  822.     end
  823. end
  824.  
  825. --// ========== SISTEMA DE DETECÇÃO DE ADMIN ========== //
  826.  
  827. local DetectedAdmins = {}
  828.  
  829. local function isLikelyAdmin(player)
  830.     if player == LocalPlayer then return false end
  831.    
  832.     local name = player.Name:lower()
  833.     local displayName = player.DisplayName:lower()
  834.    
  835.     -- Verificar palavras-chave no nome
  836.     for _, keyword in ipairs(AdminKeywords) do
  837.         if name:find(keyword:lower()) or displayName:find(keyword:lower()) then
  838.             return true
  839.         end
  840.     end
  841.    
  842.     -- Verificar se tem permissões especiais (método alternativo)
  843.     local success, result = pcall(function()
  844.         return player:GetRankInGroup(game.CreatorId) >= 250
  845.     end)
  846.    
  847.     if success and result then
  848.         return true
  849.     end
  850.    
  851.     -- Verificar se está em um time com nome de admin/staff
  852.     if player.Team then
  853.         local teamName = player.Team.Name:lower()
  854.         for _, keyword in ipairs(AdminKeywords) do
  855.             if teamName:find(keyword:lower()) then
  856.                 return true
  857.             end
  858.         end
  859.     end
  860.    
  861.     return false
  862. end
  863.  
  864. local function scanForAdmins()
  865.     DetectedAdmins = {}
  866.    
  867.     for _, player in ipairs(Players:GetPlayers()) do
  868.         if isLikelyAdmin(player) then
  869.             table.insert(DetectedAdmins, player.Name)
  870.         end
  871.     end
  872.    
  873.     return DetectedAdmins
  874. end
  875.  
  876. --// ========== SISTEMA DE SERVER HOP MODIFICADO ========== //
  877.  
  878. local function serverHop(serverType)
  879.     local searchText = ""
  880.     if serverType == "crowded" then
  881.         searchText = "Procurando servidor lotado..."
  882.     elseif serverType == "empty" then
  883.         searchText = "Procurando servidor vazio..."
  884.     else
  885.         searchText = "Procurando servidor..."
  886.     end
  887.    
  888.     Rayfield:Notify({
  889.         Title = "🔄 Server Hop",
  890.         Content = searchText,
  891.         Duration = 2,
  892.         Image = 4483362458
  893.     })
  894.    
  895.     local serverList = {}
  896.     local cursor = ""
  897.    
  898.     -- Buscar servidores disponíveis
  899.     repeat
  900.         local success, result = pcall(function()
  901.             return HttpService:JSONDecode(game:HttpGet(
  902.                 string.format(
  903.                     "https://games.roblox.com/v1/games/%d/servers/Public?sortOrder=Asc&limit=100&cursor=%s",
  904.                     game.PlaceId,
  905.                     cursor
  906.                 )
  907.             ))
  908.         end)
  909.        
  910.         if success and result and result.data then
  911.             for _, server in ipairs(result.data) do
  912.                 if server.id ~= game.JobId and server.playing < server.maxPlayers then
  913.                     table.insert(serverList, server)
  914.                 end
  915.             end
  916.            
  917.             cursor = result.nextPageCursor or ""
  918.         else
  919.             break
  920.         end
  921.        
  922.         task.wait(0.1)
  923.     until cursor == "" or #serverList >= 50
  924.    
  925.     if #serverList == 0 then
  926.         Rayfield:Notify({
  927.             Title = "❌ Server Hop",
  928.             Content = "Nenhum servidor disponível!",
  929.             Duration = 2,
  930.             Image = 4483362458
  931.         })
  932.         return
  933.     end
  934.    
  935.     -- Ordenar servidores baseado no tipo
  936.     if serverType == "crowded" then
  937.         -- Servidor lotado (mais jogadores)
  938.         table.sort(serverList, function(a, b)
  939.             return a.playing > b.playing
  940.         end)
  941.     elseif serverType == "empty" then
  942.         -- Servidor vazio (menos jogadores)
  943.         table.sort(serverList, function(a, b)
  944.             return a.playing < b.playing
  945.         end)
  946.     end
  947.    
  948.     -- Tentar conectar ao primeiro servidor da lista
  949.     local targetServer = serverList[1]
  950.    
  951.     if targetServer then
  952.         local success, errorMsg = pcall(function()
  953.             TeleportService:TeleportToPlaceInstance(
  954.                 game.PlaceId,
  955.                 targetServer.id,
  956.                 LocalPlayer
  957.             )
  958.         end)
  959.        
  960.         if success then
  961.             Rayfield:Notify({
  962.                 Title = "✅ Server Hop",
  963.                 Content = string.format("Entrando em servidor com %d/%d jogadores", targetServer.playing, targetServer.maxPlayers),
  964.                 Duration = 2,
  965.                 Image = 4483362458
  966.             })
  967.         else
  968.             Rayfield:Notify({
  969.                 Title = "❌ Server Hop",
  970.                 Content = "Falha ao trocar de servidor!",
  971.                 Duration = 2,
  972.                 Image = 4483362458
  973.             })
  974.         end
  975.     end
  976. end
  977.  
  978. --// ========== SISTEMA DE FPS BOOST (OTIMIZAÇÃO) ========== //
  979.  
  980. local function enableFPSBoost()
  981.     -- Salvar configurações originais
  982.     OriginalGraphicsSettings = {
  983.         QualityLevel = settings().Rendering.QualityLevel,
  984.         MeshPartDetailLevel = settings().Rendering.MeshPartDetailLevel,
  985.         GlobalShadows = Lighting.GlobalShadows,
  986.         FogEnd = Lighting.FogEnd,
  987.     }
  988.    
  989.     -- Aplicar otimizações
  990.     settings().Rendering.QualityLevel = Enum.QualityLevel.Level01
  991.     settings().Rendering.MeshPartDetailLevel = Enum.MeshPartDetailLevel.Level01
  992.    
  993.     -- Otimizações de iluminação
  994.     Lighting.GlobalShadows = false
  995.     Lighting.FogEnd = 100000
  996.    
  997.     -- Remover efeitos desnecessários
  998.     for _, effect in ipairs(Lighting:GetChildren()) do
  999.         if effect:IsA("PostEffect") or effect:IsA("BloomEffect") or effect:IsA("BlurEffect") or
  1000.            effect:IsA("ColorCorrectionEffect") or effect:IsA("SunRaysEffect") then
  1001.             effect.Enabled = false
  1002.         end
  1003.     end
  1004.    
  1005.     -- Otimizar workspace
  1006.     for _, obj in ipairs(workspace:GetDescendants()) do
  1007.         -- Remover partículas distantes
  1008.         if obj:IsA("ParticleEmitter") or obj:IsA("Trail") then
  1009.             obj.Enabled = false
  1010.         end
  1011.        
  1012.         -- Reduzir qualidade de texturas
  1013.         if obj:IsA("Decal") or obj:IsA("Texture") then
  1014.             obj.Transparency = 0.5
  1015.         end
  1016.        
  1017.         -- Desabilitar sombras em partes
  1018.         if obj:IsA("BasePart") then
  1019.             obj.CastShadow = false
  1020.         end
  1021.     end
  1022.    
  1023.     FPSBoostEnabled = true
  1024.    
  1025.     Rayfield:Notify({
  1026.         Title = "✅ FPS Boost Ativado",
  1027.         Content = "Otimizações aplicadas com sucesso!",
  1028.         Duration = 2,
  1029.         Image = 4483362458
  1030.     })
  1031. end
  1032.  
  1033. local function disableFPSBoost()
  1034.     if not OriginalGraphicsSettings or not OriginalGraphicsSettings.QualityLevel then
  1035.         Rayfield:Notify({
  1036.             Title = "⚠️ FPS Boost",
  1037.             Content = "Configurações originais não encontradas!",
  1038.             Duration = 2,
  1039.             Image = 4483362458
  1040.         })
  1041.         return
  1042.     end
  1043.    
  1044.     -- Restaurar configurações originais
  1045.     settings().Rendering.QualityLevel = OriginalGraphicsSettings.QualityLevel
  1046.     settings().Rendering.MeshPartDetailLevel = OriginalGraphicsSettings.MeshPartDetailLevel
  1047.     Lighting.GlobalShadows = OriginalGraphicsSettings.GlobalShadows
  1048.     Lighting.FogEnd = OriginalGraphicsSettings.FogEnd
  1049.    
  1050.     -- Reabilitar efeitos
  1051.     for _, effect in ipairs(Lighting:GetChildren()) do
  1052.         if effect:IsA("PostEffect") or effect:IsA("BloomEffect") or effect:IsA("BlurEffect") or
  1053.            effect:IsA("ColorCorrectionEffect") or effect:IsA("SunRaysEffect") then
  1054.             effect.Enabled = true
  1055.         end
  1056.     end
  1057.    
  1058.     FPSBoostEnabled = false
  1059.    
  1060.     Rayfield:Notify({
  1061.         Title = "✅ FPS Boost Desativado",
  1062.         Content = "Configurações restauradas!",
  1063.         Duration = 2,
  1064.         Image = 4483362458
  1065.     })
  1066. end
  1067.  
  1068. --// ========== SISTEMA DE NÍVEL DO DINO ========== //
  1069.  
  1070. local function getDinoLevelSilent()
  1071.     local now = tick()
  1072.     if (now - DinoLevelCache.lastUpdate) < DinoLevelCache.updateInterval then
  1073.         return DinoLevelCache.value
  1074.     end
  1075.    
  1076.     local leaderstats = LocalPlayer:FindFirstChild("leaderstats")
  1077.     if leaderstats then
  1078.         for _, stat in ipairs(leaderstats:GetChildren()) do
  1079.             local name = stat.Name:lower()
  1080.             if name:find("level") or name:find("lvl") or name:find("nivel") then
  1081.                 if stat:IsA("IntValue") or stat:IsA("NumberValue") then
  1082.                     local val = tonumber(stat.Value) or 0
  1083.                     if val > 0 then
  1084.                         DinoLevelCache.value = val
  1085.                         DinoLevelCache.lastUpdate = now
  1086.                         return val
  1087.                     end
  1088.                 end
  1089.             end
  1090.         end
  1091.     end
  1092.    
  1093.     local playerGui = LocalPlayer:FindFirstChild("PlayerGui")
  1094.     if playerGui then
  1095.         for _, gui in ipairs(playerGui:GetDescendants()) do
  1096.             if gui:IsA("TextLabel") or gui:IsA("TextBox") then
  1097.                 local text = gui.Text:lower()
  1098.                
  1099.                 if text:find("level") or text:find("lvl") or text:find("nivel") then
  1100.                     local number = text:match("%d+")
  1101.                     if number then
  1102.                         local val = tonumber(number)
  1103.                         if val and val > 0 and val <= 100 then
  1104.                             DinoLevelCache.value = val
  1105.                             DinoLevelCache.lastUpdate = now
  1106.                             return val
  1107.                         end
  1108.                     end
  1109.                 end
  1110.             end
  1111.            
  1112.             if gui:IsA("IntValue") or gui:IsA("NumberValue") then
  1113.                 local name = gui.Name:lower()
  1114.                 if name:find("level") or name:find("lvl") or name:find("nivel") then
  1115.                     local val = tonumber(gui.Value) or 0
  1116.                     if val > 0 then
  1117.                         DinoLevelCache.value = val
  1118.                         DinoLevelCache.lastUpdate = now
  1119.                         return val
  1120.                     end
  1121.                 end
  1122.             end
  1123.         end
  1124.     end
  1125.    
  1126.     local char = LocalPlayer.Character
  1127.     if char then
  1128.         for _, obj in ipairs(char:GetDescendants()) do
  1129.             if obj:IsA("IntValue") or obj:IsA("NumberValue") then
  1130.                 local name = obj.Name:lower()
  1131.                 if name:find("level") or name:find("lvl") or name:find("nivel") then
  1132.                     local val = tonumber(obj.Value) or 0
  1133.                     if val > 0 then
  1134.                         DinoLevelCache.value = val
  1135.                         DinoLevelCache.lastUpdate = now
  1136.                         return val
  1137.                     end
  1138.                 end
  1139.             end
  1140.         end
  1141.     end
  1142.    
  1143.     local possibleFolders = {
  1144.         workspace:FindFirstChild("Dinosaurs"),
  1145.         workspace:FindFirstChild("Pets"),
  1146.         workspace:FindFirstChild("NPCs"),
  1147.         workspace:FindFirstChild("Creatures"),
  1148.         workspace:FindFirstChild("Animals")
  1149.     }
  1150.    
  1151.     for _, folder in ipairs(possibleFolders) do
  1152.         if folder then
  1153.             for _, dino in ipairs(folder:GetChildren()) do
  1154.                 local owner = dino:FindFirstChild("Owner") or dino:FindFirstChild("Player")
  1155.                
  1156.                 if owner and owner:IsA("ObjectValue") and owner.Value == LocalPlayer then
  1157.                     for _, obj in ipairs(dino:GetDescendants()) do
  1158.                         if obj:IsA("IntValue") or obj:IsA("NumberValue") or obj:IsA("StringValue") then
  1159.                             local name = obj.Name:lower()
  1160.                             if name:find("level") or name:find("lvl") or name:find("nivel") then
  1161.                                 local val = tonumber(obj.Value) or 0
  1162.                                 if val > 0 then
  1163.                                     DinoLevelCache.value = val
  1164.                                     DinoLevelCache.lastUpdate = now
  1165.                                     return val
  1166.                                 end
  1167.                             end
  1168.                         end
  1169.                     end
  1170.                 end
  1171.             end
  1172.         end
  1173.     end
  1174.    
  1175.     DinoLevelCache.lastUpdate = now
  1176.     return DinoLevelCache.value
  1177. end
  1178.  
  1179. local function debugPrintAllValues(parent, prefix)
  1180.     prefix = prefix or ""
  1181.    
  1182.     for _, child in ipairs(parent:GetChildren()) do
  1183.         if child:IsA("IntValue") or child:IsA("NumberValue") or child:IsA("StringValue") then
  1184.             print(prefix .. "├─ " .. child.ClassName .. ": " .. child.Name .. " = " .. tostring(child.Value))
  1185.         end
  1186.        
  1187.         if #child:GetChildren() > 0 then
  1188.             print(prefix .. "└─ Folder: " .. child.Name)
  1189.             debugPrintAllValues(child, prefix .. "   ")
  1190.         end
  1191.     end
  1192. end
  1193.  
  1194. local function getDinoLevelDebug()
  1195.     print("\n╔════════════════════════════════════════╗")
  1196.     print("║  INICIANDO BUSCA DE NÍVEL DO DINO     ║")
  1197.     print("╚════════════════════════════════════════╝")
  1198.    
  1199.     print("\n[1] Verificando leaderstats...")
  1200.     local leaderstats = LocalPlayer:FindFirstChild("leaderstats")
  1201.     if leaderstats then
  1202.         print("✓ leaderstats encontrado!")
  1203.         debugPrintAllValues(leaderstats, "  ")
  1204.        
  1205.         for _, stat in ipairs(leaderstats:GetChildren()) do
  1206.             local name = stat.Name:lower()
  1207.             if name:find("level") or name:find("lvl") or name:find("nivel") then
  1208.                 if stat:IsA("IntValue") or stat:IsA("NumberValue") then
  1209.                     local val = tonumber(stat.Value) or 0
  1210.                     print("✓✓✓ NÍVEL ENCONTRADO em leaderstats." .. stat.Name .. ": " .. val)
  1211.                     return val
  1212.                 end
  1213.             end
  1214.         end
  1215.     else
  1216.         print("✗ leaderstats não encontrado")
  1217.     end
  1218.    
  1219.     print("\n[2] Verificando PlayerGui...")
  1220.     local playerGui = LocalPlayer:FindFirstChild("PlayerGui")
  1221.     if playerGui then
  1222.         print("✓ PlayerGui encontrado!")
  1223.        
  1224.         for _, gui in ipairs(playerGui:GetDescendants()) do
  1225.             if gui:IsA("TextLabel") or gui:IsA("TextBox") then
  1226.                 local text = gui.Text:lower()
  1227.                
  1228.                 if text:find("level") or text:find("lvl") or text:find("nivel") then
  1229.                     print("  └─ Texto encontrado: " .. gui.Text)
  1230.                    
  1231.                     local number = text:match("%d+")
  1232.                     if number then
  1233.                         local val = tonumber(number)
  1234.                         if val and val > 0 and val <= 100 then
  1235.                             print("✓✓✓ NÍVEL ENCONTRADO em GUI: " .. val)
  1236.                             return val
  1237.                         end
  1238.                     end
  1239.                 end
  1240.             end
  1241.         end
  1242.         print("✗ Nível não encontrado no PlayerGui")
  1243.     end
  1244.    
  1245.     print("\n╔════════════════════════════════════════╗")
  1246.     print("║  ✗ NÍVEL NÃO ENCONTRADO                ║")
  1247.     print("╚════════════════════════════════════════╝\n")
  1248.    
  1249.     return 0
  1250. end
  1251.  
  1252. --// ========== SISTEMA DE CRISTAIS ========== //
  1253.  
  1254. local prioridadeMap = { legendary = 1, epic = 2, rare = 3, crystal = 4 }
  1255.  
  1256. local function getCrystalRank(name)
  1257.     name = name:lower()
  1258.     for key, rank in pairs(prioridadeMap) do
  1259.         if name:find(key) then return rank end
  1260.     end
  1261.     return 5
  1262. end
  1263.  
  1264. local function getSortedCrystals()
  1265.     local found = {}
  1266.     for _, obj in ipairs(workspace:GetDescendants()) do
  1267.         if obj:IsA("BasePart") and obj.Parent and obj.Parent:IsA("Model") then
  1268.             local rank = getCrystalRank(obj.Parent.Name)
  1269.             if rank < 5 then
  1270.                 table.insert(found, {part = obj, rank = rank})
  1271.             end
  1272.         end
  1273.     end
  1274.     table.sort(found, function(a, b) return a.rank < b.rank end)
  1275.     local parts = {}
  1276.     for _, entry in ipairs(found) do
  1277.         table.insert(parts, entry.part)
  1278.     end
  1279.     return parts
  1280. end
  1281.  
  1282. --// ========== SISTEMA ESP DE CARNES ========== //
  1283.  
  1284. local ActiveMeatESPs = {}
  1285. local meatUpdateLoop = nil
  1286. local meatScanLoop = nil
  1287.  
  1288. local function isMeatObject(obj)
  1289.     if not obj then return false, nil end
  1290.    
  1291.     if obj:IsA("ProximityPrompt") and obj.Enabled then
  1292.         local action = (obj.ActionText or ""):lower()
  1293.         local objText = (obj.ObjectText or ""):lower()
  1294.        
  1295.         local foodActions = {"coma", "eat", "pegar", "pick", "grab", "take"}
  1296.        
  1297.         for _, foodAction in ipairs(foodActions) do
  1298.             if action:find(foodAction) then
  1299.                 local fullText = action .. " " .. objText
  1300.                 local excludeWords = {"plant", "fish", "berry", "fruit", "vegetable", "seed"}
  1301.                
  1302.                 local isExcluded = false
  1303.                 for _, word in ipairs(excludeWords) do
  1304.                     if fullText:find(word) then
  1305.                         isExcluded = true
  1306.                         break
  1307.                     end
  1308.                 end
  1309.                
  1310.                 if not isExcluded then
  1311.                     local parent = obj.Parent
  1312.                     if parent and parent:IsA("BasePart") then
  1313.                         for _, player in ipairs(Players:GetPlayers()) do
  1314.                             if player.Character and parent:IsDescendantOf(player.Character) then
  1315.                                 return false, nil
  1316.                             end
  1317.                         end
  1318.                         return true, parent
  1319.                     end
  1320.                 end
  1321.             end
  1322.         end
  1323.     end
  1324.    
  1325.     if obj:IsA("Model") or obj:IsA("BasePart") then
  1326.         local name = (obj.Name or ""):lower()
  1327.        
  1328.         local meatWords = {
  1329.             "meat", "carne", "beef", "steak", "chicken",
  1330.             "frango", "pork", "porco", "bacon", "ham"
  1331.         }
  1332.        
  1333.         for _, word in ipairs(meatWords) do
  1334.             if name:find(word) then
  1335.                 for _, player in ipairs(Players:GetPlayers()) do
  1336.                     if player.Character and obj:IsDescendantOf(player.Character) then
  1337.                         return false, nil
  1338.                     end
  1339.                 end
  1340.                
  1341.                 if obj:IsA("Model") then
  1342.                     local part = obj.PrimaryPart or obj:FindFirstChildWhichIsA("BasePart")
  1343.                     return part ~= nil, part
  1344.                 else
  1345.                     return true, obj
  1346.                 end
  1347.             end
  1348.         end
  1349.     end
  1350.    
  1351.     return false, nil
  1352. end
  1353.  
  1354. local function findNearestMeat()
  1355.     local char = LocalPlayer.Character
  1356.     local root = char and char:FindFirstChild("HumanoidRootPart")
  1357.     if not root then return nil, math.huge end
  1358.    
  1359.     local nearestMeat = nil
  1360.     local nearestDistance = math.huge
  1361.    
  1362.     for _, obj in ipairs(workspace:GetDescendants()) do
  1363.         local isMeat, part = isMeatObject(obj)
  1364.         if isMeat and part and part.Parent then
  1365.             local distance = (part.Position - root.Position).Magnitude
  1366.             if distance < nearestDistance then
  1367.                 nearestDistance = distance
  1368.                 nearestMeat = part
  1369.             end
  1370.         end
  1371.     end
  1372.    
  1373.     return nearestMeat, nearestDistance
  1374. end
  1375.  
  1376. local function createMeatESP(part)
  1377.     if not part or not part:IsA("BasePart") or not part.Parent then return end
  1378.    
  1379.     local id = tostring(part:GetDebugId())
  1380.     if ActiveMeatESPs[id] then return end
  1381.    
  1382.     local esp = Instance.new("BillboardGui")
  1383.     esp.Name = "MeatESP_" .. id
  1384.     esp.Adornee = part
  1385.     esp.Size = UDim2.new(0, Config.ESP_MAX_SIZE, 0, Config.ESP_MAX_SIZE * 0.4)
  1386.     esp.StudsOffset = Vector3.new(0, 3, 0)
  1387.     esp.AlwaysOnTop = true
  1388.     esp.LightInfluence = 0
  1389.     esp.MaxDistance = Config.MAX_VISIBLE_DISTANCE
  1390.     esp.Parent = workspace
  1391.     esp.Enabled = true
  1392.    
  1393.     local frame = Instance.new("Frame", esp)
  1394.     frame.Size = UDim2.new(1, 0, 1, 0)
  1395.     frame.BackgroundColor3 = Color3.fromRGB(255, 80, 80)
  1396.     frame.BackgroundTransparency = 0.4
  1397.     frame.BorderSizePixel = 1
  1398.     frame.BorderColor3 = Color3.fromRGB(255, 200, 0)
  1399.    
  1400.     local corner = Instance.new("UICorner", frame)
  1401.     corner.CornerRadius = UDim.new(0, 6)
  1402.    
  1403.     local iconLabel = Instance.new("TextLabel", frame)
  1404.     iconLabel.Size = UDim2.new(0.3, 0, 0.9, 0)
  1405.     iconLabel.Position = UDim2.new(0, 2, 0.05, 0)
  1406.     iconLabel.BackgroundTransparency = 1
  1407.     iconLabel.Text = "🥩"
  1408.     iconLabel.TextScaled = true
  1409.     iconLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
  1410.     iconLabel.Font = Enum.Font.SourceSansBold
  1411.     iconLabel.TextStrokeTransparency = 0.5
  1412.    
  1413.     local distLabel = Instance.new("TextLabel", frame)
  1414.     distLabel.Name = "Distance"
  1415.     distLabel.Size = UDim2.new(0.7, -4, 0.9, 0)
  1416.     distLabel.Position = UDim2.new(0.3, 2, 0.05, 0)
  1417.     distLabel.BackgroundTransparency = 1
  1418.     distLabel.Text = "0m"
  1419.     distLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
  1420.     distLabel.TextStrokeTransparency = 0.3
  1421.     distLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
  1422.     distLabel.Font = Enum.Font.GothamBold
  1423.     distLabel.TextScaled = true
  1424.    
  1425.     ActiveMeatESPs[id] = {
  1426.         gui = esp,
  1427.         part = part,
  1428.         distLabel = distLabel,
  1429.         frame = frame,
  1430.         iconLabel = iconLabel
  1431.     }
  1432.    
  1433.     return true
  1434. end
  1435.  
  1436. local function scanForMeats()
  1437.     if not Config.EspMeatActive then return end
  1438.    
  1439.     for id, data in pairs(ActiveMeatESPs) do
  1440.         if data.gui then
  1441.             pcall(function() data.gui:Destroy() end)
  1442.         end
  1443.     end
  1444.     ActiveMeatESPs = {}
  1445.    
  1446.     local meatCount = 0
  1447.     local checkedCount = 0
  1448.    
  1449.     for _, obj in ipairs(workspace:GetDescendants()) do
  1450.         checkedCount = checkedCount + 1
  1451.        
  1452.         if checkedCount % 300 == 0 then
  1453.             task.wait()
  1454.             if not Config.EspMeatActive then return end
  1455.         end
  1456.        
  1457.         local isMeat, part = isMeatObject(obj)
  1458.         if isMeat and part and part.Parent then
  1459.             if createMeatESP(part) then
  1460.                 meatCount = meatCount + 1
  1461.             end
  1462.         end
  1463.     end
  1464. end
  1465.  
  1466. local function updateMeatESPInfo()
  1467.     if not Config.EspMeatActive then return end
  1468.    
  1469.     local char = LocalPlayer.Character
  1470.     local root = char and char:FindFirstChild("HumanoidRootPart")
  1471.     if not root then return end
  1472.    
  1473.     for id, data in pairs(ActiveMeatESPs) do
  1474.         if data.part and data.part.Parent and data.gui and data.gui.Parent then
  1475.             local distance = (data.part.Position - root.Position).Magnitude
  1476.            
  1477.             data.gui.Enabled = true
  1478.            
  1479.             if data.distLabel then
  1480.                 if distance < 100 then
  1481.                     data.distLabel.Text = string.format("%.0fm", distance)
  1482.                 elseif distance < 1000 then
  1483.                     data.distLabel.Text = string.format("%.0fm", distance)
  1484.                 else
  1485.                     data.distLabel.Text = string.format("%.1fkm", distance / 1000)
  1486.                 end
  1487.             end
  1488.            
  1489.             local scaleFactor
  1490.             if distance <= 50 then scaleFactor = 1.0
  1491.             elseif distance <= 200 then scaleFactor = 0.75
  1492.             elseif distance <= 500 then scaleFactor = 0.6
  1493.             elseif distance <= 1000 then scaleFactor = 0.5
  1494.             elseif distance <= 2000 then scaleFactor = 0.4
  1495.             elseif distance <= 3000 then scaleFactor = 0.35
  1496.             elseif distance <= 5000 then scaleFactor = 0.3
  1497.             elseif distance <= 10000 then scaleFactor = 0.25
  1498.             else scaleFactor = 0.2 end
  1499.            
  1500.             local newSize = Config.ESP_MIN_SIZE + ((Config.ESP_MAX_SIZE - Config.ESP_MIN_SIZE) * scaleFactor)
  1501.             data.gui.Size = UDim2.new(0, newSize, 0, newSize * 0.4)
  1502.            
  1503.             if data.frame then
  1504.                 local transparency
  1505.                 if distance < 300 then transparency = 0.3
  1506.                 elseif distance < 1000 then transparency = 0.5
  1507.                 elseif distance < 2500 then transparency = 0.65
  1508.                 elseif distance < 5000 then transparency = 0.75
  1509.                 elseif distance < 10000 then transparency = 0.8
  1510.                 else transparency = 0.85 end
  1511.                 data.frame.BackgroundTransparency = transparency
  1512.             end
  1513.            
  1514.             if distance < 100 then
  1515.                 data.frame.BackgroundColor3 = Color3.fromRGB(100, 255, 100)
  1516.                 data.frame.BorderColor3 = Color3.fromRGB(200, 255, 200)
  1517.             elseif distance < 500 then
  1518.                 data.frame.BackgroundColor3 = Color3.fromRGB(255, 255, 100)
  1519.                 data.frame.BorderColor3 = Color3.fromRGB(255, 255, 150)
  1520.             elseif distance < 1500 then
  1521.                 data.frame.BackgroundColor3 = Color3.fromRGB(255, 180, 100)
  1522.                 data.frame.BorderColor3 = Color3.fromRGB(255, 200, 150)
  1523.             elseif distance < 3000 then
  1524.                 data.frame.BackgroundColor3 = Color3.fromRGB(255, 120, 120)
  1525.                 data.frame.BorderColor3 = Color3.fromRGB(255, 150, 150)
  1526.             elseif distance < 5000 then
  1527.                 data.frame.BackgroundColor3 = Color3.fromRGB(200, 150, 255)
  1528.                 data.frame.BorderColor3 = Color3.fromRGB(220, 180, 255)
  1529.             elseif distance < 10000 then
  1530.                 data.frame.BackgroundColor3 = Color3.fromRGB(180, 180, 255)
  1531.                 data.frame.BorderColor3 = Color3.fromRGB(200, 200, 255)
  1532.             else
  1533.                 data.frame.BackgroundColor3 = Color3.fromRGB(150, 150, 150)
  1534.                 data.frame.BorderColor3 = Color3.fromRGB(180, 180, 180)
  1535.             end
  1536.         else
  1537.             if data.gui then
  1538.                 pcall(function() data.gui:Destroy() end)
  1539.             end
  1540.             ActiveMeatESPs[id] = nil
  1541.         end
  1542.     end
  1543. end
  1544.  
  1545. local function startMeatESP()
  1546.     if meatUpdateLoop then return end
  1547.    
  1548.     scanForMeats()
  1549.    
  1550.     meatUpdateLoop = RunService.Heartbeat:Connect(function()
  1551.         updateMeatESPInfo()
  1552.     end)
  1553.    
  1554.     meatScanLoop = task.spawn(function()
  1555.         while Config.EspMeatActive do
  1556.             task.wait(10)
  1557.             if Config.EspMeatActive then
  1558.                 for _, obj in ipairs(workspace:GetDescendants()) do
  1559.                     if not Config.EspMeatActive then break end
  1560.                    
  1561.                     local isMeat, part = isMeatObject(obj)
  1562.                     if isMeat and part then
  1563.                         local id = tostring(part:GetDebugId())
  1564.                         if not ActiveMeatESPs[id] then
  1565.                             createMeatESP(part)
  1566.                         end
  1567.                     end
  1568.                 end
  1569.                
  1570.                 for id, data in pairs(ActiveMeatESPs) do
  1571.                     if not data.part or not data.part.Parent then
  1572.                         if data.gui then
  1573.                             pcall(function() data.gui:Destroy() end)
  1574.                         end
  1575.                         ActiveMeatESPs[id] = nil
  1576.                     end
  1577.                 end
  1578.             end
  1579.         end
  1580.     end)
  1581.    
  1582.     workspace.DescendantAdded:Connect(function(obj)
  1583.         if not Config.EspMeatActive then return end
  1584.        
  1585.         task.wait(0.1)
  1586.         local isMeat, part = isMeatObject(obj)
  1587.         if isMeat and part then
  1588.             local id = tostring(part:GetDebugId())
  1589.             if not ActiveMeatESPs[id] then
  1590.                 createMeatESP(part)
  1591.             end
  1592.         end
  1593.     end)
  1594. end
  1595.  
  1596. local function stopMeatESP()
  1597.     if meatUpdateLoop then
  1598.         meatUpdateLoop:Disconnect()
  1599.         meatUpdateLoop = nil
  1600.     end
  1601.    
  1602.     if meatScanLoop then
  1603.         task.cancel(meatScanLoop)
  1604.         meatScanLoop = nil
  1605.     end
  1606.    
  1607.     for id, data in pairs(ActiveMeatESPs) do
  1608.         if data.gui then
  1609.             pcall(function() data.gui:Destroy() end)
  1610.         end
  1611.     end
  1612.     ActiveMeatESPs = {}
  1613. end
  1614.  
  1615. --// ========== SISTEMA ESP DE JOGADORES ========== //
  1616.  
  1617. local PlayerESP_Data = {}
  1618. local PlayerESP_UpdateLoop = nil
  1619. local PlayerESP_ProcessQueue = {}
  1620.  
  1621. local ESP_CONFIG = {
  1622.     UpdateInterval = 0.5,
  1623.     HPBarMaxDistance = 4000,
  1624.     HPBarSize = UDim2.new(0, 50, 0, 5),
  1625.     HPBarYOffset = 0.5,
  1626.     HighlightFillTransparency = 0.85,
  1627.     OutlineTransparency = 0.15,
  1628.     MaxPlayersPerFrame = 2,
  1629. }
  1630.  
  1631. local COLOR_ENEMY   = Color3.fromRGB(255, 85, 85)
  1632. local COLOR_FRIEND  = Color3.fromRGB(85, 255, 85)
  1633. local COLOR_NEUTRAL = Color3.fromRGB(240, 240, 240)
  1634.  
  1635. local TeamColorMap = {}
  1636. local UsedHues = {}
  1637. local NextHueIndex = 0
  1638.  
  1639. local function generateUniqueTeamColor()
  1640.     local goldenRatio = 0.618033988749895
  1641.     local hue = (NextHueIndex * goldenRatio) % 1
  1642.    
  1643.     if hue >= 0.25 and hue <= 0.45 then
  1644.         hue = (hue + 0.35) % 1
  1645.     end
  1646.    
  1647.     local minDistance = 0.15
  1648.     for _, usedHue in pairs(UsedHues) do
  1649.         local distance = math.abs(hue - usedHue)
  1650.         if distance < minDistance or distance > (1 - minDistance) then
  1651.             NextHueIndex = NextHueIndex + 1
  1652.             return generateUniqueTeamColor()
  1653.         end
  1654.     end
  1655.    
  1656.     table.insert(UsedHues, hue)
  1657.     NextHueIndex = NextHueIndex + 1
  1658.    
  1659.     local sat = 0.8 + (math.random() * 0.2)
  1660.     local val = 0.9 + (math.random() * 0.1)
  1661.    
  1662.     return Color3.fromHSV(hue, sat, val)
  1663. end
  1664.  
  1665. local function isNeutralPlayer(p)
  1666.     return p.Team == nil
  1667. end
  1668.  
  1669. local function isAllyPlayer(p)
  1670.     return LocalPlayer.Team and p.Team == LocalPlayer.Team
  1671. end
  1672.  
  1673. local function colorForPlayer(p)
  1674.     if isNeutralPlayer(p) then
  1675.         return COLOR_NEUTRAL
  1676.     end
  1677.    
  1678.     if isAllyPlayer(p) then
  1679.         return COLOR_FRIEND
  1680.     end
  1681.    
  1682.     if p.Team and not TeamColorMap[p.Team] then
  1683.         TeamColorMap[p.Team] = generateUniqueTeamColor()
  1684.     end
  1685.    
  1686.     return TeamColorMap[p.Team] or COLOR_ENEMY
  1687. end
  1688.  
  1689. local function shouldShowPlayerESP(p)
  1690.     if not Config.PlayerESP then return false end
  1691.     if Config.PlayerESP_TeamCheck then return not isAllyPlayer(p) end
  1692.     return true
  1693. end
  1694.  
  1695. local function shouldShowPlayerHP(p)
  1696.     if not Config.PlayerESP_ShowHP then return false end
  1697.     if Config.PlayerESP_TeamCheck then return not isAllyPlayer(p) end
  1698.     return true
  1699. end
  1700.  
  1701. local function isValidPlayerCharacter(char)
  1702.     if not char or not char.Parent then return false end
  1703.     return char:FindFirstChild("Humanoid") and char:FindFirstChild("HumanoidRootPart")
  1704. end
  1705.  
  1706. local function clearPlayerConns(pack)
  1707.     if not pack or not pack.conns then return end
  1708.     for _, c in ipairs(pack.conns) do
  1709.         if c and c.Connected then
  1710.             pcall(function() c:Disconnect() end)
  1711.         end
  1712.     end
  1713.     pack.conns = {}
  1714. end
  1715.  
  1716. local function detachPlayerESP(plr)
  1717.     local pack = PlayerESP_Data[plr]
  1718.     if not pack then return end
  1719.    
  1720.     clearPlayerConns(pack)
  1721.    
  1722.     if pack.highlight then
  1723.         pcall(function() pack.highlight:Destroy() end)
  1724.         pack.highlight = nil
  1725.     end
  1726.    
  1727.     if pack.hpGui then
  1728.         pcall(function() pack.hpGui:Destroy() end)
  1729.         pack.hpGui = nil
  1730.     end
  1731.    
  1732.     PlayerESP_Data[plr] = nil
  1733. end
  1734.  
  1735. local function ensurePlayerHighlight(plr, char)
  1736.     local pack = PlayerESP_Data[plr]
  1737.     if not pack or not isValidPlayerCharacter(char) then return end
  1738.  
  1739.     if not pack.highlight or not pack.highlight.Parent then
  1740.         for _, obj in ipairs(char:GetChildren()) do
  1741.             if obj:IsA("Highlight") and obj.Name == "PlayerESP_Highlight" then
  1742.                 pcall(function() obj:Destroy() end)
  1743.             end
  1744.         end
  1745.        
  1746.         local hi = Instance.new("Highlight")
  1747.         hi.Name = "PlayerESP_Highlight"
  1748.         hi.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
  1749.         hi.FillTransparency = ESP_CONFIG.HighlightFillTransparency
  1750.         hi.OutlineTransparency = ESP_CONFIG.OutlineTransparency
  1751.         hi.Adornee = char
  1752.         hi.Parent = char
  1753.         pack.highlight = hi
  1754.     end
  1755.  
  1756.     local col = colorForPlayer(plr)
  1757.     pack.highlight.FillColor = col
  1758.     pack.highlight.OutlineColor = col
  1759.     pack.highlight.Adornee = char
  1760.     pack.highlight.Enabled = shouldShowPlayerESP(plr)
  1761. end
  1762.  
  1763. local function ensurePlayerHPGui(plr, char)
  1764.     local pack = PlayerESP_Data[plr]
  1765.     if not pack or not isValidPlayerCharacter(char) then return end
  1766.  
  1767.     local hum = char:FindFirstChildOfClass("Humanoid")
  1768.     local head = char:FindFirstChild("Head")
  1769.     local root = char:FindFirstChild("HumanoidRootPart")
  1770.    
  1771.     if not hum or not root then
  1772.         if pack.hpGui then
  1773.             pack.hpGui.Enabled = false
  1774.         end
  1775.         return
  1776.     end
  1777.    
  1778.     pack.hum = hum
  1779.     pack.head = head
  1780.     pack.root = root
  1781.  
  1782.     if not pack.hpGui or not pack.hpGui.Parent then
  1783.         for _, obj in ipairs(char:GetChildren()) do
  1784.             if obj:IsA("BillboardGui") and obj.Name == "PlayerESP_HP" then
  1785.                 pcall(function() obj:Destroy() end)
  1786.             end
  1787.         end
  1788.        
  1789.         local bill = Instance.new("BillboardGui")
  1790.         bill.Name = "PlayerESP_HP"
  1791.         bill.AlwaysOnTop = true
  1792.         bill.LightInfluence = 0
  1793.         bill.Size = ESP_CONFIG.HPBarSize
  1794.         bill.MaxDistance = ESP_CONFIG.HPBarMaxDistance
  1795.         bill.Parent = char
  1796.  
  1797.         local bg = Instance.new("Frame")
  1798.         bg.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
  1799.         bg.BackgroundTransparency = 0.2
  1800.         bg.BorderSizePixel = 0
  1801.         bg.Size = UDim2.fromScale(1, 1)
  1802.         bg.Parent = bill
  1803.  
  1804.         local stroke = Instance.new("UIStroke")
  1805.         stroke.Color = Color3.fromRGB(0, 0, 0)
  1806.         stroke.Thickness = 1.5
  1807.         stroke.Parent = bg
  1808.  
  1809.         local corner1 = Instance.new("UICorner")
  1810.         corner1.CornerRadius = UDim.new(0, 2)
  1811.         corner1.Parent = bg
  1812.  
  1813.         local fill = Instance.new("Frame")
  1814.         fill.BackgroundColor3 = COLOR_FRIEND
  1815.         fill.BorderSizePixel = 0
  1816.         fill.Size = UDim2.fromScale(1, 1)
  1817.         fill.Parent = bg
  1818.  
  1819.         local corner2 = Instance.new("UICorner")
  1820.         corner2.CornerRadius = UDim.new(0, 2)
  1821.         corner2.Parent = fill
  1822.  
  1823.         pack.hpGui = bill
  1824.         pack.hpFill = fill
  1825.     end
  1826.  
  1827.     if head then
  1828.         pack.hpGui.Adornee = head
  1829.         local headSize = head.Size.Y
  1830.         pack.hpGui.StudsOffset = Vector3.new(0, headSize/2 + ESP_CONFIG.HPBarYOffset, 0)
  1831.     else
  1832.         pack.hpGui.Adornee = root
  1833.         pack.hpGui.StudsOffset = Vector3.new(0, 2.5 + ESP_CONFIG.HPBarYOffset, 0)
  1834.     end
  1835.    
  1836.     pack.hpGui.Enabled = shouldShowPlayerHP(plr)
  1837. end
  1838.  
  1839. local function updatePlayerHPBar(plr)
  1840.     local pack = PlayerESP_Data[plr]
  1841.     if not pack or not pack.hpGui or not pack.hpFill or not pack.hum then return end
  1842.  
  1843.     local h = pack.hum.Health
  1844.     local m = pack.hum.MaxHealth
  1845.     if m <= 0 then m = 100 end
  1846.  
  1847.     local ratio = math.clamp(h / m, 0, 1)
  1848.     pack.hpFill.Size = UDim2.new(ratio, 0, 1, 0)
  1849.    
  1850.     local r, g, b
  1851.     if ratio > 0.5 then
  1852.         r = (1 - ratio) * 2 * 255
  1853.         g = 255
  1854.         b = 0
  1855.     else
  1856.         r = 255
  1857.         g = ratio * 2 * 255
  1858.         b = 0
  1859.     end
  1860.    
  1861.     pack.hpFill.BackgroundColor3 = Color3.fromRGB(r, g, b)
  1862.     pack.hpGui.Enabled = shouldShowPlayerHP(plr) and (h > 0)
  1863. end
  1864.  
  1865. local function setupPlayerESP(plr, char)
  1866.     if plr == LocalPlayer or not isValidPlayerCharacter(char) then return end
  1867.  
  1868.     local pack = PlayerESP_Data[plr] or { conns = {} }
  1869.     PlayerESP_Data[plr] = pack
  1870.  
  1871.     if pack.char and pack.char ~= char then
  1872.         clearPlayerConns(pack)
  1873.         if pack.highlight then pcall(function() pack.highlight:Destroy() end) end
  1874.         if pack.hpGui then pcall(function() pack.hpGui:Destroy() end) end
  1875.         pack.char = nil
  1876.         pack.highlight = nil
  1877.         pack.hpGui = nil
  1878.         pack.hpFill = nil
  1879.         pack.hum = nil
  1880.         pack.head = nil
  1881.     end
  1882.  
  1883.     pack.char = char
  1884.     local hum = char:FindFirstChildOfClass("Humanoid")
  1885.    
  1886.     if not hum then return end
  1887.    
  1888.     pack.hum = hum
  1889.     hum.HealthDisplayType = Enum.HumanoidHealthDisplayType.AlwaysOff
  1890.  
  1891.     task.wait(0.1)
  1892.     ensurePlayerHighlight(plr, char)
  1893.     ensurePlayerHPGui(plr, char)
  1894.     updatePlayerHPBar(plr)
  1895.  
  1896.     table.insert(pack.conns, hum.HealthChanged:Connect(function()
  1897.         updatePlayerHPBar(plr)
  1898.     end))
  1899.  
  1900.     table.insert(pack.conns, plr:GetPropertyChangedSignal("Team"):Connect(function()
  1901.         task.spawn(function()
  1902.             ensurePlayerHighlight(plr, char)
  1903.             updatePlayerHPBar(plr)
  1904.         end)
  1905.     end))
  1906.  
  1907.     pack.initialized = true
  1908. end
  1909.  
  1910. local function hookPlayerESP(plr)
  1911.     if plr == LocalPlayer then return end
  1912.     table.insert(PlayerESP_ProcessQueue, plr)
  1913. end
  1914.  
  1915. local function reinitializeAllPlayerESP()
  1916.     for plr, _ in pairs(PlayerESP_Data) do
  1917.         detachPlayerESP(plr)
  1918.     end
  1919.    
  1920.     PlayerESP_ProcessQueue = {}
  1921.    
  1922.     task.wait(0.1)
  1923.    
  1924.     for _, p in ipairs(Players:GetPlayers()) do
  1925.         if p ~= LocalPlayer then
  1926.             hookPlayerESP(p)
  1927.         end
  1928.     end
  1929. end
  1930.  
  1931. task.spawn(function()
  1932.     while true do
  1933.         task.wait(0.2)
  1934.        
  1935.         if #PlayerESP_ProcessQueue > 0 and Config.PlayerESP then
  1936.             local plr = table.remove(PlayerESP_ProcessQueue, 1)
  1937.            
  1938.             if plr and plr.Parent then
  1939.                 detachPlayerESP(plr)
  1940.                 PlayerESP_Data[plr] = { conns = {} }
  1941.                
  1942.                 if plr.Character then
  1943.                     task.spawn(function()
  1944.                         setupPlayerESP(plr, plr.Character)
  1945.                     end)
  1946.                 end
  1947.                
  1948.                 table.insert(PlayerESP_Data[plr].conns, plr.CharacterAdded:Connect(function(char)
  1949.                     task.wait(0.5)
  1950.                     setupPlayerESP(plr, char)
  1951.                 end))
  1952.                
  1953.                 table.insert(PlayerESP_Data[plr].conns, plr.CharacterRemoving:Connect(function()
  1954.                     local pack = PlayerESP_Data[plr]
  1955.                     if pack then
  1956.                         if pack.hpGui then
  1957.                             pcall(function() pack.hpGui:Destroy() end)
  1958.                             pack.hpGui = nil
  1959.                         end
  1960.                         if pack.highlight then
  1961.                             pcall(function() pack.highlight:Destroy() end)
  1962.                             pack.highlight = nil
  1963.                         end
  1964.                         pack.hum = nil
  1965.                         pack.head = nil
  1966.                         pack.initialized = false
  1967.                     end
  1968.                 end))
  1969.             end
  1970.         end
  1971.     end
  1972. end)
  1973.  
  1974. task.spawn(function()
  1975.     task.wait(2)
  1976.     Players.PlayerAdded:Connect(function(p)
  1977.         task.wait(0.5)
  1978.         hookPlayerESP(p)
  1979.     end)
  1980.    
  1981.     Players.PlayerRemoving:Connect(function(p)
  1982.         detachPlayerESP(p)
  1983.     end)
  1984. end)
  1985.  
  1986. task.spawn(function()
  1987.     while true do
  1988.         task.wait(ESP_CONFIG.UpdateInterval)
  1989.        
  1990.         if not Config.PlayerESP then
  1991.             task.wait(1)
  1992.             continue
  1993.         end
  1994.        
  1995.         local processed = 0
  1996.         for plr, pack in pairs(PlayerESP_Data) do
  1997.             if processed >= ESP_CONFIG.MaxPlayersPerFrame then
  1998.                 task.wait()
  1999.                 processed = 0
  2000.             end
  2001.            
  2002.             if plr and plr.Parent and plr ~= LocalPlayer then
  2003.                 local char = plr.Character
  2004.                 if char and isValidPlayerCharacter(char) then
  2005.                     if not pack.initialized or pack.char ~= char then
  2006.                         setupPlayerESP(plr, char)
  2007.                     else
  2008.                         if not pack.highlight or not pack.highlight.Parent then
  2009.                             ensurePlayerHighlight(plr, char)
  2010.                         end
  2011.                         if not pack.hpGui or not pack.hpGui.Parent then
  2012.                             ensurePlayerHPGui(plr, char)
  2013.                         end
  2014.                         if pack.highlight then
  2015.                             pack.highlight.Enabled = shouldShowPlayerESP(plr)
  2016.                         end
  2017.                         if pack.hpGui then
  2018.                             pack.hpGui.Enabled = shouldShowPlayerHP(plr) and pack.hum and pack.hum.Health > 0
  2019.                         end
  2020.                         updatePlayerHPBar(plr)
  2021.                     end
  2022.                 end
  2023.             end
  2024.             processed = processed + 1
  2025.         end
  2026.     end
  2027. end)
  2028.  
  2029. --// ========== SISTEMA DE TELEPORTS SALVOS ========== //
  2030.  
  2031. local function loadSavedTeleports()
  2032.     local success, data = pcall(function()
  2033.         return game:GetService("HttpService"):JSONDecode(readfile("PreHistoria_Teleports.json"))
  2034.     end)
  2035.    
  2036.     if success and data then
  2037.         Config.SavedTeleports = data
  2038.         print("📍 Carregado " .. #data .. " teleports salvos")
  2039.     else
  2040.         Config.SavedTeleports = {}
  2041.         print("📍 Nenhum teleport salvo encontrado")
  2042.     end
  2043. end
  2044.  
  2045. loadSavedTeleports()
  2046.  
  2047. --// ========== CRIAR TABS ========== //
  2048.  
  2049. local MenuTab = Window:CreateTab("🏠 Menu", 4483362458)
  2050.  
  2051. local MenuSection = MenuTab:CreateSection("📊 Informações")
  2052.  
  2053. local PlayersCountLabel = MenuTab:CreateLabel("👥 Players Online: 0/0")
  2054. local SessionTimeLabel = MenuTab:CreateLabel("⏱️ Tempo de Sessão: 00:00")
  2055.  
  2056. -- Atualizar contagem de jogadores
  2057. local function updatePlayerCount()
  2058.     local current = #Players:GetPlayers()
  2059.     local max = Players.MaxPlayers
  2060.     PlayersCountLabel:Set(string.format("👥 Players Online: %d/%d", current, max))
  2061. end
  2062.  
  2063. updatePlayerCount()
  2064.  
  2065. Players.PlayerAdded:Connect(function()
  2066.     task.wait(0.1)
  2067.     updatePlayerCount()
  2068. end)
  2069.  
  2070. Players.PlayerRemoving:Connect(function()
  2071.     task.wait(0.1)
  2072.     updatePlayerCount()
  2073. end)
  2074.  
  2075. -- Atualizar tempo de sessão em tempo real
  2076. task.spawn(function()
  2077.     while true do
  2078.         task.wait(1)
  2079.         SessionTimeLabel:Set(formatSessionTime())
  2080.         updatePlayerCount()
  2081.     end
  2082. end)
  2083.  
  2084. MenuTab:CreateParagraph({
  2085.     Title = "📜 Script Info",
  2086.     Content = "Versão: " .. ScriptVersion .. "\nStatus: ✅ Operacional"
  2087. })
  2088.  
  2089. MenuTab:CreateParagraph({
  2090.     Title = "👤 Jogador",
  2091.     Content = "Nome: " .. LocalPlayer.Name .. "\nDisplay: " .. LocalPlayer.DisplayName .. "\nID: " .. LocalPlayer.UserId
  2092. })
  2093.  
  2094. --// ========== SEÇÃO DE ADMIN DETECT ========== //
  2095.  
  2096. local AdminDetectSection = MenuTab:CreateSection("🛡️ Admin Detection")
  2097.  
  2098. local AdminDetectLabel = MenuTab:CreateLabel("🔍 Escaneando...")
  2099.  
  2100. -- Atualizar admin detect em tempo real
  2101. task.spawn(function()
  2102.     while true do
  2103.         task.wait(5)
  2104.        
  2105.         if AdminDetectionActive then
  2106.             local admins = scanForAdmins()
  2107.            
  2108.             if #admins > 0 then
  2109.                 local adminList = table.concat(admins, ", ")
  2110.                 AdminDetectLabel:Set(string.format("⚠️ Admin Detectado: %s", adminList))
  2111.             else
  2112.                 AdminDetectLabel:Set("✅ Nenhum Admin Detectado")
  2113.             end
  2114.         else
  2115.             AdminDetectLabel:Set("❌ Admin Detection Desativado")
  2116.         end
  2117.     end
  2118. end)
  2119.  
  2120. --// ========== SEÇÃO DE SERVER HOP MODIFICADA ========== //
  2121.  
  2122. local ServerHopSection = MenuTab:CreateSection("🔄 Server Management")
  2123.  
  2124. MenuTab:CreateButton({
  2125.     Name = "🔥 Server Hop (Lotado)",
  2126.     Callback = function()
  2127.         serverHop("crowded")
  2128.     end,
  2129. })
  2130.  
  2131. MenuTab:CreateButton({
  2132.     Name = "🌙 Server Hop (Vazio)",
  2133.     Callback = function()
  2134.         serverHop("empty")
  2135.     end,
  2136. })
  2137.  
  2138. local SystemsSection = MenuTab:CreateSection("⚡ Sistemas Ativos")
  2139.  
  2140. local AutoFarmStatusLabel = MenuTab:CreateLabel("💎 Auto Farm - Desligado")
  2141. local EspCarnesStatusLabel = MenuTab:CreateLabel("🥩 ESP Carnes - Desligado")
  2142. local EspJogadoresStatusLabel = MenuTab:CreateLabel("👥 ESP Jogadores - Desligado")
  2143. local AutoColetaStatusLabel = MenuTab:CreateLabel("🔄 Auto Colet - Desligado")
  2144. local ClickTeleportStatusLabel = MenuTab:CreateLabel("🎯 Click Teleport - Desligado")
  2145. local FPSBoostStatusLabel = MenuTab:CreateLabel("⚡ FPS Boost - Desligado")
  2146.  
  2147. local CreditsSection = MenuTab:CreateSection("👨‍💻 Créditos")
  2148.  
  2149. MenuTab:CreateParagraph({
  2150.     Title = "Desenvolvedor",
  2151.     Content = "Script: NickZScripts\nInterface: Rayfield Library\nVersão: " .. ScriptVersion
  2152. })
  2153.  
  2154. --// ========== ABA AUTO FARM ========== //
  2155.  
  2156. local AutoFarmTab = Window:CreateTab("⚡ Auto Farm", 4483362458)
  2157.  
  2158. local FarmSection = AutoFarmTab:CreateSection("💎 Farm de Cristais")
  2159.  
  2160. local DinoLevelLabel = AutoFarmTab:CreateLabel("🦖 Nível do Dino: 0/60")
  2161.  
  2162. task.spawn(function()
  2163.     while true do
  2164.         task.wait(2)
  2165.         local level = getDinoLevelSilent()
  2166.         DinoLevelLabel:Set(string.format("🦖 Nível do Dino: %d/60", level))
  2167.     end
  2168. end)
  2169.  
  2170. local AutoFarmToggle = AutoFarmTab:CreateToggle({
  2171.     Name = "Auto Farm Cristais",
  2172.     CurrentValue = false,
  2173.     Flag = "AutoFarmToggle",
  2174.     Callback = function(Value)
  2175.         Config.AutoFarm = Value
  2176.        
  2177.         if Value then
  2178.             AutoFarmStatusLabel:Set("💎 Auto Farm - Ligado")
  2179.         else
  2180.             AutoFarmStatusLabel:Set("💎 Auto Farm - Desligado")
  2181.         end
  2182.        
  2183.         Rayfield:Notify({
  2184.             Title = Value and "✅ Ativado" or "❌ Desativado",
  2185.             Content = "Auto Farm " .. (Value and "ligado" or "desligado"),
  2186.             Duration = 1,
  2187.             Image = 4483362458
  2188.         })
  2189.     end,
  2190. })
  2191.  
  2192. --// ========== AUTO COLETA INDEPENDENTE ========== //
  2193.  
  2194. local ColetaSection = AutoFarmTab:CreateSection("🔄 Auto Colet")
  2195.  
  2196. local AutoColetaToggle = AutoFarmTab:CreateToggle({
  2197.     Name = "Auto Colet",
  2198.     CurrentValue = false,
  2199.     Flag = "AutoColetToggle",
  2200.     Callback = function(Value)
  2201.         Config.AutoColeta = Value
  2202.        
  2203.         if Value then
  2204.             AutoColetaStatusLabel:Set("🔄 Auto Colet - Ligado")
  2205.         else
  2206.             AutoColetaStatusLabel:Set("🔄 Auto Colet - Desligado")
  2207.         end
  2208.        
  2209.         Rayfield:Notify({
  2210.             Title = Value and "✅ Ativado" or "❌ Desativado",
  2211.             Content = "Auto Colet " .. (Value and "ligado" or "desligado"),
  2212.             Duration = 1,
  2213.             Image = 4483362458
  2214.         })
  2215.     end,
  2216. })
  2217.  
  2218. --// ========== ABA ESP ========== //
  2219.  
  2220. local EspTab = Window:CreateTab("👁️ ESP", 4483362458)
  2221.  
  2222. local EspJogadoresSection = EspTab:CreateSection("👥 ESP de Jogadores")
  2223.  
  2224. local EspJogadoresToggle = EspTab:CreateToggle({
  2225.     Name = "ESP de Jogadores",
  2226.     CurrentValue = false,
  2227.     Flag = "EspJogadoresToggle",
  2228.     Callback = function(Value)
  2229.         Config.PlayerESP = Value
  2230.        
  2231.         if Value then
  2232.             EspJogadoresStatusLabel:Set("👥 ESP Jogadores - Ligado")
  2233.             reinitializeAllPlayerESP()
  2234.         else
  2235.             EspJogadoresStatusLabel:Set("👥 ESP Jogadores - Desligado")
  2236.             for plr, pack in pairs(PlayerESP_Data) do
  2237.                 if pack.highlight then pack.highlight.Enabled = false end
  2238.                 if pack.hpGui then pack.hpGui.Enabled = false end
  2239.             end
  2240.         end
  2241.        
  2242.         Rayfield:Notify({
  2243.             Title = Value and "✅ Ativado" or "❌ Desativado",
  2244.             Content = "ESP Jogadores " .. (Value and "ligado" or "desligado"),
  2245.             Duration = 1,
  2246.             Image = 4483362458
  2247.         })
  2248.     end,
  2249. })
  2250.  
  2251. local EspHPToggle = EspTab:CreateToggle({
  2252.     Name = "Barra de Vida",
  2253.     CurrentValue = false,
  2254.     Flag = "EspHPToggle",
  2255.     Callback = function(Value)
  2256.         Config.PlayerESP_ShowHP = Value
  2257.        
  2258.         for plr, pack in pairs(PlayerESP_Data) do
  2259.             if pack.hpGui then
  2260.                 pack.hpGui.Enabled = shouldShowPlayerHP(plr) and pack.hum and pack.hum.Health > 0
  2261.             end
  2262.         end
  2263.        
  2264.         Rayfield:Notify({
  2265.             Title = Value and "✅ Ativado" or "❌ Desativado",
  2266.             Content = "Barra de Vida " .. (Value and "ligada" or "desligada"),
  2267.             Duration = 1,
  2268.             Image = 4483362458
  2269.         })
  2270.     end,
  2271. })
  2272.  
  2273. local EspTeamCheckToggle = EspTab:CreateToggle({
  2274.     Name = "TeamCheck (Só Inimigos)",
  2275.     CurrentValue = false,
  2276.     Flag = "EspTeamCheckToggle",
  2277.     Callback = function(Value)
  2278.         Config.PlayerESP_TeamCheck = Value
  2279.        
  2280.         for plr, pack in pairs(PlayerESP_Data) do
  2281.             if pack.highlight then
  2282.                 pack.highlight.Enabled = shouldShowPlayerESP(plr)
  2283.             end
  2284.             if pack.hpGui then
  2285.                 pack.hpGui.Enabled = shouldShowPlayerHP(plr) and pack.hum and pack.hum.Health > 0
  2286.             end
  2287.         end
  2288.        
  2289.         Rayfield:Notify({
  2290.             Title = Value and "✅ Ativado" or "❌ Desativado",
  2291.             Content = "TeamCheck " .. (Value and "ligado" or "desligado"),
  2292.             Duration = 1,
  2293.             Image = 4483362458
  2294.         })
  2295.     end,
  2296. })
  2297.  
  2298. local EspCarnesSection = EspTab:CreateSection("🥩 ESP de Carnes")
  2299.  
  2300. local EspToggle = EspTab:CreateToggle({
  2301.     Name = "Esp de Carnes",
  2302.     CurrentValue = false,
  2303.     Flag = "EspToggle",
  2304.     Callback = function(Value)
  2305.         Config.EspMeatActive = Value
  2306.        
  2307.         if Value then
  2308.             EspCarnesStatusLabel:Set("🥩 ESP Carnes - Ligado")
  2309.             startMeatESP()
  2310.         else
  2311.             EspCarnesStatusLabel:Set("🥩 ESP Carnes - Desligado")
  2312.             stopMeatESP()
  2313.         end
  2314.        
  2315.         Rayfield:Notify({
  2316.             Title = Value and "✅ Ativado" or "❌ Desativado",
  2317.             Content = "ESP Carnes " .. (Value and "ligado" or "desligado"),
  2318.             Duration = 1,
  2319.             Image = 4483362458
  2320.         })
  2321.     end,
  2322. })
  2323.  
  2324. --// ========== ABA TELEPORT ========== //
  2325.  
  2326. local TeleportTab = Window:CreateTab("🚀 Teleport", 4483362458)
  2327.  
  2328. local TeleportSection = TeleportTab:CreateSection("🍖 Teleportes Rápidos")
  2329.  
  2330. local TeleportMeatButton = TeleportTab:CreateButton({
  2331.     Name = "Teleportar para Carne Mais Próxima",
  2332.     Callback = function()
  2333.         local char = LocalPlayer.Character
  2334.         local root = char and char:FindFirstChild("HumanoidRootPart")
  2335.         if not root then
  2336.             Rayfield:Notify({
  2337.                 Title = "❌ Erro",
  2338.                 Content = "Personagem não encontrado!",
  2339.                 Duration = 1,
  2340.                 Image = 4483362458
  2341.             })
  2342.             return
  2343.         end
  2344.        
  2345.         local meat, distance = findNearestMeat()
  2346.        
  2347.         if not meat then
  2348.             Rayfield:Notify({
  2349.                 Title = "❌ Erro",
  2350.                 Content = "Nenhuma carne encontrada!",
  2351.                 Duration = 1,
  2352.                 Image = 4483362458
  2353.             })
  2354.             return
  2355.         end
  2356.        
  2357.         safeTeleport(CFrame.new(meat.Position + Vector3.new(0, 3, 0)), "Carne")
  2358.     end,
  2359. })
  2360.  
  2361. local SpawnSection = TeleportTab:CreateSection("🏠 Teleporte para Spawn")
  2362.  
  2363. local TeleportSpawnButton = TeleportTab:CreateButton({
  2364.     Name = "Voltar ao Spawn",
  2365.     Callback = function()
  2366.         if not LastSpawnPosition then
  2367.             Rayfield:Notify({
  2368.                 Title = "❌ Erro",
  2369.                 Content = "Spawn não detectado!",
  2370.                 Duration = 1,
  2371.                 Image = 4483362458
  2372.             })
  2373.             return
  2374.         end
  2375.        
  2376.         safeTeleport(LastSpawnPosition, "Spawn")
  2377.     end,
  2378. })
  2379.  
  2380. local SavedTeleportsSection = TeleportTab:CreateSection("📍 Locais Salvos")
  2381.  
  2382. if #Config.SavedTeleports > 0 then
  2383.     for i, data in ipairs(Config.SavedTeleports) do
  2384.         if data.position then
  2385.             local locationName = data.name or ("Local " .. i)
  2386.            
  2387.             TeleportTab:CreateButton({
  2388.                 Name = "📍 " .. locationName,
  2389.                 Callback = function()
  2390.                     local pos = data.position
  2391.                    
  2392.                     if not pos or not pos.X or not pos.Y or not pos.Z then
  2393.                         Rayfield:Notify({
  2394.                             Title = "❌ Erro",
  2395.                             Content = "Posição inválida!",
  2396.                             Duration = 1,
  2397.                             Image = 4483362458
  2398.                         })
  2399.                         return
  2400.                     end
  2401.                    
  2402.                     local targetCF = CFrame.new(pos.X, pos.Y, pos.Z)
  2403.                     safeTeleport(targetCF, locationName)
  2404.                 end,
  2405.             })
  2406.         end
  2407.     end
  2408. else
  2409.     TeleportTab:CreateParagraph({
  2410.         Title = "ℹ️ Nenhum Local Salvo",
  2411.         Content = "Você ainda não possui locais salvos.\n\nUse outros scripts para salvar posições."
  2412.     })
  2413. end
  2414.  
  2415. --// ========== ABA OUTROS (SIMPLIFICADA) ========== //
  2416.  
  2417. local OutrosTab = Window:CreateTab("⚙️ Outros", 4483362458)
  2418.  
  2419. --// ========== FPS BOOST ========== //
  2420.  
  2421. local OptimizationSection = OutrosTab:CreateSection("⚡ Otimização")
  2422.  
  2423. OutrosTab:CreateParagraph({
  2424.     Title = "ℹ️ Sobre FPS Boost",
  2425.     Content = "O FPS Boost otimiza o jogo para melhorar a performance.\n\n✅ Reduz qualidade gráfica\n✅ Remove efeitos visuais\n✅ Desabilita sombras\n✅ Otimiza partículas\n\n⚠️ Pode alterar a aparência do jogo!"
  2426. })
  2427.  
  2428. OutrosTab:CreateToggle({
  2429.     Name = "⚡ FPS Boost",
  2430.     CurrentValue = false,
  2431.     Flag = "FPSBoostToggle",
  2432.     Callback = function(Value)
  2433.         if Value then
  2434.             enableFPSBoost()
  2435.             FPSBoostStatusLabel:Set("⚡ FPS Boost - Ligado")
  2436.         else
  2437.             disableFPSBoost()
  2438.             FPSBoostStatusLabel:Set("⚡ FPS Boost - Desligado")
  2439.         end
  2440.     end,
  2441. })
  2442.  
  2443. --// ========== CLICK TELEPORT (ABA OUTROS) - SEM EFEITOS ========== //
  2444.  
  2445. local ClickTeleportSection = OutrosTab:CreateSection("🎯 Click Teleport")
  2446.  
  2447. OutrosTab:CreateParagraph({
  2448.     Title = "ℹ️ Sobre Click Teleport",
  2449.     Content = "Teleporte instantâneo clicando em qualquer superfície.\n\n✅ Personagem olha para onde clicou\n✅ Anti-acidental\n✅ Interface móvel\n✅ Sem efeitos visuais\n\n💡 Use o botão ✕ na interface para desativar"
  2450. })
  2451.  
  2452. OutrosTab:CreateButton({
  2453.     Name = "🎯 Abrir Click Teleport",
  2454.     Callback = function()
  2455.         if not Config.ClickTeleportEnabled then
  2456.             ClickTeleportModule.Toggle(true)
  2457.             ClickTeleportStatusLabel:Set("🎯 Click Teleport - Ligado")
  2458.            
  2459.             Rayfield:Notify({
  2460.                 Title = "✅ Click Teleport",
  2461.                 Content = "Interface aberta!\n\nPara fechar, clique no botão ✕ na interface",
  2462.                 Duration = 2,
  2463.                 Image = 4483362458
  2464.             })
  2465.         else
  2466.             Rayfield:Notify({
  2467.                 Title = "ℹ️ Já Ativo",
  2468.                 Content = "Click Teleport já está aberto!\n\nPara desativar, use o botão ✕ na interface",
  2469.                 Duration = 2,
  2470.                 Image = 4483362458
  2471.             })
  2472.         end
  2473.     end,
  2474. })
  2475.  
  2476. --// ========== AUTO FARM LOOP ========== //
  2477.  
  2478. task.spawn(function()
  2479.     local index = 1
  2480.     while true do
  2481.         task.wait(Config.CheckDelay)
  2482.         if Config.AutoFarm then
  2483.             local currentLevel = getDinoLevelSilent()
  2484.            
  2485.             if currentLevel >= 60 then
  2486.                 Config.AutoFarm = false
  2487.                 AutoFarmToggle:Set(false)
  2488.                 AutoFarmStatusLabel:Set("💎 Auto Farm - Desligado")
  2489.                
  2490.                 Rayfield:Notify({
  2491.                     Title = "✅ Completo",
  2492.                     Content = "Nível 60 atingido!",
  2493.                     Duration = 2,
  2494.                     Image = 4483362458
  2495.                 })
  2496.             else
  2497.                 local crystals = getSortedCrystals()
  2498.                 if #crystals > 0 then
  2499.                     for _, c in ipairs(crystals) do
  2500.                         if not Config.AutoFarm or not c or not c.Parent then break end
  2501.                         teleportToCrystal(c)
  2502.                        
  2503.                         local fixarConexao = RunService.Heartbeat:Connect(function()
  2504.                             if Config.AutoFarm and c and c:IsDescendantOf(workspace) then
  2505.                                 local char = getCharacter()
  2506.                                 if char and char.PrimaryPart then
  2507.                                     char:SetPrimaryPartCFrame(CFrame.new(c.Position + Vector3.new(0, 4.5, 0)))
  2508.                                 end
  2509.                             end
  2510.                         end)
  2511.                        
  2512.                         local elapsed = 0
  2513.                         while c:IsDescendantOf(workspace) and elapsed < 12 and Config.AutoFarm do
  2514.                             task.wait(Config.CheckDelay)
  2515.                             elapsed += Config.CheckDelay
  2516.                         end
  2517.                         fixarConexao:Disconnect()
  2518.                         task.wait(Config.DelayBetweenCrystals)
  2519.                     end
  2520.                 else
  2521.                     index = (index % #Config.PatrulhaPontos) + 1
  2522.                     teleportTo(Config.PatrulhaPontos[index])
  2523.                     task.wait(2)
  2524.                 end
  2525.             end
  2526.         end
  2527.     end
  2528. end)
  2529.  
  2530. --// ========== AUTO COLETA (FUNCIONA COM AUTO FARM OU INDIVIDUAL) ========== //
  2531.  
  2532. RunService.Heartbeat:Connect(function()
  2533.     if not (Config.AutoFarm or Config.AutoColeta) then return end
  2534.    
  2535.     if not Config.podeExecutar then return end
  2536.     Config.podeExecutar = false
  2537.    
  2538.     local root = getHumanoidRootPart()
  2539.     if root then
  2540.         for _, obj in ipairs(workspace:GetDescendants()) do
  2541.             if obj:IsA("ProximityPrompt") and obj.Parent and obj.Parent:IsA("BasePart") then
  2542.                 if obj.Enabled and (obj.Parent.Position - root.Position).Magnitude <= Config.raioDeColeta then
  2543.                     pcall(function()
  2544.                         fireproximityprompt(obj)
  2545.                     end)
  2546.                 end
  2547.             end
  2548.         end
  2549.     end
  2550.    
  2551.     task.delay(Config.delayEntreTentativas, function()
  2552.         Config.podeExecutar = true
  2553.     end)
  2554. end)
  2555.  
  2556. --// ========== CLEANUP AO SAIR ========== //
  2557.  
  2558. game:GetService("Players").LocalPlayer.CharacterRemoving:Connect(function()
  2559.     ClickTeleportModule.Cleanup()
  2560.    
  2561.     if FPSBoostEnabled then
  2562.         disableFPSBoost()
  2563.     end
  2564. end)
  2565.  
  2566. --// ========== LOGS FINAIS ========== //
  2567.  
  2568. print("╔═══════════════════════════════════════════════════════════╗")
  2569. print("║          Pré-história - By: NickZScripts                 ║")
  2570. print("╠═══════════════════════════════════════════════════════════╣")
  2571. print("║  ✅ GUI Rayfield carregada!                               ║")
  2572. print("║  📌 Versão: " .. ScriptVersion .. "                                      ║")
  2573. print("║  🎮 Jogador: " .. LocalPlayer.Name)
  2574. print("║  📊 Players: " .. #Players:GetPlayers() .. "/" .. Players.MaxPlayers)
  2575. print("║  📍 Teleports Salvos: " .. #Config.SavedTeleports)
  2576. print("╠═══════════════════════════════════════════════════════════╣")
  2577. print("║  🔄 Auto Colet: Integrado com Auto Farm                  ║")
  2578. print("║  🚀 Sistema de Teleporte Ultra-Rápido                    ║")
  2579. print("║  🎨 ESP com cores únicas garantidas por time             ║")
  2580. print("║  🎯 Click Teleport: SEM EFEITOS VISUAIS                  ║")
  2581. print("╠═══════════════════════════════════════════════════════════╣")
  2582. print("║  📋 FUNCIONALIDADES ATIVAS:                              ║")
  2583. print("║  ⚡ Auto Farm de Cristais (com Auto Colet integrado)     ║")
  2584. print("║  👥 ESP de Jogadores (com HP Bar e cores únicas)         ║")
  2585. print("║  🥩 ESP de Carnes                                         ║")
  2586. print("║  🍖 Teleporte para Carnes                                 ║")
  2587. print("║  🏠 Teleporte para Spawn                                  ║")
  2588. print("║  📍 Teleporte Seguro para Locais Salvos                  ║")
  2589. print("║  🔄 Auto Colet Inteligente (25 studs)                    ║")
  2590. print("║  🎯 Click Teleport (Orientação + Sem Efeitos)            ║")
  2591. print("╠═══════════════════════════════════════════════════════════╣")
  2592. print("║  🆕 ATUALIZAÇÃO v4.6.1 - MODIFICAÇÕES:                   ║")
  2593. print("║  ⏱️  Contador de Tempo de Sessão em Tempo Real           ║")
  2594. print("║  🛡️  Sistema de Detecção de Admins                       ║")
  2595. print("║  🔥 Server Hop para Servidores Lotados                   ║")
  2596. print("║  🌙 Server Hop para Servidores Vazios                    ║")
  2597. print("║  ⚡ Sistema de FPS Boost (Otimização Total)              ║")
  2598. print("║  🎮 Interface Moderna com Tema Escuro                    ║")
  2599. print("║  🔧 Sistema Anti-Conflitos e Anti-Bugs                   ║")
  2600. print("║  ❌ Crystal Bloom removido                               ║")
  2601. print("║  💯 Aba Outros simplificada                              ║")
  2602. print("╚═══════════════════════════════════════════════════════════╝")
  2603.  
  2604. Rayfield:Notify({
  2605.     Title = "✅ Script Carregado!",
  2606.     Content = "Pré-história " .. ScriptVersion .. " by NickZScripts\n\n🆕 Modificações aplicadas!",
  2607.     Duration = 5,
  2608.     Image = 4483362458
  2609. })
Advertisement
Add Comment
Please, Sign In to add comment