🔓 Keyless
Step into the ultimate battleground with the Arena of Survival script, designed to give you an unmatched tactical advantage over every opponent in the arena. This powerful, keyless utility eliminates tedious key bypasses, letting you dive straight into the action with dominant combat enhancements instantly. Whether you are hunting down hidden players or sweeping up valuable loot, this script ensures you remain the last warrior standing.
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local UserInputService = game:GetService("UserInputService")
local Lighting = game:GetService("Lighting")
local CoreGui = game:GetService("CoreGui")
local LocalPlayer = Players.LocalPlayer
local oldGui = CoreGui:FindFirstChild("UniverseESPGui")
if oldGui then
pcall(function()
oldGui:Destroy()
end)
end
local oldFolder = CoreGui:FindFirstChild("UniverseHighlights")
if oldFolder then
pcall(function()
oldFolder:Destroy()
end)
end
local repo = "https://raw.githubusercontent.com/deividcomsono/Obsidian/main/"
local Library = loadstring(game:HttpGet(repo .. "Library.lua"))()
local SaveManager = loadstring(game:HttpGet(repo .. "addons/SaveManager.lua"))()
local ThemeManager = loadstring(game:HttpGet(repo .. "addons/ThemeManager.lua"))()
Library.ForceCheckbox = false
Library.ShowToggleFrameInKeybinds = true
local Window = Library:CreateWindow({
Title = "Arena of Survival",
Footer = "Arena of Survival",
AutoShow = true,
NotifySide = "Right",
ShowCustomCursor = false,
})
local espFolder = Instance.new("Folder")
espFolder.Name = "UniverseHighlights"
pcall(function()
espFolder.Parent = CoreGui
end)
local ESP_FONT = Enum.Font.LuckiestGuy
local KA_RANGE = 60
local KA_DELAY = 0.1
local KA_HITBOX = 60
local PICKUP_RANGE = 30
local DEFAULT_SPEED = 16
local State = {
Master = false,
Fill = true,
SeeThrough = true,
FillTransparency = 1,
OutlineTransparency = 0,
KillAura = false,
AutoPickup = false,
Jump = false,
Fullbright = false,
ClearView = false,
SpeedEnabled = false,
Speed = 28,
}
local whitelist = {}
local function isWhitelisted(plr)
if not plr then
return false
end
if whitelist[plr.Name:lower()] then
return true
end
if whitelist[plr.DisplayName:lower()] then
return true
end
return false
end
local function restoreWalkSpeed()
pcall(function()
local char = LocalPlayer.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hum and hum.Health > 0 then
hum.WalkSpeed = DEFAULT_SPEED
end
end)
end
local fbSaved = nil
local function applyFullbright(on)
if on then
if not fbSaved then
fbSaved = {
Brightness = Lighting.Brightness,
ClockTime = Lighting.ClockTime,
FogEnd = Lighting.FogEnd,
FogStart = Lighting.FogStart,
GlobalShadows = Lighting.GlobalShadows,
Ambient = Lighting.Ambient,
OutdoorAmbient = Lighting.OutdoorAmbient,
ExposureCompensation = Lighting.ExposureCompensation,
}
end
pcall(function()
if Lighting.Brightness ~= 2 then
Lighting.Brightness = 2
end
if Lighting.ClockTime ~= 14 then
Lighting.ClockTime = 14
end
if Lighting.FogEnd ~= 1e9 then
Lighting.FogEnd = 1e9
end
if Lighting.FogStart ~= 0 then
Lighting.FogStart = 0
end
if Lighting.GlobalShadows ~= false then
Lighting.GlobalShadows = false
end
if Lighting.Ambient ~= Color3.fromRGB(178, 178, 178) then
Lighting.Ambient = Color3.fromRGB(178, 178, 178)
end
if Lighting.OutdoorAmbient ~= Color3.fromRGB(178, 178, 178) then
Lighting.OutdoorAmbient = Color3.fromRGB(178, 178, 178)
end
if Lighting.ExposureCompensation ~= 0 then
Lighting.ExposureCompensation = 0
end
end)
else
if fbSaved then
pcall(function()
Lighting.Brightness = fbSaved.Brightness
Lighting.ClockTime = fbSaved.ClockTime
Lighting.FogEnd = fbSaved.FogEnd
Lighting.FogStart = fbSaved.FogStart
Lighting.GlobalShadows = fbSaved.GlobalShadows
Lighting.Ambient = fbSaved.Ambient
Lighting.OutdoorAmbient = fbSaved.OutdoorAmbient
Lighting.ExposureCompensation = fbSaved.ExposureCompensation
end)
fbSaved = nil
end
end
end
local cvFog = nil
local cvObjs = {}
local function cvRecordAndDisable()
for _, d in ipairs(Lighting:GetDescendants()) do
if d:IsA("BlurEffect") or d:IsA("DepthOfFieldEffect") then
if cvObjs[d] == nil then
cvObjs[d] = { kind = "effect", enabled = d.Enabled }
end
if d.Enabled ~= false then
pcall(function()
d.Enabled = false
end)
end
elseif d:IsA("Atmosphere") then
if cvObjs[d] == nil then
cvObjs[d] = { kind = "atmo", density = d.Density }
end
if d.Density ~= 0 then
pcall(function()
d.Density = 0
end)
end
end
end
local cam = Workspace.CurrentCamera
if cam then
for _, d in ipairs(cam:GetChildren()) do
if d:IsA("BlurEffect") or d:IsA("DepthOfFieldEffect") then
if cvObjs[d] == nil then
cvObjs[d] = { kind = "effect", enabled = d.Enabled }
end
if d.Enabled ~= false then
pcall(function()
d.Enabled = false
end)
end
end
end
end
end
local function applyClearView(on)
if on then
if cvFog == nil then
cvFog = { FogEnd = Lighting.FogEnd, FogStart = Lighting.FogStart }
end
pcall(function()
if Lighting.FogEnd ~= 1e9 then
Lighting.FogEnd = 1e9
end
if Lighting.FogStart ~= 0 then
Lighting.FogStart = 0
end
end)
cvRecordAndDisable()
else
if cvFog then
pcall(function()
Lighting.FogEnd = cvFog.FogEnd
Lighting.FogStart = cvFog.FogStart
end)
cvFog = nil
end
for obj, info in pairs(cvObjs) do
if obj and obj.Parent then
if info.kind == "effect" then
pcall(function()
obj.Enabled = info.enabled
end)
elseif info.kind == "atmo" then
pcall(function()
obj.Density = info.density
end)
end
end
end
cvObjs = {}
end
end
local Categories = {
{ key = "Fish", color = Color3.fromRGB(30, 144, 255) },
{ key = "Crabs", color = Color3.fromRGB(255, 69, 0) },
{ key = "Boars", color = Color3.fromRGB(139, 0, 0) },
{ key = "Deer", color = Color3.fromRGB(144, 238, 144) },
{ key = "Wasps", color = Color3.fromRGB(255, 255, 0) },
{ key = "Wolves", color = Color3.fromRGB(128, 128, 128) },
{ key = "Snakes", color = Color3.fromRGB(50, 205, 50) },
{ key = "Alligator", color = Color3.fromRGB(85, 107, 47) },
{ key = "MosquitoHive", color = Color3.fromRGB(255, 105, 180) },
{ key = "Zombies", color = Color3.fromRGB(0, 100, 0) },
{ key = "Trunks", color = Color3.fromRGB(139, 90, 43) },
{ key = "Herbs", color = Color3.fromRGB(34, 139, 34) },
{ key = "Stones", color = Color3.fromRGB(169, 169, 169) },
{ key = "Coconuts", color = Color3.fromRGB(210, 180, 140) },
{ key = "BerryBushes", color = Color3.fromRGB(138, 43, 226) },
{ key = "Weapons", color = Color3.fromRGB(255, 215, 0) },
{ key = "Caches", color = Color3.fromRGB(0, 191, 255) },
{ key = "LootContainers", color = Color3.fromRGB(255, 178, 102) },
{ key = "Food", color = Color3.fromRGB(255, 127, 80) },
{ key = "Healing", color = Color3.fromRGB(0, 255, 127) },
{ key = "Utility", color = Color3.fromRGB(176, 196, 222) },
{ key = "Ammo", color = Color3.fromRGB(192, 192, 192) },
{ key = "AirDrop", color = Color3.fromRGB(255, 0, 0) },
{ key = "Water", color = Color3.fromRGB(0, 105, 148) },
{ key = "Campfire", color = Color3.fromRGB(255, 165, 0) },
{ key = "CaveZone", color = Color3.fromRGB(101, 67, 33) },
{ key = "Players", color = Color3.fromRGB(255, 255, 255) },
}
local ColorByKey = {}
for _, cat in ipairs(Categories) do
ColorByKey[cat.key] = cat.color
end
local WeaponNames = {
"Battle Axe", "Battleaxe", "Sword", "Mace", "Hatchet", "Hammer", "Flail",
"Katana", "Falchion", "Trident", "Kunai", "Knife", "Bow",
"Spear", "Axe", "Machete", "Tomahawk", "Stone-Headed", "Stone-Tipped",
}
local CacheNames = {
"Cache", "Survival Table", "Supplies",
}
local LootContainerNames = {
"Small Crate", "Survival Bag",
}
local FoodNames = {
"Apple", "Bread", "Corn", "Meat", "Berry", "Grape", "Coconut",
}
local HealingNames = {
"Medkit", "Poultice", "Bandage",
}
local UtilityNames = {
"Torch", "Bottle", "Disguise",
}
local AmmoNames = {
"ArrowsDrop", "KnivesDrop", "Arrows", "Knives",
}
local WaterPickupNames = {
"Bottle", "Canteen", "Waterskin", "Water Bottle", "Flask",
}
local esp = {}
local playerEsp = {}
local connections = {}
local watched = {}
local npcCache = {}
local MeleeHit
local weaponSettings
local originalStats = {}
local function applyVisualToHighlight(hl)
hl.FillTransparency = State.Fill and State.FillTransparency or 1
hl.OutlineTransparency = State.OutlineTransparency
hl.DepthMode = State.SeeThrough and Enum.HighlightDepthMode.AlwaysOnTop or Enum.HighlightDepthMode.Occluded
end
local function updateEntry(entry)
if entry.hl then
entry.hl.Enabled = State.Master
end
end
local function refreshVisual()
for _, entry in pairs(esp) do
if entry.hl then
applyVisualToHighlight(entry.hl)
end
end
for _, e in pairs(playerEsp) do
if e.hl then
applyVisualToHighlight(e.hl)
end
end
end
local function refreshAll()
for _, entry in pairs(esp) do
updateEntry(entry)
end
end
local function removeEntry(target)
local entry = esp[target]
if not entry then
return
end
if entry.conn then
pcall(function()
entry.conn:Disconnect()
end)
end
if entry.hl then
pcall(function()
entry.hl:Destroy()
end)
end
esp[target] = nil
end
local function getTarget(inst)
if inst:IsA("Model") then
return inst
elseif inst:IsA("BasePart") then
if inst:FindFirstAncestorWhichIsA("Model") then
return nil
end
return inst
end
return nil
end
local function matchesAny(name, list)
for _, entry in ipairs(list) do
if name:find(entry, 1, true) then
return true
end
end
return false
end
local function classify(inst)
local name = inst.Name
local path = inst:GetFullName()
if path:find("SpawnedTrunks") or name == "Trunk" or name == "Firewood" or name == "Stump" then
return "Trunks"
end
if path:find("SpawnedHerbs") or name == "Herb" then
return "Herbs"
end
if path:find("Stones") and name:find("Stone") then
return "Stones"
end
if path:find("SpawnedCoconuts") or name == "Coconut" then
return "Coconuts"
end
if path:find("SpawnedBerryBushes") and name:find("Bush") then
return "BerryBushes"
end
if path:find("SpawnedDeer") or name == "Deer" then
return "Deer"
end
if path:find("SpawnedWasps") then
return "Wasps"
end
if path:find("Wolves") or name == "Wolf" then
return "Wolves"
end
if path:find("Snakes", 1, true) and name == "Rabid Snake" then
return "Snakes"
end
if path:find("Alligator") then
return "Alligator"
end
if path:find("Mosquito Hive") then
return "MosquitoHive"
end
if path:find("Sewer Zombies") or name == "Zombie" then
return "Zombies"
end
if path:find("Fauna") and name == "Fish" then
return "Fish"
end
if path:find("SpawnedCrabs") or name == "Crab" then
return "Crabs"
end
if path:find("SpawnedBoars") or name == "Boar" then
return "Boars"
end
if name == "AirDrop" then
return "AirDrop"
end
if path:find("Loot") then
if matchesAny(name, LootContainerNames) then
return "LootContainers"
end
if matchesAny(name, AmmoNames) then
return "Ammo"
end
if matchesAny(name, HealingNames) then
return "Healing"
end
if matchesAny(name, FoodNames) then
return "Food"
end
if matchesAny(name, CacheNames) then
return "Caches"
end
if matchesAny(name, WeaponNames) then
return "Weapons"
end
if matchesAny(name, UtilityNames) then
return "Utility"
end
end
if path:find("Sewer Water") then
return "Water"
end
if (path:find("SaltWater") or path:find("WaterZone")) and name == "Water" then
return "Water"
end
if path:find("Campfire") then
return "Campfire"
end
if path:find("CaveZone") and name == "Cave" then
return "CaveZone"
end
return nil
end
local function addHighlight(target, cat)
if esp[target] then
return
end
local hl = Instance.new("Highlight")
hl.Name = "UniverseESP"
hl.Adornee = target
hl.FillColor = ColorByKey[cat]
hl.OutlineColor = ColorByKey[cat]
hl.Enabled = false
hl.Parent = espFolder
applyVisualToHighlight(hl)
local entry = { hl = hl, cat = cat, target = target }
entry.conn = target.Destroying:Connect(function()
removeEntry(target)
end)
esp[target] = entry
updateEntry(entry)
end
local function process(inst)
local target = getTarget(inst)
if not target then
return
end
if esp[target] then
return
end
local cat = classify(target)
if not cat then
return
end
addHighlight(target, cat)
end
local function resolvePath(segments)
local cur = Workspace
for _, seg in ipairs(segments) do
if not cur then
return nil
end
cur = cur:FindFirstChild(seg)
end
return cur
end
local function watchContainer(container)
for _, d in ipairs(container:GetDescendants()) do
process(d)
end
process(container)
local c = container.DescendantAdded:Connect(function(d)
task.defer(process, d)
end)
table.insert(connections, c)
end
local containerSpecs = {
{ "Arena", "Resources" },
{ "Arena", "Edible Foliage" },
{ "Arena", "Fauna" },
{ "Arena", "Fauna", "Snakes" },
{ "Arena", "Snakes" },
{ "Snakes" },
{ "Arena", "Environmental Traps" },
{ "Arena", "Sewer" },
{ "Loot" },
{ "SaltWater" },
{ "WaterZone" },
{ "Campfire" },
{ "CaveZone" },
}
local function tryWatchAll()
for _, spec in ipairs(containerSpecs) do
local c = resolvePath(spec)
if c and not watched[c] then
watched[c] = true
watchContainer(c)
end
end
end
local function makeLabel(parent, size, color, height, order)
local label = Instance.new("TextLabel")
label.BackgroundTransparency = 1
label.Size = UDim2.new(1, 0, 0, height)
label.LayoutOrder = order
label.Font = ESP_FONT
label.TextSize = size
label.TextColor3 = color or ColorByKey.Players
label.TextStrokeTransparency = 1
label.TextXAlignment = Enum.TextXAlignment.Center
label.TextYAlignment = Enum.TextYAlignment.Center
label.Text = ""
local stroke = Instance.new("UIStroke")
stroke.Thickness = 2
stroke.Color = Color3.fromRGB(0, 0, 0)
stroke.Transparency = 0
stroke.LineJoinMode = Enum.LineJoinMode.Round
stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Contextual
stroke.Parent = label
local gradient = Instance.new("UIGradient")
gradient.Rotation = 90
gradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 255, 255)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(200, 200, 200)),
})
gradient.Parent = label
label.Parent = parent
return label
end
local function destroyBillboards(e)
if e.billboard then
pcall(function()
e.billboard:Destroy()
end)
e.billboard = nil
e.nameLabel = nil
e.distLabel = nil
end
end
local function buildBillboards(e, hrp)
local bb = Instance.new("BillboardGui")
bb.Name = "UniversePlayer"
bb.Size = UDim2.fromOffset(240, 44)
bb.StudsOffset = Vector3.new(0, -6.2, 0)
bb.AlwaysOnTop = true
bb.ResetOnSpawn = false
bb.Adornee = hrp
bb.Enabled = false
bb.Parent = hrp
local holder = Instance.new("Frame")
holder.BackgroundTransparency = 1
holder.Size = UDim2.fromScale(1, 1)
holder.Parent = bb
local layout = Instance.new("UIListLayout")
layout.FillDirection = Enum.FillDirection.Vertical
layout.HorizontalAlignment = Enum.HorizontalAlignment.Center
layout.VerticalAlignment = Enum.VerticalAlignment.Top
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Padding = UDim.new(0, 3)
layout.Parent = holder
e.billboard = bb
e.nameLabel = makeLabel(holder, 16, Color3.fromRGB(255, 255, 255), 22, 1)
e.distLabel = makeLabel(holder, 13, Color3.fromRGB(190, 210, 255), 18, 2)
end
local function createPlayerVisuals(plr, e)
local color = ColorByKey.Players
local hl = Instance.new("Highlight")
hl.Name = "UniverseESP"
hl.FillColor = color
hl.OutlineColor = color
hl.Enabled = false
hl.Parent = espFolder
applyVisualToHighlight(hl)
e.hl = hl
end
local function removePlayerEsp(plr)
local e = playerEsp[plr]
if not e then
return
end
if e.hl then
pcall(function()
e.hl:Destroy()
end)
end
destroyBillboards(e)
playerEsp[plr] = nil
end
local function setupPlayer(plr)
if plr == LocalPlayer then
return
end
if playerEsp[plr] then
return
end
local e = {}
playerEsp[plr] = e
createPlayerVisuals(plr, e)
end
local function updatePlayers()
local myChar = LocalPlayer.Character
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
for plr, e in pairs(playerEsp) do
local char = plr.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
local hum = char and char:FindFirstChildOfClass("Humanoid")
local alive = hum ~= nil and hum.Health > 0
local valid = State.Master and char ~= nil and hrp ~= nil and alive and hrp:IsDescendantOf(Workspace)
if e.hl then
e.hl.Adornee = valid and char or nil
e.hl.Enabled = valid
end
if hrp then
if (not e.billboard) or e.billboard.Parent ~= hrp then
destroyBillboards(e)
buildBillboards(e, hrp)
end
else
if e.billboard then
destroyBillboards(e)
end
end
if e.billboard then
e.billboard.Enabled = valid
end
if valid then
if e.nameLabel then
e.nameLabel.Text = plr.DisplayName
end
if e.distLabel then
local d = 0
if myRoot then
d = math.floor((hrp.Position - myRoot.Position).Magnitude)
end
e.distLabel.Text = d .. " studs"
end
end
end
end
local function enforceSpeed()
if not State.SpeedEnabled then
return
end
local char = LocalPlayer.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hum and hum.Health > 0 then
if hum.WalkSpeed ~= State.Speed then
hum.WalkSpeed = State.Speed
end
end
end
local function getWeaponTool()
local char = LocalPlayer.Character
if not char then
return nil
end
for _, t in ipairs(char:GetChildren()) do
if t:IsA("Tool") and t:GetAttribute("WeaponName") then
return t
end
end
return nil
end
local function fireMeleeHit(targetChar, targetPlayer, weaponName, attackIndex)
if not MeleeHit then
return
end
pcall(function()
MeleeHit:FireServer({
Type = "Hit",
Attacker = LocalPlayer,
WeaponName = weaponName,
AttackIndex = attackIndex,
TargetModel = targetChar,
TargetPlayer = targetPlayer,
HitPartName = "HumanoidRootPart",
})
end)
end
local function rebuildNpcCache()
local list = {}
for _, d in ipairs(Workspace:GetDescendants()) do
if d:IsA("Humanoid") and d.Health > 0 then
local model = d.Parent
if model and not Players:GetPlayerFromCharacter(model) then
local root = model:FindFirstChild("HumanoidRootPart") or model.PrimaryPart or model:FindFirstChildWhichIsA("BasePart")
if root then
table.insert(list, { char = model, root = root })
end
end
end
end
npcCache = list
end
local function collectTargets(range)
local out = {}
local myChar = LocalPlayer.Character
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
if not myRoot then
return out
end
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and plr.Character then
local hum = plr.Character:FindFirstChildOfClass("Humanoid")
local hrp = plr.Character:FindFirstChild("HumanoidRootPart")
if hum and hrp and hum.Health > 0 then
if (hrp.Position - myRoot.Position).Magnitude <= range then
table.insert(out, { char = plr.Character, player = plr })
end
end
end
end
for _, npc in ipairs(npcCache) do
if npc.char and npc.char.Parent and npc.root and npc.root.Parent then
if (npc.root.Position - myRoot.Position).Magnitude <= range then
table.insert(out, { char = npc.char, player = nil })
end
end
end
return out
end
local function applyExtender(size)
if not weaponSettings then
return false
end
local sizeVec = Vector3.new(size, size, size)
local offVec = Vector3.new(0, 0, 0)
for name, data in pairs(weaponSettings) do
if type(data) == "table" and (data.HitboxSize ~= nil or data.Attack1 ~= nil) then
if originalStats[name] == nil then
local saved = { size = data.HitboxSize, offset = data.HitboxOffset, a = {} }
for i = 1, 3 do
local atk = data["Attack" .. i]
if type(atk) == "table" then
saved.a[i] = { size = atk.HitboxSize, offset = atk.HitboxOffset, dt = atk.DamageTime }
end
end
originalStats[name] = saved
end
data.HitboxSize = sizeVec
data.HitboxOffset = offVec
for i = 1, 3 do
local atk = data["Attack" .. i]
if type(atk) == "table" then
atk.HitboxSize = sizeVec
atk.HitboxOffset = offVec
atk.DamageTime = 1.5
end
end
end
end
return true
end
local function restoreExtender()
if not weaponSettings then
return
end
for name, saved in pairs(originalStats) do
local data = weaponSettings[name]
if type(data) == "table" then
data.HitboxSize = saved.size
data.HitboxOffset = saved.offset
for i = 1, 3 do
if saved.a[i] then
local atk = data["Attack" .. i]
if type(atk) == "table" then
atk.HitboxSize = saved.a[i].size
atk.HitboxOffset = saved.a[i].offset
atk.DamageTime = saved.a[i].dt
end
end
end
end
end
originalStats = {}
end
local function updateExtender()
if not weaponSettings then
return
end
if State.KillAura then
applyExtender(KA_HITBOX)
else
restoreExtender()
end
end
local function doKillAura()
local char = LocalPlayer.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if not (hum and hrp and hum.Health > 0) then
return
end
local tool = getWeaponTool()
if not tool then
return
end
local weaponName = tool:GetAttribute("WeaponName")
if not weaponName then
return
end
local targets = collectTargets(KA_RANGE)
for _, t in ipairs(targets) do
if not (t.player and isWhitelisted(t.player)) then
for i = 1, 3 do
fireMeleeHit(t.char, t.player, weaponName, i)
end
end
end
end
local function isConsumable(target, cat)
if cat == "Food" or cat == "Healing" then
return true
end
if matchesAny(target.Name, WaterPickupNames) then
return true
end
return false
end
local function getPickupPart(target)
if target:IsA("BasePart") then
return target
end
if target:IsA("Model") then
if target.PrimaryPart then
return target.PrimaryPart
end
return target:FindFirstChildWhichIsA("BasePart", true)
end
return nil
end
local function collectPickup(target)
local prompt = target:FindFirstChildWhichIsA("ProximityPrompt", true)
if prompt and fireproximityprompt then
pcall(fireproximityprompt, prompt)
return
end
local btn = target:FindFirstChildWhichIsA("ClickDetector", true)
if btn and fireclickdetector then
pcall(fireclickdetector, btn)
return
end
if firetouchinterest then
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
local part = getPickupPart(target)
if hrp and part then
pcall(firetouchinterest, hrp, part, 0)
pcall(firetouchinterest, hrp, part, 1)
end
end
end
local function doAutoPickup()
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if not hrp then
return
end
for target, entry in pairs(esp) do
if target and target.Parent and isConsumable(target, entry.cat) then
local part = getPickupPart(target)
if part and (part.Position - hrp.Position).Magnitude <= PICKUP_RANGE then
collectPickup(target)
end
end
end
end
local function cleanup()
for _, c in ipairs(connections) do
pcall(function()
c:Disconnect()
end)
end
for target, entry in pairs(esp) do
if entry.conn then
pcall(function()
entry.conn:Disconnect()
end)
end
if entry.hl then
pcall(function()
entry.hl:Destroy()
end)
end
esp[target] = nil
end
for plr in pairs(playerEsp) do
removePlayerEsp(plr)
end
pcall(restoreExtender)
applyFullbright(false)
applyClearView(false)
restoreWalkSpeed()
pcall(function()
espFolder:Destroy()
end)
end
task.spawn(function()
local ms = ReplicatedStorage:WaitForChild("MeleeSystem", 10)
if ms then
local ev = ms:WaitForChild("Events", 10)
if ev then
MeleeHit = ev:WaitForChild("MeleeHit", 10)
end
end
end)
task.spawn(function()
local ws = ReplicatedStorage:WaitForChild("Weapon Settings", 10)
if ws and ws:IsA("ModuleScript") then
local ok, res = pcall(require, ws)
if ok and type(res) == "table" then
weaponSettings = res
updateExtender()
end
end
end)
tryWatchAll()
local arena = Workspace:FindFirstChild("Arena")
if arena then
local ac = arena.ChildAdded:Connect(function()
task.defer(tryWatchAll)
end)
table.insert(connections, ac)
end
local wc = Workspace.ChildAdded:Connect(function()
task.defer(tryWatchAll)
end)
table.insert(connections, wc)
task.spawn(function()
while espFolder.Parent do
task.wait(3)
tryWatchAll()
end
end)
for _, plr in ipairs(Players:GetPlayers()) do
setupPlayer(plr)
end
local paConn = Players.PlayerAdded:Connect(function(plr)
setupPlayer(plr)
end)
table.insert(connections, paConn)
local prConn = Players.PlayerRemoving:Connect(function(plr)
removePlayerEsp(plr)
end)
table.insert(connections, prConn)
local jumpConn = UserInputService.InputBegan:Connect(function(input, gameProcessed)
if not State.Jump then
return
end
if gameProcessed then
return
end
if input.KeyCode == Enum.KeyCode.Space or input.KeyCode == Enum.KeyCode.ButtonA then
local char = LocalPlayer.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hum and hum.Health > 0 then
hum:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end)
table.insert(connections, jumpConn)
local tagAcc = 0
local kaAcc = 0
local npcAcc = 0
local extAcc = 0
local pickupAcc = 0
local mainLoop = RunService.Heartbeat:Connect(function(dt)
enforceSpeed()
if State.Fullbright then
applyFullbright(true)
end
if State.ClearView then
applyClearView(true)
end
tagAcc = tagAcc + dt
if tagAcc >= 0.05 then
tagAcc = 0
updatePlayers()
end
npcAcc = npcAcc + dt
if npcAcc >= 1 then
npcAcc = 0
if State.KillAura then
rebuildNpcCache()
end
end
extAcc = extAcc + dt
if extAcc >= 1 then
extAcc = 0
if State.KillAura then
updateExtender()
end
end
kaAcc = kaAcc + dt
if kaAcc >= KA_DELAY then
kaAcc = 0
if State.KillAura then
doKillAura()
end
end
pickupAcc = pickupAcc + dt
if pickupAcc >= 0.2 then
pickupAcc = 0
if State.AutoPickup then
doAutoPickup()
end
end
end)
table.insert(connections, mainLoop)
local MainTab = Window:AddTab("Main", "sparkles")
local VisualsBox = MainTab:AddLeftGroupbox("Visuals", "eye")
local MasterToggle = VisualsBox:AddToggle("ESP_Master", {
Text = "ESP",
Default = false,
})
MasterToggle:OnChanged(function()
State.Master = MasterToggle.Value
refreshAll()
end)
local FullbrightToggle = VisualsBox:AddToggle("Fullbright", {
Text = "Fullbright",
Default = false,
})
FullbrightToggle:OnChanged(function()
State.Fullbright = FullbrightToggle.Value
applyFullbright(State.Fullbright)
end)
local ClearViewToggle = VisualsBox:AddToggle("ClearView", {
Text = "Clear View (No Fog / Blur)",
Default = false,
})
ClearViewToggle:OnChanged(function()
State.ClearView = ClearViewToggle.Value
applyClearView(State.ClearView)
end)
local MovementBox = MainTab:AddLeftGroupbox("Movement", "footprints")
local JumpToggle = MovementBox:AddToggle("JumpMod", {
Text = "Jump (No CD / Stackable)",
Default = false,
})
JumpToggle:OnChanged(function()
State.Jump = JumpToggle.Value
end)
local SpeedToggle = MovementBox:AddToggle("SpeedEnabled", {
Text = "Speed",
Default = false,
})
SpeedToggle:OnChanged(function()
State.SpeedEnabled = SpeedToggle.Value
if not State.SpeedEnabled then
restoreWalkSpeed()
end
end)
MovementBox:AddSlider("Speed", {
Text = "Walk Speed",
Default = 28,
Min = 1,
Max = 40,
Rounding = 0,
Callback = function(value)
State.Speed = value
end,
})
local CombatBox = MainTab:AddRightGroupbox("Combat", "swords")
local KAToggle = CombatBox:AddToggle("KA_Enabled", {
Text = "Kill Aura",
Default = false,
})
KAToggle:OnChanged(function()
State.KillAura = KAToggle.Value
if State.KillAura then
rebuildNpcCache()
end
updateExtender()
end)
CombatBox:AddDivider()
local function getWhitelistDisplayNames()
local values = {}
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer then
table.insert(values, plr.DisplayName)
end
end
table.sort(values, function(a, b)
return a:lower() < b:lower()
end)
return values
end
local WLDropdown = CombatBox:AddDropdown("KA_Whitelist", {
Text = "Don't damage",
Values = getWhitelistDisplayNames(),
Multi = true,
Default = {},
})
WLDropdown:OnChanged(function(value)
local set = {}
for name, selected in pairs(value or {}) do
if selected then
set[tostring(name):lower()] = true
end
end
whitelist = set
end)
local function refreshWhitelistDisplayNames()
local selected = WLDropdown.Value or {}
local values = getWhitelistDisplayNames()
local available = {}
local preserved = {}
for _, name in ipairs(values) do
available[name] = true
end
for name, enabled in pairs(selected) do
if enabled and available[name] then
preserved[name] = true
end
end
WLDropdown:SetValues(values)
WLDropdown:SetValue(preserved)
end
local wlAddedConn = Players.PlayerAdded:Connect(function()
task.defer(refreshWhitelistDisplayNames)
end)
table.insert(connections, wlAddedConn)
local wlRemovingConn = Players.PlayerRemoving:Connect(function()
task.defer(refreshWhitelistDisplayNames)
end)
table.insert(connections, wlRemovingConn)
CombatBox:AddLabel("Select in-match players to protect from Kill Aura.", true)
local UtilityBox = MainTab:AddRightGroupbox("Utility", "package")
local PickupToggle = UtilityBox:AddToggle("AutoPickup", {
Text = "Auto Pickup (Food & Health)",
Default = false,
})
PickupToggle:OnChanged(function()
State.AutoPickup = PickupToggle.Value
end)
local SettingsTab = Window:AddTab("Settings", "sliders-horizontal")
SaveManager:SetLibrary(Library)
SaveManager:IgnoreThemeSettings()
SaveManager:SetFolder("Arena of Survival")
SaveManager:SetIgnoreIndexes({ "MenuKeybind" })
ThemeManager:SetLibrary(Library)
ThemeManager:SetFolder("Arena of Survival")
local ConfigGroupbox = SettingsTab:AddLeftGroupbox("Configuration", "folder-cog")
ConfigGroupbox:AddInput("SaveManager_ConfigName", {
Text = "Config name",
Placeholder = "My Config",
})
ConfigGroupbox:AddButton("Create config", function()
local name = Library.Options.SaveManager_ConfigName.Value
if name:gsub(" ", "") == "" then
Library:Notify("Invalid config name (empty)", 2)
return
end
local success, err = SaveManager:Save(name)
if not success then
Library:Notify("Failed to create config: " .. err)
return
end
Library:Notify(string.format("Created config %q", name))
Library.Options.SaveManager_ConfigList:SetValues(SaveManager:RefreshConfigList())
Library.Options.SaveManager_ConfigList:SetValue(nil)
end)
ConfigGroupbox:AddDivider()
ConfigGroupbox:AddDropdown("SaveManager_ConfigList", {
Text = "Config list",
Values = SaveManager:RefreshConfigList(),
AllowNull = true,
})
ConfigGroupbox:AddButton("Load config", function()
local name = Library.Options.SaveManager_ConfigList.Value
local success, err = SaveManager:Load(name)
if not success then
Library:Notify("Failed to load config: " .. err)
return
end
Library:Notify(string.format("Loaded config %q", name))
end)
ConfigGroupbox:AddButton("Overwrite config", function()
local name = Library.Options.SaveManager_ConfigList.Value
local success, err = SaveManager:Save(name)
if not success then
Library:Notify("Failed to overwrite config: " .. err)
return
end
Library:Notify(string.format("Overwrote config %q", name))
end)
ConfigGroupbox:AddButton("Refresh list", function()
Library.Options.SaveManager_ConfigList:SetValues(SaveManager:RefreshConfigList())
Library.Options.SaveManager_ConfigList:SetValue(nil)
end)
local AutoloadLabel = ConfigGroupbox:AddLabel("Current autoload config: " .. SaveManager:GetAutoloadConfig(), true)
ConfigGroupbox:AddButton("Set as autoload", function()
local name = Library.Options.SaveManager_ConfigList.Value
local success, err = SaveManager:SaveAutoloadConfig(name)
if not success then
Library:Notify("Failed to set autoload config: " .. err)
return
end
Library:Notify(string.format("Set %q to auto load", name))
AutoloadLabel:SetText("Current autoload config: " .. name)
end)
ConfigGroupbox:AddButton("Reset autoload", function()
local success, err = SaveManager:DeleteAutoLoadConfig()
if not success then
Library:Notify("Failed to reset autoload config: " .. err)
return
end
Library:Notify("Set autoload to none")
AutoloadLabel:SetText("Current autoload config: none")
end)
local MenuGroup = SettingsTab:AddRightGroupbox("Menu", "wrench")
MenuGroup:AddLabel("Menu bind"):AddKeyPicker("MenuKeybind", {
Default = "RightControl",
NoUI = true,
Text = "Menu keybind",
})
MenuGroup:AddButton("Unload", function()
Library:Unload()
end)
SaveManager:SetIgnoreIndexes({ "SaveManager_ConfigList", "SaveManager_ConfigName", "MenuKeybind", "KA_Whitelist" })
Library.ToggleKeybind = Library.Options.MenuKeybind
ThemeManager:ApplyToTab(SettingsTab)
SaveManager:LoadAutoloadConfig()
task.defer(function()
refreshVisual()
refreshAll()
updatePlayers()
end)
Library:OnUnload(function()
cleanup()
print("Script unloaded successfully.")
end)
No comments yet. Be the first!