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 ║
- ║ MEGA UPDATE v5.0.0 ║
- ╚═══════════════════════════════════════════════════════════╝
- 🆕 NOVIDADES v5.0.0:
- ✅ Admin Detector Avançado
- ✅ Server Hop Inteligente
- ✅ Hitbox Expander
- ✅ Bloom Crystal Detector
- ✅ Anti-Kick/Anti-Lag Robusto
- ✅ Otimizações Extremas
- ✅ Estatísticas Completas
- ✅ Auto Update System
- ]]
- --// ========== SERVICES ========== //
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local HttpService = game:GetService("HttpService")
- local ReplicatedStorage = game:GetService("ReplicatedStorage")
- local Teams = game:GetService("Teams")
- local TweenService = game:GetService("TweenService")
- local UserInputService = game:GetService("UserInputService")
- local TeleportService = game:GetService("TeleportService")
- local CoreGui = game:GetService("CoreGui")
- local Stats = game:GetService("Stats")
- --// ========== VARIÁVEIS GLOBAIS ========== //
- local LocalPlayer = Players.LocalPlayer
- local ScriptVersion = "5.0.0"
- local LastSpawnPosition = nil
- local Camera = workspace.CurrentCamera
- local ActiveTeleportConnection = nil
- --// ========== CONFIGURAÇÕES GLOBAIS ========== //
- local Config = {
- -- Auto Farm
- AutoFarm = false,
- AutoColeta = false,
- CheckDelay = 0.3,
- DelayBetweenCrystals = 0.1,
- raioDeColeta = 25,
- delayEntreTentativas = 0.25,
- podeExecutar = true,
- -- ESP de Carnes
- EspMeatActive = false,
- ESP_MIN_SIZE = 35,
- ESP_MAX_SIZE = 65,
- ESP_UPDATE_RATE = 0.1,
- MAX_VISIBLE_DISTANCE = 999999,
- -- ESP de Jogadores
- PlayerESP = false,
- PlayerESP_ShowHP = false,
- PlayerESP_TeamCheck = false,
- -- Click Teleport
- ClickTeleportEnabled = false,
- -- Teleports Salvos
- SavedTeleports = {},
- -- 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,
- ServerHop = false,
- HitboxExpander = false,
- HitboxSize = 20,
- BloomDetector = true,
- AutoTeleportToBloom = false,
- AntiKick = true,
- FPSBooster = true,
- }
- --// ========== CACHE DE NÍVEL ========== //
- local DinoLevelCache = {
- value = 0,
- lastUpdate = 0,
- updateInterval = 2
- }
- --// ========== 📊 SISTEMA DE ESTATÍSTICAS ========== //
- local Stats_Data = {
- SessionStart = tick(),
- CrystalsCollected = 0,
- MeatsCollected = 0,
- TeleportsUsed = 0,
- DeathsAvoided = 0,
- AdminsDetected = 0,
- BloomCrystalsFound = 0,
- LastXP = 0,
- CurrentXP = 0,
- XPGained = 0,
- }
- 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 getCrystalsPerHour()
- local elapsed = (tick() - Stats_Data.SessionStart) / 3600
- if elapsed > 0 then
- return math.floor(Stats_Data.CrystalsCollected / elapsed)
- end
- return 0
- end
- local function getXPPerHour()
- local elapsed = (tick() - Stats_Data.SessionStart) / 3600
- if elapsed > 0 then
- return math.floor(Stats_Data.XPGained / elapsed)
- end
- return 0
- end
- --// ========== 🛡️ MÓDULO: ADMIN DETECTOR AVANÇADO ========== //
- local AdminDetector = (function()
- local _adminList = {}
- local _detectionMethods = {}
- local _scanning = false
- local _pausedSystems = false
- -- Lista de tags/grupos comuns de admins
- local ADMIN_KEYWORDS = {
- "admin", "mod", "moderator", "owner", "creator",
- "dev", "developer", "staff", "manager"
- }
- local ADMIN_GROUPS = {
- -- Adicione IDs de grupos de admin conhecidos aqui
- -- Ex: 1234567, 7654321
- }
- -- Métodos de detecção
- local function checkUsername(player)
- 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/DisplayName contém: " .. keyword
- end
- end
- return false
- end
- local function checkGroupRank(player)
- for _, groupId in ipairs(ADMIN_GROUPS) do
- local success, rank = pcall(function()
- return player:GetRankInGroup(groupId)
- end)
- if success and rank > 0 then
- return true, "Membro do grupo: " .. groupId .. " (Rank: " .. rank .. ")"
- end
- end
- return false
- end
- local function checkCharacterAppearance(player)
- if not player.Character then return false end
- -- Detecta "Sparkles" ou "Fire" (comum em admins)
- for _, obj in ipairs(player.Character:GetDescendants()) do
- if obj:IsA("Sparkles") or obj:IsA("Fire") or obj:IsA("PointLight") then
- return true, "Efeitos especiais detectados"
- end
- end
- return false
- end
- local function checkTools(player)
- if not player.Character then return false end
- local backpack = player:FindFirstChild("Backpack")
- if backpack then
- for _, tool in ipairs(backpack:GetChildren()) do
- if tool:IsA("Tool") then
- local toolName = tool.Name:lower()
- for _, keyword in ipairs(ADMIN_KEYWORDS) do
- if toolName:find(keyword) or toolName:find("ban") or toolName:find("kick") then
- return true, "Tool de admin detectada: " .. tool.Name
- end
- end
- end
- end
- end
- return false
- end
- local function checkPlayerList(player)
- -- Verifica se o player tem ícone de admin na lista de players
- local playerGui = LocalPlayer:FindFirstChild("PlayerGui")
- if playerGui then
- local playerList = playerGui:FindFirstChild("PlayerList")
- if playerList then
- -- Lógica personalizada dependendo do jogo
- -- Alguns jogos mostram ícones especiais para admins
- end
- end
- return false
- end
- -- Adiciona métodos de detecção
- table.insert(_detectionMethods, checkUsername)
- table.insert(_detectionMethods, checkGroupRank)
- table.insert(_detectionMethods, checkCharacterAppearance)
- table.insert(_detectionMethods, checkTools)
- local function isAdmin(player)
- if player == LocalPlayer then return false end
- for _, method in ipairs(_detectionMethods) do
- local isAdm, reason = method(player)
- if isAdm then
- return true, reason
- end
- end
- return false
- end
- local function pauseAllSystems()
- if _pausedSystems then return end
- _pausedSystems = true
- Config.AutoFarm = false
- Config.AutoColeta = false
- Config.EspMeatActive = false
- Config.PlayerESP = false
- print("⚠️ SISTEMAS PAUSADOS - Admin detectado!")
- end
- local function resumeAllSystems()
- if not _pausedSystems then return end
- _pausedSystems = false
- print("✅ Sistemas retomados - Admin saiu")
- end
- local function scanPlayer(player)
- local isAdm, reason = isAdmin(player)
- if isAdm then
- if not _adminList[player] then
- _adminList[player] = {
- Name = player.Name,
- DisplayName = player.DisplayName,
- UserId = player.UserId,
- Reason = reason,
- DetectedAt = tick()
- }
- updateStat("AdminsDetected", 1)
- -- Notificação crítica
- if Config.AdminDetector then
- local Rayfield = getgenv().RayfieldInstance
- if Rayfield then
- Rayfield:Notify({
- Title = "🚨 ADMIN DETECTADO!",
- Content = player.Name .. "\n" .. reason,
- Duration = 10,
- Image = 4483362458
- })
- end
- end
- -- Pausa automática
- if Config.AutoPauseOnAdmin then
- pauseAllSystems()
- end
- print("╔════════════════════════════════════════╗")
- print("║ 🚨 ADMIN DETECTADO NO SERVIDOR ║")
- print("╠════════════════════════════════════════╣")
- print("║ Nome: " .. player.Name)
- print("║ Display: " .. player.DisplayName)
- print("║ ID: " .. player.UserId)
- print("║ Motivo: " .. reason)
- print("╚════════════════════════════════════════╝")
- end
- end
- end
- local function scanAllPlayers()
- for _, player in ipairs(Players:GetPlayers()) do
- scanPlayer(player)
- end
- -- Se não houver admins, retomar sistemas
- local hasAdmin = false
- for _, _ in pairs(_adminList) do
- hasAdmin = true
- break
- end
- if not hasAdmin and _pausedSystems then
- resumeAllSystems()
- end
- end
- local function startScanning()
- if _scanning then return end
- _scanning = true
- -- Scan inicial
- scanAllPlayers()
- -- Monitor novos players
- Players.PlayerAdded:Connect(function(player)
- task.wait(1) -- Aguarda carregar
- scanPlayer(player)
- end)
- Players.PlayerRemoving:Connect(function(player)
- if _adminList[player] then
- print("✅ Admin saiu: " .. player.Name)
- _adminList[player] = nil
- -- Verifica se ainda há admins
- local hasAdmin = false
- for _, _ in pairs(_adminList) do
- hasAdmin = true
- break
- end
- if not hasAdmin and _pausedSystems then
- resumeAllSystems()
- end
- end
- end)
- -- Re-scan periódico (a cada 30 segundos)
- task.spawn(function()
- while _scanning do
- task.wait(30)
- scanAllPlayers()
- end
- end)
- print("✅ Admin Detector iniciado")
- end
- return {
- Start = startScanning,
- IsAdmin = isAdmin,
- GetAdminList = function() return _adminList end,
- GetAdminCount = function()
- local count = 0
- for _, _ in pairs(_adminList) do count = count + 1 end
- return count
- end
- }
- end)()
- --// ========== 🌐 MÓDULO: SERVER HOP INTELIGENTE ========== //
- local ServerHop = (function()
- local _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,
- ping = server.ping or 0
- })
- end
- end
- cursor = result.nextPageCursor or ""
- else
- break
- end
- until cursor == "" or #servers >= 50
- return servers
- end
- local function findBestServer(filters)
- filters = filters or {}
- local minPlayers = filters.minPlayers or 0
- local maxPlayers = filters.maxPlayers or 50
- local maxPing = filters.maxPing or 300
- local servers = getServerList()
- local bestServer = nil
- for _, server in ipairs(servers) do
- if server.playing >= minPlayers and
- server.playing <= maxPlayers and
- server.ping <= maxPing then
- if not bestServer or server.playing < bestServer.playing then
- bestServer = server
- end
- end
- end
- return bestServer
- end
- local function hop(serverId)
- if _hopping then return false end
- _hopping = true
- print("🌐 Iniciando Server Hop...")
- local success, err = pcall(function()
- if serverId then
- TeleportService:TeleportToPlaceInstance(game.PlaceId, serverId, LocalPlayer)
- else
- -- Teleporte para servidor aleatório
- local servers = getServerList()
- if #servers > 0 then
- local randomServer = servers[math.random(1, #servers)]
- TeleportService:TeleportToPlaceInstance(game.PlaceId, randomServer.id, LocalPlayer)
- else
- TeleportService:Teleport(game.PlaceId, LocalPlayer)
- end
- end
- end)
- if not success then
- warn("❌ Erro ao fazer Server Hop: " .. tostring(err))
- _hopping = false
- return false
- end
- return true
- end
- local function hopToLowPopulation()
- local server = findBestServer({
- minPlayers = 0,
- maxPlayers = 10,
- maxPing = 250
- })
- if server then
- print("✅ Servidor encontrado: " .. server.playing .. "/" .. server.maxPlayers .. " players")
- return hop(server.id)
- else
- print("⚠️ Nenhum servidor encontrado, usando hop aleatório")
- return hop()
- end
- end
- local function rejoin()
- TeleportService:Teleport(game.PlaceId, LocalPlayer)
- end
- return {
- Hop = hop,
- HopToLowPopulation = hopToLowPopulation,
- Rejoin = rejoin,
- FindBestServer = findBestServer,
- GetServerList = getServerList
- }
- end)()
- --// ========== 🎯 MÓDULO: HITBOX EXPANDER ========== //
- local HitboxExpander = (function()
- local _enabled = false
- local _originalSizes = {}
- local _updateLoop = nil
- local function expandHitbox(character, size)
- if not character then return end
- local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
- if not humanoidRootPart then return end
- -- Salva tamanho original
- if not _originalSizes[character] then
- _originalSizes[character] = humanoidRootPart.Size
- end
- -- Expande hitbox
- humanoidRootPart.Size = Vector3.new(size, size, size)
- humanoidRootPart.Transparency = 1
- humanoidRootPart.CanCollide = false
- humanoidRootPart.Massless = true
- end
- local function restoreHitbox(character)
- if not character then return end
- local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
- if not humanoidRootPart then return end
- if _originalSizes[character] then
- humanoidRootPart.Size = _originalSizes[character]
- humanoidRootPart.Transparency = 1
- _originalSizes[character] = nil
- end
- end
- local function updateAllHitboxes()
- if not _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
- -- Também expande hitboxes de NPCs/Dinossauros
- local possibleFolders = {
- workspace:FindFirstChild("Dinosaurs"),
- workspace:FindFirstChild("NPCs"),
- workspace:FindFirstChild("Creatures"),
- workspace:FindFirstChild("Animals")
- }
- for _, folder in ipairs(possibleFolders) do
- if folder then
- for _, npc in ipairs(folder:GetChildren()) do
- if npc:IsA("Model") and npc:FindFirstChild("HumanoidRootPart") then
- expandHitbox(npc, Config.HitboxSize)
- end
- end
- end
- end
- end
- local function enable()
- if _enabled then return end
- _enabled = true
- -- Atualiza continuamente
- _updateLoop = RunService.Heartbeat:Connect(function()
- updateAllHitboxes()
- end)
- -- Monitora novos players
- Players.PlayerAdded:Connect(function(player)
- player.CharacterAdded:Connect(function(character)
- task.wait(1)
- if _enabled then
- expandHitbox(character, Config.HitboxSize)
- end
- end)
- end)
- print("✅ Hitbox Expander ativado")
- end
- local function disable()
- if not _enabled then return end
- _enabled = false
- if _updateLoop then
- _updateLoop:Disconnect()
- _updateLoop = nil
- end
- -- Restaura hitboxes
- for character, _ in pairs(_originalSizes) do
- restoreHitbox(character)
- end
- print("❌ Hitbox Expander desativado")
- end
- return {
- Enable = enable,
- Disable = disable,
- SetSize = function(size)
- Config.HitboxSize = size
- updateAllHitboxes()
- end,
- IsEnabled = function() return _enabled end
- }
- end)()
- --// ========== 🌸 MÓDULO: BLOOM CRYSTAL DETECTOR ========== //
- local BloomDetector = (function()
- local _detecting = false
- local _bloomCrystal = nil
- local _lastBloomTime = 0
- local _espConnection = nil
- local _bloomESP = nil
- local BLOOM_KEYWORDS = {"bloom", "giant", "huge", "mega", "super"}
- local function isBloomCrystal(obj)
- if not obj or not obj.Parent then return false end
- local name = obj.Name:lower()
- -- Verifica se contém palavras-chave
- for _, keyword in ipairs(BLOOM_KEYWORDS) do
- if name:find(keyword) then
- return true
- end
- end
- -- Verifica tamanho (Bloom é muito maior)
- if obj:IsA("BasePart") then
- local size = obj.Size
- if size.Magnitude > 50 then -- Cristais normais são menores
- return true
- end
- end
- if obj:IsA("Model") then
- local primaryPart = obj.PrimaryPart
- if primaryPart then
- local size = primaryPart.Size
- if size.Magnitude > 50 then
- return true
- end
- end
- end
- return false
- end
- local function createBloomESP(crystal)
- if _bloomESP then
- pcall(function() _bloomESP:Destroy() end)
- end
- local part = crystal:IsA("BasePart") and crystal or crystal.PrimaryPart or crystal:FindFirstChildWhichIsA("BasePart")
- if not part then return end
- -- BillboardGui
- 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
- -- Frame
- 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
- -- Ícone
- local icon = Instance.new("TextLabel")
- icon.Size = UDim2.new(0.4, 0, 0.6, 0)
- icon.Position = UDim2.new(0.05, 0, 0.2, 0)
- icon.BackgroundTransparency = 1
- icon.Text = "💎"
- icon.TextScaled = true
- icon.Font = Enum.Font.GothamBold
- icon.Parent = frame
- -- Texto
- local label = Instance.new("TextLabel")
- label.Size = UDim2.new(0.5, 0, 0.5, 0)
- label.Position = UDim2.new(0.45, 0, 0.1, 0)
- label.BackgroundTransparency = 1
- label.Text = "BLOOM\nCRYSTAL"
- label.TextColor3 = Color3.fromRGB(255, 255, 255)
- label.TextStrokeTransparency = 0
- label.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
- label.Font = Enum.Font.GothamBold
- label.TextScaled = true
- label.Parent = frame
- -- Distância
- local distLabel = Instance.new("TextLabel")
- distLabel.Name = "Distance"
- distLabel.Size = UDim2.new(0.5, 0, 0.3, 0)
- distLabel.Position = UDim2.new(0.45, 0, 0.65, 0)
- distLabel.BackgroundTransparency = 1
- distLabel.Text = "0m"
- distLabel.TextColor3 = Color3.fromRGB(255, 255, 100)
- distLabel.TextStrokeTransparency = 0
- distLabel.Font = Enum.Font.GothamBold
- distLabel.TextScaled = true
- distLabel.Parent = frame
- -- Animação de pulso
- task.spawn(function()
- while billboard and billboard.Parent do
- for i = 0.3, 0.7, 0.05 do
- if not billboard or not billboard.Parent then break end
- frame.BackgroundTransparency = i
- task.wait(0.05)
- end
- for i = 0.7, 0.3, -0.05 do
- if not billboard or not billboard.Parent then break end
- frame.BackgroundTransparency = i
- task.wait(0.05)
- end
- end
- end)
- -- Atualiza distância
- task.spawn(function()
- while billboard and billboard.Parent do
- local root = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
- if root and part and part.Parent then
- local distance = (part.Position - root.Position).Magnitude
- distLabel.Text = string.format("%.0fm", distance)
- end
- task.wait(0.1)
- end
- end)
- _bloomESP = billboard
- end
- local function onBloomDetected(crystal)
- _bloomCrystal = crystal
- _lastBloomTime = tick()
- updateStat("BloomCrystalsFound", 1)
- print("╔════════════════════════════════════════╗")
- print("║ 💎 BLOOM CRYSTAL DETECTADO! 💎 ║")
- print("╠════════════════════════════════════════╣")
- print("║ Posição: " .. tostring(crystal:IsA("BasePart") and crystal.Position or crystal.PrimaryPart.Position))
- print("╚════════════════════════════════════════╝")
- -- Notificação
- local Rayfield = getgenv().RayfieldInstance
- if Rayfield then
- Rayfield:Notify({
- Title = "💎 BLOOM CRYSTAL ENCONTRADO!",
- Content = "Cristal gigante apareceu no mapa!",
- Duration = 15,
- Image = 4483362458
- })
- end
- -- Cria ESP especial
- if Config.BloomDetector then
- createBloomESP(crystal)
- end
- -- Auto-teleporte
- if Config.AutoTeleportToBloom then
- task.wait(1)
- local pos = crystal:IsA("BasePart") and crystal.Position or crystal.PrimaryPart.Position
- local root = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
- if root then
- root.CFrame = CFrame.new(pos + Vector3.new(0, 10, 0))
- if Rayfield then
- Rayfield:Notify({
- Title = "🚀 Teleportado",
- Content = "Teleportado para Bloom Crystal!",
- Duration = 2,
- Image = 4483362458
- })
- end
- end
- end
- -- Som de alerta (se possível)
- pcall(function()
- local sound = Instance.new("Sound")
- sound.SoundId = "rbxassetid://3398620867"
- sound.Volume = 1
- sound.Parent = workspace
- sound:Play()
- sound.Ended:Connect(function() sound:Destroy() end)
- end)
- end
- local function scanForBloom()
- -- Scan inicial
- for _, obj in ipairs(workspace:GetDescendants()) do
- if isBloomCrystal(obj) then
- onBloomDetected(obj)
- break
- end
- end
- -- Monitor novos objetos
- workspace.DescendantAdded:Connect(function(obj)
- if not _detecting then return end
- task.wait(0.5)
- if isBloomCrystal(obj) then
- onBloomDetected(obj)
- end
- end)
- -- Verifica remoção
- workspace.DescendantRemoving:Connect(function(obj)
- if obj == _bloomCrystal or (obj.Parent == _bloomCrystal) then
- print("💎 Bloom Crystal foi coletado/removido")
- _bloomCrystal = nil
- if _bloomESP then
- pcall(function() _bloomESP:Destroy() end)
- _bloomESP = nil
- end
- end
- end)
- end
- local function start()
- if _detecting then return end
- _detecting = true
- scanForBloom()
- print("✅ Bloom Detector iniciado")
- end
- local function stop()
- if not _detecting then return end
- _detecting = false
- if _bloomESP then
- pcall(function() _bloomESP:Destroy() end)
- _bloomESP = nil
- end
- print("❌ Bloom Detector parado")
- end
- return {
- Start = start,
- Stop = stop,
- GetBloomCrystal = function() return _bloomCrystal end,
- GetTimeSinceLastBloom = function()
- if _lastBloomTime == 0 then return "Nunca" end
- local elapsed = tick() - _lastBloomTime
- local minutes = math.floor(elapsed / 60)
- return minutes .. " minutos atrás"
- end
- }
- end)()
- --// ========== 🛡️ MÓDULO: ANTI-KICK/ANTI-AFK ROBUSTO ========== //
- local AntiKick = (function()
- local _enabled = false
- local _connections = {}
- local function preventAFK()
- -- Método 1: Desabilita IdleTracker
- local success = pcall(function()
- local VirtualUser = game:GetService("VirtualUser")
- LocalPlayer.Idled:Connect(function()
- VirtualUser:CaptureController()
- VirtualUser:ClickButton2(Vector2.new())
- end)
- end)
- if success then
- print("✅ Anti-AFK ativado (Método 1)")
- end
- -- Método 2: Simula input periódico
- task.spawn(function()
- while _enabled do
- task.wait(math.random(120, 300)) -- 2-5 minutos
- pcall(function()
- local VirtualInputManager = game:GetService("VirtualInputManager")
- VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.W, false, game)
- task.wait(0.1)
- VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.W, false, game)
- end)
- end
- end)
- end
- local function preventKick()
- -- Hooks para prevenir kicks
- local mt = getrawmetatable(game)
- local oldNamecall = mt.__namecall
- setreadonly(mt, false)
- mt.__namecall = newcclosure(function(self, ...)
- local method = getnamecallmethod()
- local args = {...}
- -- Bloqueia Kick/TeleportService
- if method == "Kick" then
- print("⚠️ Tentativa de kick bloqueada!")
- return nil
- end
- if method == "TeleportToPlaceInstance" and not ServerHop then
- print("⚠️ Tentativa de teleporte bloqueada!")
- return nil
- end
- return oldNamecall(self, ...)
- end)
- setreadonly(mt, true)
- print("✅ Anti-Kick hooks instalados")
- end
- local function enable()
- if _enabled then return end
- _enabled = true
- preventAFK()
- preventKick()
- print("✅ Anti-Kick/Anti-AFK ativado")
- end
- local function disable()
- if not _enabled then return end
- _enabled = false
- for _, conn in ipairs(_connections) do
- if conn and conn.Connected then
- conn:Disconnect()
- end
- end
- _connections = {}
- print("❌ Anti-Kick/Anti-AFK desativado")
- end
- return {
- Enable = enable,
- Disable = disable
- }
- end)()
- --// ========== ⚡ MÓDULO: FPS BOOSTER & OTIMIZAÇÕES ========== //
- local Optimizer = (function()
- local _enabled = false
- local _originalSettings = {}
- local function boostFPS()
- -- Reduz qualidade gráfica
- local lighting = game:GetService("Lighting")
- _originalSettings.Brightness = lighting.Brightness
- _originalSettings.GlobalShadows = lighting.GlobalShadows
- _originalSettings.OutdoorAmbient = lighting.OutdoorAmbient
- lighting.GlobalShadows = false
- lighting.Brightness = 2
- lighting.OutdoorAmbient = Color3.fromRGB(128, 128, 128)
- -- Remove efeitos visuais
- for _, effect in ipairs(lighting:GetChildren()) do
- if effect:IsA("PostEffect") then
- effect.Enabled = false
- end
- end
- -- Reduz qualidade de terreno
- workspace.StreamingEnabled = true
- workspace.StreamingMinRadius = 32
- workspace.StreamingTargetRadius = 64
- -- Remove partículas desnecessárias
- for _, obj in ipairs(workspace:GetDescendants()) do
- if obj:IsA("ParticleEmitter") or obj:IsA("Trail") or obj:IsA("Smoke") or obj:IsA("Fire") then
- obj.Enabled = false
- end
- end
- print("✅ FPS Booster ativado")
- end
- local function restoreSettings()
- local lighting = game:GetService("Lighting")
- if _originalSettings.Brightness then
- lighting.Brightness = _originalSettings.Brightness
- end
- if _originalSettings.GlobalShadows ~= nil then
- lighting.GlobalShadows = _originalSettings.GlobalShadows
- end
- if _originalSettings.OutdoorAmbient then
- lighting.OutdoorAmbient = _originalSettings.OutdoorAmbient
- end
- print("✅ Configurações restauradas")
- end
- local function optimizeMemory()
- -- Força garbage collection
- pcall(function()
- setfpscap(60)
- end)
- print("✅ Memória otimizada")
- end
- local function enable()
- if _enabled then return end
- _enabled = true
- boostFPS()
- optimizeMemory()
- -- Otimiza periodicamente
- task.spawn(function()
- while _enabled do
- task.wait(300) -- 5 minutos
- optimizeMemory()
- end
- end)
- end
- local function disable()
- if not _enabled then return end
- _enabled = false
- restoreSettings()
- end
- return {
- Enable = enable,
- Disable = disable,
- OptimizeNow = optimizeMemory
- }
- end)()
- --// ========== 🔄 MÓDULO: AUTO UPDATE ========== //
- local AutoUpdate = (function()
- local CURRENT_VERSION = ScriptVersion
- local UPDATE_URL = "https://raw.githubusercontent.com/seu-usuario/seu-repo/main/version.txt" -- ALTERE!
- local SCRIPT_URL = "https://pastebin.com/raw/WJSxJVcm" -- ALTERE!
- local function checkForUpdates()
- local success, latestVersion = pcall(function()
- return game:HttpGet(UPDATE_URL):gsub("%s+", "")
- end)
- if not success then
- warn("❌ Não foi possível verificar atualizações")
- return false, nil
- end
- if latestVersion ~= CURRENT_VERSION then
- return true, latestVersion
- end
- return false, latestVersion
- end
- local function showUpdateNotification(newVersion)
- local Rayfield = getgenv().RayfieldInstance
- if Rayfield then
- Rayfield:Notify({
- Title = "🔄 Atualização Disponível!",
- Content = "Nova versão: " .. newVersion .. "\nAtual: " .. CURRENT_VERSION,
- Duration = 10,
- Image = 4483362458
- })
- end
- print("╔════════════════════════════════════════╗")
- print("║ 🔄 ATUALIZAÇÃO DISPONÍVEL! 🔄 ║")
- print("╠════════════════════════════════════════╣")
- print("║ Versão Atual: " .. CURRENT_VERSION)
- print("║ Nova Versão: " .. newVersion)
- print("║ ")
- print("║ Recarregue o script para atualizar!")
- print("╚════════════════════════════════════════╝")
- end
- local function autoCheckUpdates()
- task.spawn(function()
- task.wait(5) -- Aguarda 5 segundos após iniciar
- local hasUpdate, newVersion = checkForUpdates()
- if hasUpdate then
- showUpdateNotification(newVersion)
- else
- print("✅ Script está atualizado! (v" .. CURRENT_VERSION .. ")")
- end
- end)
- end
- return {
- CheckNow = checkForUpdates,
- AutoCheck = autoCheckUpdates,
- GetCurrentVersion = function() return CURRENT_VERSION end
- }
- end)()
- --// ========== DETECTAR POSIÇÃO DE SPAWN ========== //
- task.spawn(function()
- local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
- local root = char:WaitForChild("HumanoidRootPart", 10)
- if root then
- task.wait(2)
- LastSpawnPosition = root.CFrame
- end
- LocalPlayer.CharacterAdded:Connect(function(newChar)
- task.wait(2)
- local newRoot = newChar:FindFirstChild("HumanoidRootPart")
- if newRoot then
- LastSpawnPosition = newRoot.CFrame
- end
- end)
- end)
- --// ========== CARREGAR RAYFIELD ========== //
- local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
- getgenv().RayfieldInstance = Rayfield
- --// ========== CRIAR WINDOW ========== //
- local Window = Rayfield:CreateWindow({
- Name = "🦖 Pré-história v" .. ScriptVersion .. " - By: NickZScripts",
- Icon = 0,
- LoadingTitle = "Pré-história MEGA UPDATE",
- LoadingSubtitle = "By: NickZScripts - v" .. ScriptVersion,
- Theme = "Default",
- DisableRayfieldPrompts = false,
- DisableBuildWarnings = false,
- ConfigurationSaving = {
- Enabled = true,
- FolderName = nil,
- FileName = "PreHistoria_v5"
- },
- Discord = {
- Enabled = false,
- Invite = "noinvitelink",
- RememberJoins = true
- },
- KeySystem = false,
- })
- --// ========== FUNÇÕES DE UTILIDADE (MANTIDAS) ========== //
- 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 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
- --// ========== SISTEMA DE TELEPORTE SEGURO (MANTIDO) ========== //
- local function safeTeleport(targetCFrame, locationName)
- if ActiveTeleportConnection then
- ActiveTeleportConnection:Disconnect()
- ActiveTeleportConnection = nil
- end
- local char = LocalPlayer.Character
- local root = char and char:FindFirstChild("HumanoidRootPart")
- local humanoid = char and char:FindFirstChild("Humanoid")
- if not root or not humanoid then
- Rayfield:Notify({
- Title = "❌ Erro",
- Content = "Personagem não encontrado!",
- Duration = 1,
- Image = 4483362458
- })
- return false
- end
- updateStat("TeleportsUsed", 1)
- Rayfield:Notify({
- Title = "🚀 Teleportando",
- Content = "Indo para: " .. locationName,
- Duration = 0.5,
- Image = 4483362458
- })
- root.CFrame = targetCFrame
- task.spawn(function()
- task.wait(0.05)
- local rayParams = RaycastParams.new()
- rayParams.FilterType = Enum.RaycastFilterType.Blacklist
- rayParams.FilterDescendantsInstances = {char}
- local rayResult = workspace:Raycast(
- root.Position,
- Vector3.new(0, -100, 0),
- rayParams
- )
- if rayResult then
- root.CFrame = CFrame.new(rayResult.Position + Vector3.new(0, 3, 0))
- end
- end)
- local teleportStartTime = tick()
- local maxWaitTime = 1.2
- local minWaitTime = 0.2
- ActiveTeleportConnection = RunService.Heartbeat:Connect(function()
- if not char or not char.Parent or not root or not root.Parent or not humanoid then
- if ActiveTeleportConnection then
- ActiveTeleportConnection:Disconnect()
- ActiveTeleportConnection = nil
- end
- return
- end
- local elapsedTime = tick() - teleportStartTime
- local floorMaterial = humanoid.FloorMaterial
- local isOnGround = floorMaterial ~= Enum.Material.Air
- local velocity = root.AssemblyLinearVelocity
- local isStationary = velocity.Magnitude < 2
- local humanoidState = humanoid:GetState()
- local isLanded = humanoidState == Enum.HumanoidStateType.Landed or
- humanoidState == Enum.HumanoidStateType.Running or
- humanoidState == Enum.HumanoidStateType.RunningNoPhysics
- if (elapsedTime > minWaitTime and (isOnGround or (isStationary and isLanded))) or elapsedTime > maxWaitTime then
- if ActiveTeleportConnection then
- ActiveTeleportConnection:Disconnect()
- ActiveTeleportConnection = nil
- end
- if isOnGround or isLanded then
- Rayfield:Notify({
- Title = "✅ Chegou",
- Content = locationName,
- Duration = 0.5,
- Image = 4483362458
- })
- else
- local rayParams = RaycastParams.new()
- rayParams.FilterType = Enum.RaycastFilterType.Blacklist
- rayParams.FilterDescendantsInstances = {char}
- local rayResult = workspace:Raycast(
- root.Position,
- Vector3.new(0, -200, 0),
- rayParams
- )
- if rayResult then
- root.CFrame = CFrame.new(rayResult.Position + Vector3.new(0, 3, 0))
- end
- end
- return
- end
- end)
- return true
- end
- --// ========== [CONTINUA NO PRÓXIMO BLOCO - PARTE 2/3] ========== //
Advertisement
Add Comment
Please, Sign In to add comment