Nevzyn

Untitled

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