M
Description
rivals op aimbot and aimlock annoying
GAMERIVALS [❄️FREEZE RAY❄️]
UPDATEDOct 10, 2026
ACCESSKeyless
PLATFORMDesktop
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End BloxScripts Risk Notice ]]
-- ===== CONFIGURATION =====
local CONFIG = {
aim_touch_zone = {x = 0, y = 0, w = 200, h = 200}, -- touch right half of screen to aim
base_fov = 120,
base_smoothing = 0.35,
prediction_factor = 0.08,
jump_height_mult = 2.5,
speed_mult = 1.8,
god_mode = true,
no_fall_damage = true,
min_sleep_ms = 5,
max_sleep_ms = 25,
}
-- ===== MOBILE MEMORY OFFSETS (example – scan dynamically) =====
local OFFSETS = {
player_list = 0x1234A8,
local_player = 0x1234AC,
view_angles = 0x1234B0,
position = 0x1234B4,
health = 0x1234B8,
team = 0x1234BC,
velocity = 0x1234C0,
jump_force = 0x1234D0,
gravity = 0x1234D4,
speed_addr = 0x1234D8,
fall_damage_flag = 0x1234DC,
}
-- ===== STUB MEMORY FUNCTIONS – REPLACE WITH MOBILE API =====
-- For Roblox mobile: you might use getrenv() and shared libraries.
-- For standalone: use ffi or Android's /proc/pid/mem with pcall.
local function readInt(addr) return 0 end
local function readFloat(addr, count)
if count == 1 then return 0.0 end
return {0.0, 0.0, 0.0}
end
local function writeFloat(addr, val) end
local function writeInt(addr, val) end
-- ===== UTILITY =====
local function clamp(v, min, max) return math.max(min, math.min(max, v)) end
local function normalizeYaw(yaw)
yaw = yaw % 360
if yaw > 180 then yaw = yaw - 360 end
if yaw < -180 then yaw = yaw + 360 end
return yaw
end
local function vectorLen(v) return math.sqrt(v[1]^2 + v[2]^2 + v[3]^2) end
local function sleep(ms) os.execute("sleep " .. tostring(ms/1000)) end -- mobile may use `syscall` or `coroutine.yield`
-- ===== MAIN CLASS =====
local Aimbot = {}
Aimbot.__index = Aimbot
function Aimbot:new()
local obj = setmetatable({}, Aimbot)
obj.running = true
obj.enabled = true
obj.base_addr = 0x0
obj.touch_active = false
return obj
end
function Aimbot:attach()
-- On mobile, find base address via pattern scan or module base
self.base_addr = 0x1000000 -- replace with actual
return true
end
-- ===== PLAYER DATA FUNCTIONS =====
function Aimbot:getLocalPlayer()
return readInt(self.base_addr + OFFSETS.local_player)
end
function Aimbot:getPosition(entity)
return readFloat(entity + OFFSETS.position, 3) or {0,0,0}
end
function Aimbot:getHealth(entity)
return readInt(entity + OFFSETS.health)
end
function Aimbot:getTeam(entity)
return readInt(entity + OFFSETS.team)
end
function Aimbot:getVelocity(entity)
return readFloat(entity + OFFSETS.velocity, 3) or {0,0,0}
end
function Aimbot:getViewAngles()
return readFloat(self.base_addr + OFFSETS.view_angles, 2) or {0,0}
end
function Aimbot:setViewAngles(pitch, yaw)
pitch = clamp(pitch, -89, 89)
yaw = normalizeYaw(yaw)
writeFloat(self.base_addr + OFFSETS.view_angles, {pitch, yaw})
end
function Aimbot:getPlayerList()
local addr = self.base_addr + OFFSETS.player_list
local count = readInt(addr + 0x4)
if count <= 0 or count > 64 then return {} end
local list_ptr = readInt(addr)
if list_ptr == 0 then return {} end
local players = {}
local localPlayer = self:getLocalPlayer()
for i = 1, math.min(count, 64) do
local ent = readInt(list_ptr + (i-1)*4)
if ent ~= 0 and ent ~= localPlayer then
table.insert(players, ent)
end
end
return players
end
-- ===== AIMBOT LOOP =====
function Aimbot:aimbotLoop()
local fov = CONFIG.base_fov + math.random(-10, 10)
local smooth = CONFIG.base_smoothing + (math.random()*0.1 - 0.05)
smooth = clamp(smooth, 0.1, 0.9)
while self.running do
if not self.enabled then
sleep(math.random(10,30))
goto continue
end
-- Random sleep to evade detection
sleep(math.random(CONFIG.min_sleep_ms, CONFIG.max_sleep_ms))
-- Mobile: check if finger is in aim zone (simplified – you'd use touch events)
-- For demonstration, assume touch_active is set by GUI or touch handler
if not self.touch_active then
goto continue
end
local localPlayer = self:getLocalPlayer()
if localPlayer == 0 then goto continue end
local localPos = self:getPosition(localPlayer)
if vectorLen(localPos) < 0.01 then goto continue end
local localVel = self:getVelocity(localPlayer)
local myTeam = self:getTeam(localPlayer)
if myTeam == 0 then goto continue end
local enemies = {}
for _, ent in ipairs(self:getPlayerList()) do
local health = self:getHealth(ent)
if health > 0 and health < 1000 then
local team = self:getTeam(ent)
if team ~= myTeam and team ~= 0 then
local pos = self:getPosition(ent)
if vectorLen(pos) > 0.01 then
local vel = self:getVelocity(ent)
table.insert(enemies, {ent=ent, pos=pos, vel=vel})
end
end
end
end
if #enemies == 0 then goto continue end
local curAngles = self:getViewAngles()
local bestFov = fov
local bestPitch, bestYaw = nil, nil
for _, enemy in ipairs(enemies) do
local delta = {
enemy.pos[1] - localPos[1] + enemy.vel[1] * CONFIG.prediction_factor,
enemy.pos[2] - localPos[2] + enemy.vel[2] * CONFIG.prediction_factor,
enemy.pos[3] - localPos[3] + enemy.vel[3] * CONFIG.prediction_factor,
}
local hyp = vectorLen(delta)
if hyp < 0.001 then goto next_enemy end
local pitch = -math.asin(delta[3] / hyp) * 180 / math.pi
local yaw = math.atan2(delta[2], delta[1]) * 180 / math.pi
local dP = pitch - curAngles[1]
local dY = yaw - curAngles[2]
local fovDist = math.sqrt(dP^2 + dY^2)
if fovDist < bestFov then
bestFov = fovDist
bestPitch, bestYaw = pitch, yaw
end
::next_enemy::
end
if bestPitch then
local newP = curAngles[1] + (bestPitch - curAngles[1]) * smooth
local newY = curAngles[2] + (bestYaw - curAngles[2]) * smooth
newY = normalizeYaw(newY)
self:setViewAngles(newP, newY)
sleep(math.random(1,3))
end
::continue::
end
end
-- ===== LOCAL PLAYER HACKS (speed, god mode, fall damage) =====
function Aimbot:localPlayerLoop()
local speedAddr = self.base_addr + OFFSETS.speed_addr
local healthAddr = self.base_addr + OFFSETS.health + 4 -- assuming local player offset
local fallAddr = self.base_addr + OFFSETS.fall_damage_flag
while self.running do
-- Speed hack
if CONFIG.speed_mult ~= 1.0 then
local baseSpeed = readFloat(speedAddr)
if baseSpeed and baseSpeed > 0 then
writeFloat(speedAddr, baseSpeed * CONFIG.speed_mult)
end
end
-- God mode (infinite health)
if CONFIG.god_mode then
local localPlayer = self:getLocalPlayer()
if localPlayer ~= 0 then
writeInt(localPlayer + OFFSETS.health, 9999)
end
end
-- No fall damage
if CONFIG.no_fall_damage then
writeFloat(fallAddr, 0.0) -- or writeInt(0) if flag
end
sleep(math.random(200, 500))
end
end
-- ===== JUMP HACK LOOP =====
function Aimbot:jumpHackLoop()
local jumpAddr = self.base_addr + OFFSETS.jump_force
local gravAddr = self.base_addr + OFFSETS.gravity
while self.running do
if CONFIG.jump_height_mult > 1.0 then
local factor = CONFIG.jump_height_mult + math.random()*0.2 - 0.1
factor = clamp(factor, 1.5, 3.5)
writeFloat(jumpAddr, 450.0 * factor)
writeFloat(gravAddr, -800.0 * (0.7 + math.random()*0.1 - 0.05))
end
sleep(math.random(500, 1200))
end
}
-- ===== GUI (MOBILE TOUCH – TEXT STUB) =====
-- In a real mobile environment, you'd render a small circle at top-left using UI library.
-- Here we provide a simple console toggle.
local function createMobileGUI()
print("=== MOBILE AIMBOT GUI ===")
print("Touch circle at top-left to toggle menu (simulated)")
print("Tap right half of screen to aim (simulated)")
-- In practice, use touch event handlers to set aimbot.touch_active
end
-- ===== START / STOP =====
function Aimbot:start()
if not self:attach() then return false end
-- Run loops using coroutines for concurrency (mobile-friendly)
local co1 = coroutine.create(function() self:aimbotLoop() end)
local co2 = coroutine.create(function() self:localPlayerLoop() end)
local co3 = coroutine.create(function() self:jumpHackLoop() end)
while self.running do
coroutine.resume(co1)
coroutine.resume(co2)
coroutine.resume(co3)
sleep(1) -- yield to avoid CPU hog
end
return true
end
function Aimbot:stop()
self.running = false
end
-- ===== MAIN =====
local aimbot = Aimbot:new()
if aimbot:start() then
print("Aimbot running on mobile. Tap the circle to toggle GUI (stub).")
-- In a full implementation, you'd have a touch listener that sets aimbot.touch_active
-- and draws the circle overlay.
else
Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place