Nevzyn

Untitled

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