Nevzyn

Untitled

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