Nevzyn

Untitled

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