0% found this document useful (0 votes)
1K views6 pages

Server Hop

The document is a Lua script for a Roblox game that automates the process of searching for specific targets based on a name pattern and earnings value. It includes functions to retrieve active game servers, scan for targets within a specified radius, and report findings via a webhook. The script also features server hopping and debugging options to enhance the hunting process.

Uploaded by

aopenhimer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views6 pages

Server Hop

The document is a Lua script for a Roblox game that automates the process of searching for specific targets based on a name pattern and earnings value. It includes functions to retrieve active game servers, scan for targets within a specified radius, and report findings via a webhook. The script also features server hopping and debugging options to enhance the hunting process.

Uploaded by

aopenhimer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

local CONFIG = {

GAME_ID = 109983668079237,
TARGET_PATTERN = "Tralalero Tralala",
TARGET_EARNINGS = 999999999, -- 💰 Lo que quieres ganar por segundo
WEBHOOK_URL = "tu_webhook_aqui",
SCAN_RADIUS = 5000,
SERVER_HOP_DELAY = 2,
MAX_SERVERS = 25,
DEBUG_MODE = true
}

local Players = game:GetService("Players")


local HttpService = game:GetService("HttpService")
local TeleportService = game:GetService("TeleportService")
local Workspace = game:GetService("Workspace")
local LocalPlayer = Players.LocalPlayer

local running = true

-- Obtener universeId
local function getUniverseIdFromPlaceId(placeId)
local url = string.format("https://games.roblox.com/v1/games/multiget-place-
details?placeIds=[%d]", placeId)
local success, response = pcall(function()
return game:HttpGet(url)
end)
if success then
local data = HttpService:JSONDecode(response)
if data and data[1] and data[1].universeId then
return tostring(data[1].universeId)
end
end
if CONFIG.DEBUG_MODE then
warn("No se pudo obtener universeId para el placeId "..tostring(placeId))
end
return nil
end

local universeId = getUniverseIdFromPlaceId(CONFIG.GAME_ID) or


tostring(CONFIG.GAME_ID)

-- Obtener servidores activos


local function getActiveServers()
local servers = {}
local url = string.format(
"https://games.roblox.com/v1/games/%s/servers/Public?limit=%d",
universeId,
CONFIG.MAX_SERVERS
)
local success, response = pcall(function()
return game:HttpGet(url)
end)

if success then
local data = HttpService:JSONDecode(response)
for _, server in ipairs(data.data or {}) do
table.insert(servers, server.id)
end
else
warn("Error al obtener servidores: ", response)
end

return servers
end

-- Escaneo con chequeo por earnings


local function deepScan()
local foundTargets = {}
local rootPart = LocalPlayer.Character and
LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
local rootPosition = rootPart and rootPart.Position or Vector3.new(0,0,0)

local function scanRecursive(parent)


for _, child in ipairs(parent:GetChildren()) do
local match = false
local earningsDetected = nil

-- Coincidencia por nombre


if string.find(string.lower(child.Name),
string.lower(CONFIG.TARGET_PATTERN)) then
match = true
end

-- Coincidencia por NumberValue directo


for _, v in ipairs(child:GetChildren()) do
if v:IsA("NumberValue") and v.Name:lower():find("earnings") then
if v.Value == CONFIG.TARGET_EARNINGS then
match = true
earningsDetected = v.Value
end
end
end

-- Coincidencia por TextLabel de BillboardGui


for _, gui in ipairs(child:GetDescendants()) do
if gui:IsA("TextLabel") then
local text = gui.Text:gsub("[^%d]", "")
local number = tonumber(text)
if number and number == CONFIG.TARGET_EARNINGS then
match = true
earningsDetected = number
end
end
end

-- Si coincide
if match then
local success, pivot = pcall(function() return child:GetPivot()
end)
if success and pivot then
local objectPos = pivot.Position
local distance = (objectPos - rootPosition).Magnitude

if distance <= CONFIG.SCAN_RADIUS then


table.insert(foundTargets, {
name = child:GetFullName(),
position = objectPos,
distance = distance,
earnings = earningsDetected or "?"
})
end
end
end

if child:IsA("Model") or child:IsA("Folder") then


scanRecursive(child)
end
end
end

local priorityAreas = {
Workspace,
Workspace:FindFirstChild("Map") or Workspace,
Workspace:FindFirstChild("GameObjects") or Workspace,
Workspace:FindFirstChild("Workspace") or Workspace
}

for _, area in ipairs(priorityAreas) do


scanRecursive(area)
end

table.sort(foundTargets, function(a, b) return a.distance < b.distance end)

return foundTargets
end

-- Reporte
local function sendHunterReport(targets, jobId)
local embeds = {}
local content = #targets > 0 and "@everyone 🎯 OBJETIVO ENCONTRADO" or nil

if #targets > 0 then


for i, target in ipairs(targets) do
if i <= 3 then
table.insert(embeds, {
title = string.format("OBJETO #%d - %.1f studs", i,
target.distance),
description = target.name,
color = 65280,
fields = {
{name = "Posición", value = tostring(target.position)},
{name = "Ganancia/s", value = tostring(target.earnings)},
{name = "Servidor", value = jobId or game.JobId},
{name = "Enlace", value = string.format("roblox://placeId=
%d&gameInstanceId=%s", CONFIG.GAME_ID, jobId or game.JobId)}
}
})
end
end
else
table.insert(embeds, {
title = "ESCANEO COMPLETADO",
description = "No se encontraron objetivos",
color = 16711680,
fields = {
{name = "Servidor", value = jobId or game.JobId},
{name = "Patrón buscado", value = CONFIG.TARGET_PATTERN}
}
})
end

local payload = {
content = content,
embeds = embeds
}

local success, err = pcall(function()


if syn and syn.request then
syn.request({
Url = CONFIG.WEBHOOK_URL,
Method = "POST",
Headers = {["Content-Type"] = "application/json"},
Body = HttpService:JSONEncode(payload)
})
else
HttpService:PostAsync(CONFIG.WEBHOOK_URL,
HttpService:JSONEncode(payload))
end
end)

if not success and CONFIG.DEBUG_MODE then


warn("⚠️ Error al enviar reporte:", err)
end
end

-- Teleport
local function joinServer(jobId)
local attempts = 0
local maxAttempts = 3

repeat
attempts += 1
local success = pcall(function()
TeleportService:TeleportToPlaceInstance(CONFIG.GAME_ID, jobId,
LocalPlayer)
end)

if success then
repeat task.wait(1) until game:IsLoaded()
local waitTime = 0
while not Workspace:FindFirstChildWhichIsA("Model") and waitTime < 15
do
waitTime += 1
task.wait(1)
end

if not LocalPlayer.Character then


LocalPlayer.CharacterAdded:Wait()
end

return true
else
if CONFIG.DEBUG_MODE then
print(string.format("⚠️ Intento %d/%d fallido para servidor %s",
attempts, maxAttempts, jobId))
end
task.wait(5)
end
until attempts >= maxAttempts

return false
end

-- Loop principal
local function huntingLoop()
print("\n=== INICIANDO MODO HUNTER ===")
print(string.format("🔍 Buscando '%s' o 💰 %d/s en radio de %d studs",
CONFIG.TARGET_PATTERN, CONFIG.TARGET_EARNINGS, CONFIG.SCAN_RADIUS))

while running do
local servers = getActiveServers()
if #servers == 0 then
warn("❌ No se obtuvieron servidores. Reintentando en 1 minuto...")
task.wait(60)
else
if CONFIG.DEBUG_MODE then
print(string.format("🔄 Obtenidos %d servidores activos", #servers))
end

for _, serverId in ipairs(servers) do


if not running then break end

if CONFIG.DEBUG_MODE then
print("🛫 Intentando unirse a:", serverId)
end

if joinServer(serverId) then
local targets = deepScan()
sendHunterReport(targets, serverId)

if #targets > 0 then


print("🎯 Objetivo encontrado! Finalizando búsqueda.")
running = false
break
end
end

task.wait(CONFIG.SERVER_HOP_DELAY)
end

if running and CONFIG.DEBUG_MODE then


print("🔁 Reiniciando ciclo de búsqueda...")
end

if running then
task.wait(30)
end
end
end
end

if not LocalPlayer.Character then


LocalPlayer.CharacterAdded:Wait()
end
huntingLoop()

You might also like