Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- ╔═══════════════════════════════════════════════════════════╗
- ║ Pré-história - By: NickZScripts ║
- ║ Sistema Modular & Anti-Conflitos ║
- ║ Interface: Rayfield Library ║
- ║ v5.0.2 - FIXED ║
- ╚═══════════════════════════════════════════════════════════╝
- ]]
- --// ========== PROTEÇÃO CONTRA EXECUÇÃO DUPLA ========== //
- if getgenv().PreHistoriaScript and getgenv().PreHistoriaScript.Initialized then
- warn("⚠️ Script já está rodando! Limpando instância antiga...")
- if getgenv().PreHistoriaScript.Cleanup then
- pcall(function() getgenv().PreHistoriaScript.Cleanup() end)
- end
- task.wait(1)
- end
- --// ========== SERVICES ========== //
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local HttpService = game:GetService("HttpService")
- local TweenService = game:GetService("TweenService")
- local UserInputService = game:GetService("UserInputService")
- local TeleportService = game:GetService("TeleportService")
- local CoreGui = game:GetService("CoreGui")
- --// ========== VARIÁVEIS GLOBAIS ========== //
- local LocalPlayer = Players.LocalPlayer
- local ScriptVersion = "5.0.2"
- local Camera = workspace.CurrentCamera
- --// ========== CONFIGURAÇÕES ========== //
- local Config = {
- -- Auto Farm
- AutoFarm = false,
- AutoColeta = false,
- CheckDelay = 0.3,
- DelayBetweenCrystals = 0.1,
- raioDeColeta = 25,
- delayEntreTentativas = 0.25,
- podeExecutar = true,
- -- ESP
- EspMeatActive = false,
- ESP_MIN_SIZE = 35,
- ESP_MAX_SIZE = 65,
- MAX_VISIBLE_DISTANCE = 999999,
- PlayerESP = false,
- PlayerESP_ShowHP = false,
- PlayerESP_TeamCheck = false,
- -- Click Teleport
- ClickTeleportEnabled = false,
- -- Teleports
- SavedTeleports = {},
- LastSpawnPosition = nil,
- -- Patrulha
- PatrulhaPontos = {
- CFrame.new(0, 30, 0),
- CFrame.new(800, 30, 400),
- CFrame.new(-750, 30, -600),
- CFrame.new(450, 30, -1000),
- CFrame.new(-900, 30, 700),
- CFrame.new(0, 30, 1000),
- },
- -- Novos sistemas
- AdminDetector = true,
- AutoPauseOnAdmin = true,
- HitboxExpander = false,
- HitboxSize = 20,
- BloomDetector = true,
- AutoTeleportToBloom = false,
- AntiKick = true,
- FPSBooster = false,
- }
- --// ========== CACHE & ESTATÍSTICAS ========== //
- local DinoLevelCache = {
- value = 0,
- lastUpdate = 0,
- updateInterval = 2
- }
- local Stats_Data = {
- SessionStart = tick(),
- CrystalsCollected = 0,
- MeatsCollected = 0,
- TeleportsUsed = 0,
- AdminsDetected = 0,
- BloomCrystalsFound = 0,
- }
- local Connections = {}
- --// ========== FUNÇÕES DE UTILIDADE ========== //
- local function updateStat(statName, value)
- if Stats_Data[statName] ~= nil then
- Stats_Data[statName] = Stats_Data[statName] + value
- end
- end
- local function getSessionTime()
- local elapsed = tick() - Stats_Data.SessionStart
- local hours = math.floor(elapsed / 3600)
- local minutes = math.floor((elapsed % 3600) / 60)
- local seconds = math.floor(elapsed % 60)
- return string.format("%02d:%02d:%02d", hours, minutes, seconds)
- end
- local function getCharacter()
- return LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
- end
- local function getHumanoidRootPart()
- local char = getCharacter()
- return char and char:FindFirstChild("HumanoidRootPart")
- end
- local function safeConnect(signal, callback)
- local connection = signal:Connect(callback)
- table.insert(Connections, connection)
- return connection
- end
- --// ========== MÓDULO: ADMIN DETECTOR ========== //
- local AdminDetector = (function()
- local Module = {
- _adminList = {},
- _scanning = false,
- _pausedSystems = false,
- }
- local ADMIN_KEYWORDS = {"admin", "mod", "moderator", "owner", "creator", "dev", "developer", "staff"}
- local function isAdmin(player)
- if player == LocalPlayer then return false end
- local name = player.Name:lower()
- local displayName = player.DisplayName:lower()
- for _, keyword in ipairs(ADMIN_KEYWORDS) do
- if name:find(keyword) or displayName:find(keyword) then
- return true, "Username contém: " .. keyword
- end
- end
- if player.Character then
- for _, obj in ipairs(player.Character:GetDescendants()) do
- if obj:IsA("Sparkles") or obj:IsA("Fire") then
- return true, "Efeitos especiais detectados"
- end
- end
- end
- return false
- end
- local function pauseAllSystems()
- if Module._pausedSystems then return end
- Module._pausedSystems = true
- Config.AutoFarm = false
- Config.AutoColeta = false
- print("⚠️ SISTEMAS PAUSADOS - Admin detectado!")
- end
- local function resumeAllSystems()
- if not Module._pausedSystems then return end
- Module._pausedSystems = false
- print("✅ Sistemas retomados")
- end
- local function scanPlayer(player)
- local isAdm, reason = isAdmin(player)
- if isAdm and not Module._adminList[player] then
- Module._adminList[player] = {
- Name = player.Name,
- Reason = reason,
- DetectedAt = tick()
- }
- updateStat("AdminsDetected", 1)
- if Config.AutoPauseOnAdmin then
- pauseAllSystems()
- end
- print("🚨 ADMIN DETECTADO: " .. player.Name)
- end
- end
- function Module.Start()
- if Module._scanning then return end
- Module._scanning = true
- for _, player in ipairs(Players:GetPlayers()) do
- scanPlayer(player)
- end
- safeConnect(Players.PlayerAdded, function(player)
- task.wait(1)
- scanPlayer(player)
- end)
- safeConnect(Players.PlayerRemoving, function(player)
- if Module._adminList[player] then
- Module._adminList[player] = nil
- local hasAdmin = false
- for _, _ in pairs(Module._adminList) do
- hasAdmin = true
- break
- end
- if not hasAdmin and Module._pausedSystems then
- resumeAllSystems()
- end
- end
- end)
- task.spawn(function()
- while Module._scanning do
- task.wait(30)
- for _, player in ipairs(Players:GetPlayers()) do
- scanPlayer(player)
- end
- end
- end)
- print("✅ Admin Detector iniciado")
- end
- function Module.GetAdminCount()
- local count = 0
- for _, _ in pairs(Module._adminList) do
- count = count + 1
- end
- return count
- end
- return Module
- end)()
- --// ========== MÓDULO: SERVER HOP ========== //
- local ServerHop = (function()
- local Module = {_hopping = false}
- local function getServerList()
- local servers = {}
- local cursor = ""
- local placeId = game.PlaceId
- repeat
- local success, result = pcall(function()
- return HttpService:JSONDecode(game:HttpGet(
- "https://games.roblox.com/v1/games/" .. placeId .. "/servers/Public?sortOrder=Asc&limit=100&cursor=" .. cursor
- ))
- end)
- if success and result then
- for _, server in ipairs(result.data) do
- if server.playing < server.maxPlayers and server.id ~= game.JobId then
- table.insert(servers, {
- id = server.id,
- playing = server.playing,
- maxPlayers = server.maxPlayers,
- })
- end
- end
- cursor = result.nextPageCursor or ""
- else
- break
- end
- until cursor == "" or #servers >= 50
- return servers
- end
- function Module.HopToLowPopulation()
- local servers = getServerList()
- if #servers > 0 then
- table.sort(servers, function(a, b) return a.playing < b.playing end)
- local server = servers[1]
- print("✅ Servidor encontrado: " .. server.playing .. "/" .. server.maxPlayers)
- TeleportService:TeleportToPlaceInstance(game.PlaceId, server.id, LocalPlayer)
- else
- TeleportService:Teleport(game.PlaceId, LocalPlayer)
- end
- end
- function Module.Rejoin()
- TeleportService:Teleport(game.PlaceId, LocalPlayer)
- end
- return Module
- end)()
- --// ========== MÓDULO: HITBOX EXPANDER ========== //
- local HitboxExpander = (function()
- local Module = {
- _enabled = false,
- _originalSizes = {},
- _updateLoop = nil,
- }
- local function expandHitbox(character, size)
- if not character then return end
- local hrp = character:FindFirstChild("HumanoidRootPart")
- if not hrp then return end
- if not Module._originalSizes[character] then
- Module._originalSizes[character] = hrp.Size
- end
- hrp.Size = Vector3.new(size, size, size)
- hrp.Transparency = 1
- hrp.CanCollide = false
- hrp.Massless = true
- end
- local function updateAllHitboxes()
- if not Module._enabled then return end
- for _, player in ipairs(Players:GetPlayers()) do
- if player ~= LocalPlayer and player.Character then
- expandHitbox(player.Character, Config.HitboxSize)
- end
- end
- local folders = {
- workspace:FindFirstChild("Dinosaurs"),
- workspace:FindFirstChild("NPCs"),
- workspace:FindFirstChild("Creatures"),
- }
- for _, folder in ipairs(folders) do
- if folder then
- for _, npc in ipairs(folder:GetChildren()) do
- if npc:IsA("Model") then
- expandHitbox(npc, Config.HitboxSize)
- end
- end
- end
- end
- end
- function Module.Enable()
- if Module._enabled then return end
- Module._enabled = true
- Module._updateLoop = safeConnect(RunService.Heartbeat, function()
- updateAllHitboxes()
- end)
- print("✅ Hitbox Expander ativado")
- end
- function Module.Disable()
- Module._enabled = false
- print("❌ Hitbox Expander desativado")
- end
- function Module.SetSize(size)
- Config.HitboxSize = size
- end
- return Module
- end)()
- --// ========== MÓDULO: BLOOM DETECTOR ========== //
- local BloomDetector = (function()
- local Module = {
- _detecting = false,
- _bloomCrystal = nil,
- _lastBloomTime = 0,
- _bloomESP = nil,
- }
- local BLOOM_KEYWORDS = {"bloom", "giant", "huge", "mega"}
- local function isBloomCrystal(obj)
- if not obj or not obj.Parent then return false end
- local name = obj.Name:lower()
- for _, keyword in ipairs(BLOOM_KEYWORDS) do
- if name:find(keyword) then return true end
- end
- if obj:IsA("BasePart") and obj.Size.Magnitude > 50 then
- return true
- end
- if obj:IsA("Model") then
- local part = obj.PrimaryPart
- if part and part.Size.Magnitude > 50 then
- return true
- end
- end
- return false
- end
- local function createBloomESP(crystal)
- if Module._bloomESP then
- pcall(function() Module._bloomESP:Destroy() end)
- end
- local part = crystal:IsA("BasePart") and crystal or crystal.PrimaryPart
- if not part then return end
- local billboard = Instance.new("BillboardGui")
- billboard.Name = "BloomESP"
- billboard.Adornee = part
- billboard.Size = UDim2.new(0, 200, 0, 100)
- billboard.StudsOffset = Vector3.new(0, 15, 0)
- billboard.AlwaysOnTop = true
- billboard.Parent = CoreGui
- local frame = Instance.new("Frame")
- frame.Size = UDim2.new(1, 0, 1, 0)
- frame.BackgroundColor3 = Color3.fromRGB(255, 215, 0)
- frame.BackgroundTransparency = 0.3
- frame.BorderSizePixel = 3
- frame.BorderColor3 = Color3.fromRGB(255, 255, 0)
- frame.Parent = billboard
- local corner = Instance.new("UICorner")
- corner.CornerRadius = UDim.new(0, 10)
- corner.Parent = frame
- local label = Instance.new("TextLabel")
- label.Size = UDim2.new(1, 0, 1, 0)
- label.BackgroundTransparency = 1
- label.Text = "💎 BLOOM CRYSTAL 💎"
- label.TextColor3 = Color3.fromRGB(255, 255, 255)
- label.TextStrokeTransparency = 0
- label.Font = Enum.Font.GothamBold
- label.TextScaled = true
- label.Parent = frame
- Module._bloomESP = billboard
- end
- local function onBloomDetected(crystal)
- Module._bloomCrystal = crystal
- Module._lastBloomTime = tick()
- updateStat("BloomCrystalsFound", 1)
- print("💎 BLOOM CRYSTAL DETECTADO!")
- if Config.BloomDetector then
- createBloomESP(crystal)
- end
- if Config.AutoTeleportToBloom then
- task.wait(1)
- local pos = crystal:IsA("BasePart") and crystal.Position or crystal.PrimaryPart.Position
- local root = getHumanoidRootPart()
- if root then
- root.CFrame = CFrame.new(pos + Vector3.new(0, 10, 0))
- end
- end
- end
- function Module.Start()
- if Module._detecting then return end
- Module._detecting = true
- for _, obj in ipairs(workspace:GetDescendants()) do
- if isBloomCrystal(obj) then
- onBloomDetected(obj)
- break
- end
- end
- safeConnect(workspace.DescendantAdded, function(obj)
- if not Module._detecting then return end
- task.wait(0.5)
- if isBloomCrystal(obj) then
- onBloomDetected(obj)
- end
- end)
- print("✅ Bloom Detector iniciado")
- end
- function Module.Stop()
- Module._detecting = false
- if Module._bloomESP then
- pcall(function() Module._bloomESP:Destroy() end)
- end
- end
- function Module.GetBloomCrystal()
- return Module._bloomCrystal
- end
- function Module.GetTimeSinceLastBloom()
- if Module._lastBloomTime == 0 then return "Nunca" end
- local elapsed = tick() - Module._lastBloomTime
- return math.floor(elapsed / 60) .. " min atrás"
- end
- return Module
- end)()
- --// ========== MÓDULO: ANTI-KICK ========== //
- local AntiKick = (function()
- local Module = {_enabled = false}
- function Module.Enable()
- if Module._enabled then return end
- Module._enabled = true
- -- Anti-AFK
- pcall(function()
- local VirtualUser = game:GetService("VirtualUser")
- safeConnect(LocalPlayer.Idled, function()
- VirtualUser:CaptureController()
- VirtualUser:ClickButton2(Vector2.new())
- end)
- end)
- -- Anti-Kick
- local mt = getrawmetatable(game)
- local oldNamecall = mt.__namecall
- setreadonly(mt, false)
- mt.__namecall = newcclosure(function(self, ...)
- local method = getnamecallmethod()
- if method == "Kick" then
- print("⚠️ Tentativa de kick bloqueada!")
- return nil
- end
- return oldNamecall(self, ...)
- end)
- setreadonly(mt, true)
- print("✅ Anti-Kick/Anti-AFK ativado")
- end
- function Module.Disable()
- Module._enabled = false
- end
- return Module
- end)()
- --// ========== MÓDULO: OPTIMIZER ========== //
- local Optimizer = (function()
- local Module = {_enabled = false, _originalSettings = {}}
- function Module.Enable()
- if Module._enabled then return end
- Module._enabled = true
- local lighting = game:GetService("Lighting")
- Module._originalSettings.GlobalShadows = lighting.GlobalShadows
- lighting.GlobalShadows = false
- for _, effect in ipairs(lighting:GetChildren()) do
- if effect:IsA("PostEffect") then
- effect.Enabled = false
- end
- end
- print("✅ FPS Booster ativado")
- end
- function Module.Disable()
- Module._enabled = false
- local lighting = game:GetService("Lighting")
- if Module._originalSettings.GlobalShadows ~= nil then
- lighting.GlobalShadows = Module._originalSettings.GlobalShadows
- end
- end
- return Module
- end)()
- --// ========== MÓDULO: CLICK TELEPORT ========== //
- local ClickTeleportModule = (function()
- local Module = {
- _enabled = false,
- _uiVisible = false,
- _screenGui = nil,
- _connections = {},
- }
- local Mouse = LocalPlayer:GetMouse()
- local ClickState = {
- StartTime = 0,
- StartPosition = nil,
- IsValid = false,
- }
- local function getMouseHit()
- local unitRay = Camera:ScreenPointToRay(Mouse.X, Mouse.Y)
- local raycastParams = RaycastParams.new()
- raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
- raycastParams.FilterDescendantsInstances = {LocalPlayer.Character}
- return workspace:Raycast(unitRay.Origin, unitRay.Direction * 10000, raycastParams)
- end
- local function teleportToPosition(position)
- local root = getHumanoidRootPart()
- if not root then return false end
- local currentPosition = root.Position
- local teleportPos = position + Vector3.new(0, 3, 0)
- local directionVector = (position - currentPosition)
- local horizontalDirection = Vector3.new(directionVector.X, 0, directionVector.Z)
- local lookDirection = horizontalDirection.Unit
- root.CFrame = CFrame.new(teleportPos, teleportPos + lookDirection)
- updateStat("TeleportsUsed", 1)
- return true
- end
- local function isValidClick(startPos, endPos, duration)
- if duration > 0.3 then return false end
- return (endPos - startPos).Magnitude <= 10
- end
- local function createUI()
- if Module._screenGui then
- pcall(function() Module._screenGui:Destroy() end)
- end
- Module._screenGui = Instance.new("ScreenGui")
- Module._screenGui.Name = "ClickTeleportUI"
- Module._screenGui.ResetOnSpawn = false
- Module._screenGui.Parent = CoreGui
- local frame = Instance.new("Frame")
- frame.Size = UDim2.new(0, 250, 0, 150)
- frame.Position = UDim2.new(0.5, -125, 0.5, -75)
- frame.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
- frame.BorderSizePixel = 0
- frame.Active = true
- frame.Draggable = true
- frame.Parent = Module._screenGui
- local corner = Instance.new("UICorner")
- corner.CornerRadius = UDim.new(0, 12)
- corner.Parent = frame
- local title = Instance.new("TextLabel")
- title.Size = UDim2.new(1, -100, 0, 40)
- title.Position = UDim2.new(0, 10, 0, 5)
- title.BackgroundTransparency = 1
- title.Text = "🎯 Click Teleport"
- title.TextColor3 = Color3.fromRGB(255, 255, 255)
- title.TextSize = 16
- title.Font = Enum.Font.GothamBold
- title.TextXAlignment = Enum.TextXAlignment.Left
- title.Parent = frame
- local closeBtn = Instance.new("TextButton")
- closeBtn.Size = UDim2.new(0, 30, 0, 30)
- closeBtn.Position = UDim2.new(1, -35, 0, 5)
- closeBtn.BackgroundColor3 = Color3.fromRGB(255, 90, 90)
- closeBtn.Text = "✕"
- closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
- closeBtn.TextSize = 18
- closeBtn.Font = Enum.Font.GothamBold
- closeBtn.Parent = frame
- local closeCorner = Instance.new("UICorner")
- closeCorner.CornerRadius = UDim.new(0, 8)
- closeCorner.Parent = closeBtn
- local toggleBtn = Instance.new("TextButton")
- toggleBtn.Size = UDim2.new(1, -20, 0, 45)
- toggleBtn.Position = UDim2.new(0, 10, 0, 50)
- toggleBtn.BackgroundColor3 = Color3.fromRGB(255, 90, 90)
- toggleBtn.Text = "🔴 DESATIVADO"
- toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
- toggleBtn.TextSize = 14
- toggleBtn.Font = Enum.Font.GothamBold
- toggleBtn.Parent = frame
- local toggleCorner = Instance.new("UICorner")
- toggleCorner.CornerRadius = UDim.new(0, 10)
- toggleCorner.Parent = toggleBtn
- local statusLabel = Instance.new("TextLabel")
- statusLabel.Name = "StatusLabel"
- statusLabel.Size = UDim2.new(1, -20, 0, 40)
- statusLabel.Position = UDim2.new(0, 10, 0, 100)
- statusLabel.BackgroundTransparency = 1
- statusLabel.Text = "Clique para teleportar"
- statusLabel.TextColor3 = Color3.fromRGB(180, 180, 200)
- statusLabel.TextSize = 12
- statusLabel.Font = Enum.Font.Gotham
- statusLabel.TextWrapped = true
- statusLabel.Parent = frame
- -- Eventos
- toggleBtn.MouseButton1Click:Connect(function()
- Module._enabled = not Module._enabled
- if Module._enabled then
- toggleBtn.Text = "🟢 ATIVADO"
- toggleBtn.BackgroundColor3 = Color3.fromRGB(90, 255, 140)
- statusLabel.Text = "Clique para teleportar"
- else
- toggleBtn.Text = "🔴 DESATIVADO"
- toggleBtn.BackgroundColor3 = Color3.fromRGB(255, 90, 90)
- statusLabel.Text = "Teleporte desativado"
- end
- end)
- closeBtn.MouseButton1Click:Connect(function()
- Module._enabled = false
- pcall(function() Module._screenGui:Destroy() end)
- Module._screenGui = nil
- Module._uiVisible = false
- Config.ClickTeleportEnabled = false
- end)
- Module._uiVisible = true
- end
- function Module.Init()
- -- Detecta cliques
- table.insert(Module._connections, UserInputService.InputBegan:Connect(function(input, gameProcessed)
- if gameProcessed or not Module._enabled then return end
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- ClickState.StartTime = tick()
- ClickState.StartPosition = Vector2.new(Mouse.X, Mouse.Y)
- ClickState.IsValid = true
- end
- end))
- table.insert(Module._connections, UserInputService.InputEnded:Connect(function(input, gameProcessed)
- if gameProcessed or not Module._enabled or not ClickState.IsValid then return end
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- local duration = tick() - ClickState.StartTime
- local endPos = Vector2.new(Mouse.X, Mouse.Y)
- if isValidClick(ClickState.StartPosition, endPos, duration) then
- local result = getMouseHit()
- if result then
- teleportToPosition(result.Position)
- end
- end
- ClickState.IsValid = false
- end
- end))
- end
- function Module.Toggle(state)
- Config.ClickTeleportEnabled = state
- if state and not Module._uiVisible then
- createUI()
- elseif not state and Module._screenGui then
- pcall(function() Module._screenGui:Destroy() end)
- Module._screenGui = nil
- Module._uiVisible = false
- end
- end
- function Module.Cleanup()
- for _, conn in ipairs(Module._connections) do
- if conn and conn.Connected then
- conn:Disconnect()
- end
- end
- Module._connections = {}
- if Module._screenGui then
- pcall(function() Module._screenGui:Destroy() end)
- end
- end
- return Module
- end)()
- ClickTeleportModule.Init()
- --// ========== MÓDULO: ESP DE CARNES ========== //
- local MeatESP = (function()
- local Module = {_activeESPs = {}, _updateLoop = nil}
- local function isMeatObject(obj)
- if not obj then return false, nil end
- if obj:IsA("ProximityPrompt") and obj.Enabled then
- local action = (obj.ActionText or ""):lower()
- local foodActions = {"coma", "eat", "pegar", "pick"}
- for _, foodAction in ipairs(foodActions) do
- if action:find(foodAction) then
- local parent = obj.Parent
- if parent and parent:IsA("BasePart") then
- return true, parent
- end
- end
- end
- end
- if obj:IsA("Model") or obj:IsA("BasePart") then
- local name = (obj.Name or ""):lower()
- local meatWords = {"meat", "carne", "beef", "steak"}
- for _, word in ipairs(meatWords) do
- if name:find(word) then
- if obj:IsA("Model") then
- local part = obj.PrimaryPart or obj:FindFirstChildWhichIsA("BasePart")
- return part ~= nil, part
- else
- return true, obj
- end
- end
- end
- end
- return false, nil
- end
- local function createMeatESP(part)
- if not part or not part:IsA("BasePart") then return end
- local id = tostring(part:GetDebugId())
- if Module._activeESPs[id] then return end
- local esp = Instance.new("BillboardGui")
- esp.Name = "MeatESP"
- esp.Adornee = part
- esp.Size = UDim2.new(0, 60, 0, 25)
- esp.StudsOffset = Vector3.new(0, 3, 0)
- esp.AlwaysOnTop = true
- esp.Parent = workspace
- local frame = Instance.new("Frame", esp)
- frame.Size = UDim2.new(1, 0, 1, 0)
- frame.BackgroundColor3 = Color3.fromRGB(255, 80, 80)
- frame.BackgroundTransparency = 0.4
- local corner = Instance.new("UICorner", frame)
- corner.CornerRadius = UDim.new(0, 6)
- local label = Instance.new("TextLabel", frame)
- label.Size = UDim2.new(1, 0, 1, 0)
- label.BackgroundTransparency = 1
- label.Text = "🥩"
- label.TextColor3 = Color3.fromRGB(255, 255, 255)
- label.TextScaled = true
- label.Font = Enum.Font.SourceSansBold
- Module._activeESPs[id] = {gui = esp, part = part}
- return true
- end
- function Module.Start()
- for _, obj in ipairs(workspace:GetDescendants()) do
- local isMeat, part = isMeatObject(obj)
- if isMeat and part then
- createMeatESP(part)
- end
- end
- safeConnect(workspace.DescendantAdded, function(obj)
- if not Config.EspMeatActive then return end
- task.wait(0.1)
- local isMeat, part = isMeatObject(obj)
- if isMeat and part then
- createMeatESP(part)
- end
- end)
- end
- function Module.Stop()
- for id, data in pairs(Module._activeESPs) do
- if data.gui then
- pcall(function() data.gui:Destroy() end)
- end
- end
- Module._activeESPs = {}
- end
- function Module.FindNearestMeat()
- local root = getHumanoidRootPart()
- if not root then return nil end
- local nearestMeat = nil
- local nearestDistance = math.huge
- for _, obj in ipairs(workspace:GetDescendants()) do
- local isMeat, part = isMeatObject(obj)
- if isMeat and part and part.Parent then
- local distance = (part.Position - root.Position).Magnitude
- if distance < nearestDistance then
- nearestDistance = distance
- nearestMeat = part
- end
- end
- end
- return nearestMeat, nearestDistance
- end
- return Module
- end)()
- --// ========== MÓDULO: ESP DE JOGADORES ========== //
- local PlayerESP = (function()
- local Module = {_playerData = {}}
- local function shouldShowESP(player)
- if not Config.PlayerESP then return false end
- if Config.PlayerESP_TeamCheck then
- return LocalPlayer.Team and player.Team ~= LocalPlayer.Team
- end
- return true
- end
- local function setupPlayerESP(player, character)
- if player == LocalPlayer then return end
- if not character then return end
- local highlight = Instance.new("Highlight")
- highlight.Name = "PlayerESP"
- highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
- highlight.FillTransparency = 0.5
- highlight.OutlineTransparency = 0
- highlight.FillColor = Color3.fromRGB(255, 100, 100)
- highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
- highlight.Adornee = character
- highlight.Parent = character
- highlight.Enabled = shouldShowESP(player)
- Module._playerData[player] = {highlight = highlight}
- end
- function Module.Start()
- for _, player in ipairs(Players:GetPlayers()) do
- if player.Character then
- setupPlayerESP(player, player.Character)
- end
- safeConnect(player.CharacterAdded, function(char)
- task.wait(0.5)
- setupPlayerESP(player, char)
- end)
- end
- safeConnect(Players.PlayerAdded, function(player)
- safeConnect(player.CharacterAdded, function(char)
- task.wait(0.5)
- setupPlayerESP(player, char)
- end)
- end)
- end
- function Module.UpdateVisibility()
- for player, data in pairs(Module._playerData) do
- if data.highlight then
- data.highlight.Enabled = shouldShowESP(player)
- end
- end
- end
- return Module
- end)()
- --// ========== SISTEMA DE NÍVEL DO DINO ========== //
- local function getDinoLevelSilent()
- local now = tick()
- if (now - DinoLevelCache.lastUpdate) < DinoLevelCache.updateInterval then
- return DinoLevelCache.value
- end
- local leaderstats = LocalPlayer:FindFirstChild("leaderstats")
- if leaderstats then
- for _, stat in ipairs(leaderstats:GetChildren()) do
- local name = stat.Name:lower()
- if name:find("level") or name:find("lvl") then
- if stat:IsA("IntValue") or stat:IsA("NumberValue") then
- local val = tonumber(stat.Value) or 0
- if val > 0 then
- DinoLevelCache.value = val
- DinoLevelCache.lastUpdate = now
- return val
- end
- end
- end
- end
- end
- DinoLevelCache.lastUpdate = now
- return DinoLevelCache.value
- end
- --// ========== SISTEMA DE CRISTAIS ========== //
- local prioridadeMap = {legendary = 1, epic = 2, rare = 3, bloom = 0, crystal = 4}
- local function getCrystalRank(name)
- name = name:lower()
- for key, rank in pairs(prioridadeMap) do
- if name:find(key) then return rank end
- end
- return 5
- end
- local function getSortedCrystals()
- local found = {}
- for _, obj in ipairs(workspace:GetDescendants()) do
- if obj:IsA("BasePart") and obj.Parent and obj.Parent:IsA("Model") then
- local rank = getCrystalRank(obj.Parent.Name)
- if rank < 5 then
- table.insert(found, {part = obj, rank = rank})
- end
- end
- end
- table.sort(found, function(a, b) return a.rank < b.rank end)
- local parts = {}
- for _, entry in ipairs(found) do
- table.insert(parts, entry.part)
- end
- return parts
- end
- --// ========== FUNÇÕES DE TELEPORTE ========== //
- local function teleportTo(cf)
- local root = getHumanoidRootPart()
- if root and root.Parent then
- root.Parent:SetPrimaryPartCFrame(cf)
- end
- end
- local function teleportToCrystal(c)
- local root = getHumanoidRootPart()
- if root and c then
- root.Parent:SetPrimaryPartCFrame(CFrame.new(c.Position + Vector3.new(0, 4.5, 0)))
- end
- end
- local function safeTeleport(targetCFrame, locationName)
- local root = getHumanoidRootPart()
- if not root then
- return false
- end
- updateStat("TeleportsUsed", 1)
- root.CFrame = targetCFrame
- return true
- end
- --// ========== DETECTAR SPAWN ========== //
- task.spawn(function()
- local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
- local root = char:WaitForChild("HumanoidRootPart", 10)
- if root then
- task.wait(2)
- Config.LastSpawnPosition = root.CFrame
- end
- safeConnect(LocalPlayer.CharacterAdded, function(newChar)
- task.wait(2)
- local newRoot = newChar:FindFirstChild("HumanoidRootPart")
- if newRoot then
- Config.LastSpawnPosition = newRoot.CFrame
- end
- end)
- end)
- --// ========== CARREGAR RAYFIELD ========== //
- local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
- --// ========== CRIAR WINDOW ========== //
- local Window = Rayfield:CreateWindow({
- Name = "🦖 Pré-história v" .. ScriptVersion .. " - By: NickZScripts",
- Icon = 0,
- LoadingTitle = "Pré-história",
- LoadingSubtitle = "By: NickZScripts",
- Theme = "Default",
- DisableRayfieldPrompts = false,
- DisableBuildWarnings = false,
- ConfigurationSaving = {
- Enabled = true,
- FolderName = nil,
- FileName = "PreHistoria_v5"
- },
- Discord = {
- Enabled = false,
- },
- KeySystem = false,
- })
- --// ========== TAB: MENU ========== //
- local MenuTab = Window:CreateTab("🏠 Menu", 4483362458)
- MenuTab:CreateParagraph({
- Title = "📜 Script Info",
- Content = "Versão: v" .. ScriptVersion .. "\nStatus: ✅ Operacional\nOtimizado e Estável"
- })
- MenuTab:CreateParagraph({
- Title = "👤 Jogador",
- Content = "Nome: " .. LocalPlayer.Name .. "\nDisplay: " .. LocalPlayer.DisplayName
- })
- local PlayersCountLabel = MenuTab:CreateLabel("👥 Players: 0/0")
- local function updatePlayerCount()
- local current = #Players:GetPlayers()
- local max = Players.MaxPlayers
- PlayersCountLabel:Set(string.format("👥 Players: %d/%d", current, max))
- end
- updatePlayerCount()
- safeConnect(Players.PlayerAdded, function() task.wait(0.1) updatePlayerCount() end)
- safeConnect(Players.PlayerRemoving, function() task.wait(0.1) updatePlayerCount() end)
- local StatsSection = MenuTab:CreateSection("📈 Estatísticas")
- local SessionTimeLabel = MenuTab:CreateLabel("⏱️ Tempo: 00:00:00")
- local DinoLevelLabel = MenuTab:CreateLabel("🦖 Nível: 0/60")
- local CrystalsLabel = MenuTab:CreateLabel("💎 Cristais: 0")
- local TeleportsLabel = MenuTab:CreateLabel("🚀 Teleportes: 0")
- task.spawn(function()
- while true do
- task.wait(2)
- SessionTimeLabel:Set("⏱️ Tempo: " .. getSessionTime())
- DinoLevelLabel:Set(string.format("🦖 Nível: %d/60", getDinoLevelSilent()))
- CrystalsLabel:Set("💎 Cristais: " .. Stats_Data.CrystalsCollected)
- TeleportsLabel:Set("🚀 Teleportes: " .. Stats_Data.TeleportsUsed)
- end
- end)
- local SecuritySection = MenuTab:CreateSection("🛡️ Segurança")
- local AdminCountLabel = MenuTab:CreateLabel("👮 Admins: 0")
- task.spawn(function()
- while true do
- task.wait(5)
- AdminCountLabel:Set("👮 Admins: " .. AdminDetector.GetAdminCount())
- end
- end)
- --// ========== TAB: AUTO FARM ========== //
- local AutoFarmTab = Window:CreateTab("⚡ Auto Farm", 4483362458)
- local FarmSection = AutoFarmTab:CreateSection("💎 Farm de Cristais")
- local AutoFarmToggle = AutoFarmTab:CreateToggle({
- Name = "Auto Farm Cristais",
- CurrentValue = false,
- Flag = "AutoFarm",
- Callback = function(Value)
- Config.AutoFarm = Value
- Rayfield:Notify({
- Title = Value and "✅ Ativado" or "❌ Desativado",
- Content = "Auto Farm " .. (Value and "ligado" or "desligado"),
- Duration = 1,
- Image = 4483362458
- })
- end,
- })
- local ColetaSection = AutoFarmTab:CreateSection("🔄 Auto Coleta")
- local AutoColetaToggle = AutoFarmTab:CreateToggle({
- Name = "Auto Coleta",
- CurrentValue = false,
- Flag = "AutoColeta",
- Callback = function(Value)
- Config.AutoColeta = Value
- Rayfield:Notify({
- Title = Value and "✅ Ativado" or "❌ Desativado",
- Content = "Auto Coleta " .. (Value and "ligado" or "desligado"),
- Duration = 1,
- Image = 4483362458
- })
- end,
- })
- --// ========== TAB: ESP ========== //
- local EspTab = Window:CreateTab("👁️ ESP", 4483362458)
- local EspJogadoresSection = EspTab:CreateSection("👥 ESP de Jogadores")
- local EspJogadoresToggle = EspTab:CreateToggle({
- Name = "ESP de Jogadores",
- CurrentValue = false,
- Flag = "PlayerESP",
- Callback = function(Value)
- Config.PlayerESP = Value
- if Value then
- PlayerESP.Start()
- end
- PlayerESP.UpdateVisibility()
- end,
- })
- local EspTeamCheckToggle = EspTab:CreateToggle({
- Name = "TeamCheck (Só Inimigos)",
- CurrentValue = false,
- Flag = "PlayerESP_TeamCheck",
- Callback = function(Value)
- Config.PlayerESP_TeamCheck = Value
- PlayerESP.UpdateVisibility()
- end,
- })
- local EspCarnesSection = EspTab:CreateSection("🥩 ESP de Carnes")
- local EspCarnesToggle = EspTab:CreateToggle({
- Name = "ESP de Carnes",
- CurrentValue = false,
- Flag = "MeatESP",
- Callback = function(Value)
- Config.EspMeatActive = Value
- if Value then
- MeatESP.Start()
- else
- MeatESP.Stop()
- end
- end,
- })
- --// ========== TAB: TELEPORT ========== //
- local TeleportTab = Window:CreateTab("🚀 Teleport", 4483362458)
- local TeleportSection = TeleportTab:CreateSection("🍖 Teleportes Rápidos")
- TeleportTab:CreateButton({
- Name = "Teleportar para Carne",
- Callback = function()
- local meat, _ = MeatESP.FindNearestMeat()
- if meat then
- safeTeleport(CFrame.new(meat.Position + Vector3.new(0, 3, 0)), "Carne")
- updateStat("MeatsCollected", 1)
- Rayfield:Notify({
- Title = "✅ Teleportado",
- Content = "Teleportado para carne!",
- Duration = 1,
- Image = 4483362458
- })
- else
- Rayfield:Notify({
- Title = "❌ Erro",
- Content = "Nenhuma carne encontrada!",
- Duration = 1,
- Image = 4483362458
- })
- end
- end,
- })
- local SpawnSection = TeleportTab:CreateSection("🏠 Spawn")
- TeleportTab:CreateButton({
- Name = "Voltar ao Spawn",
- Callback = function()
- if Config.LastSpawnPosition then
- safeTeleport(Config.LastSpawnPosition, "Spawn")
- Rayfield:Notify({
- Title = "✅ Teleportado",
- Content = "Voltou ao spawn!",
- Duration = 1,
- Image = 4483362458
- })
- else
- Rayfield:Notify({
- Title = "❌ Erro",
- Content = "Spawn não detectado!",
- Duration = 1,
- Image = 4483362458
- })
- end
- end,
- })
- --// ========== TAB: SEGURANÇA ========== //
- local SecurityTab = Window:CreateTab("🛡️ Segurança", 4483362458)
- local AdminSection = SecurityTab:CreateSection("👮 Admin Detector")
- SecurityTab:CreateToggle({
- Name = "Admin Detector",
- CurrentValue = Config.AdminDetector,
- Flag = "AdminDetector",
- Callback = function(Value)
- Config.AdminDetector = Value
- end,
- })
- SecurityTab:CreateToggle({
- Name = "Auto-Pausar ao Detectar Admin",
- CurrentValue = Config.AutoPauseOnAdmin,
- Flag = "AutoPauseOnAdmin",
- Callback = function(Value)
- Config.AutoPauseOnAdmin = Value
- end,
- })
- local AntiKickSection = SecurityTab:CreateSection("🛡️ Anti-Kick")
- SecurityTab:CreateToggle({
- Name = "Anti-Kick & Anti-AFK",
- CurrentValue = Config.AntiKick,
- Flag = "AntiKick",
- Callback = function(Value)
- Config.AntiKick = Value
- if Value then
- AntiKick.Enable()
- else
- AntiKick.Disable()
- end
- end,
- })
- local ServerHopSection = SecurityTab:CreateSection("🌐 Server Hop")
- SecurityTab:CreateButton({
- Name = "Server Hop (Servidor Vazio)",
- Callback = function()
- Rayfield:Notify({
- Title = "🌐 Server Hop",
- Content = "Procurando servidor...",
- Duration = 2,
- Image = 4483362458
- })
- task.wait(1)
- ServerHop.HopToLowPopulation()
- end,
- })
- SecurityTab:CreateButton({
- Name = "Rejoin (Mesmo Servidor)",
- Callback = function()
- Rayfield:Notify({
- Title = "🔄 Rejoin",
- Content = "Reconectando...",
- Duration = 1,
- Image = 4483362458
- })
- task.wait(0.5)
- ServerHop.Rejoin()
- end,
- })
- --// ========== TAB: COMBAT ========== //
- local CombatTab = Window:CreateTab("⚔️ Combat", 4483362458)
- local HitboxSection = CombatTab:CreateSection("🎯 Hit
Advertisement
Add Comment
Please, Sign In to add comment