What's new
Heapleak - Scripthub

Get the most out of HeapLeak by creating a free account! Once signed in, you’ll gain full access to restricted content, be able to share your own scripts, and participate in our member-only discussions.

Cursed Blade[ALPHA] | AutoFarm, Auto Sell, Auto Loot, more..

Version / Update: v1.0.0
Download / Script Link
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local VirtualInputManager = game:GetService("VirtualInputManager")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

--// LOAD RAYFIELD
local Rayfield = loadstring(game:HttpGet("https://sirius.menu/rayfield"))()

local Window = Rayfield:CreateWindow({
Name = "Cursed Blade V1.61",
LoadingTitle = "Loading...",
LoadingSubtitle = "by Marci",
ConfigurationSaving = {Enabled = false}
})

local MainTab = Window:CreateTab("Main", 4483362458)

-- =========================
-- STATES
-- =========================

_G.AutoFarmEnabled = false
_G.RemoteSpamEnabled = false
_G.HitboxEnabled = false
_G.SkillRemoteEnabled = false
_G.AutoLootEnabled = false

-- =========================
-- TOGGLES
-- =========================

MainTab:CreateToggle({
Name = "Auto Farm V1",
CurrentValue = false,
Callback = function(v)
_G.AutoFarmEnabled = v
end
})

MainTab:CreateToggle({
Name = "Auto Farm V2",
CurrentValue = false,
Callback = function(v)
_G.SkillRemoteEnabled = v
end
})

MainTab:CreateToggle({
Name = "Auto Loot",
CurrentValue = false,
Callback = function(v)
_G.AutoLootEnabled = v
end
})

MainTab:CreateToggle({
Name = "Auto Sell",
CurrentValue = false,
Callback = function(v)
_G.RemoteSpamEnabled = v
end
})

MainTab:CreateToggle({
Name = "Hitbox Expander",
CurrentValue = false,
Callback = function(v)
_G.HitboxEnabled = v
end
})

-- =========================
-- CHARACTER
-- =========================

local hrp
local function bindCharacter(char)
hrp = char:WaitForChild("HumanoidRootPart")
end

if player.Character then bindCharacter(player.Character) end
player.CharacterAdded:Connect(bindCharacter)

local entityFolder = workspace:WaitForChild("Entity")
local fxFolder = workspace:WaitForChild("FX")

local PULL_OFFSET = CFrame.new(0, 2, -10)
local LOOT_DELAY = 2

-- =========================
-- MOB SYSTEM
-- =========================

local mobs = {}

local function registerMob(mob)
if not mob:IsA("Model") then return end
if mobs[mob] then return end

local humanoid = mob:FindFirstChildOfClass("Humanoid")
local root = mob:FindFirstChild("HumanoidRootPart") or mob.PrimaryPart

if humanoid and root then
mobs[mob] = {humanoid = humanoid, root = root}

humanoid.Died:Connect(function()
mobs[mob] = nil
end)
end
end

for _, mob in ipairs(entityFolder:GetChildren()) do
registerMob(mob)
end

entityFolder.ChildAdded:Connect(registerMob)
entityFolder.ChildRemoved:Connect(function(m) mobs[m] = nil end)

RunService.Heartbeat:Connect(function()
if not _G.AutoFarmEnabled or not hrp then return end

local base = hrp.CFrame * PULL_OFFSET

for mob, data in pairs(mobs) do
local humanoid = data.humanoid
local root = data.root

if humanoid and root and humanoid.Health > 0 then
pcall(function()
root:SetNetworkOwner(player)
end)

if mob.PrimaryPart then
mob:PivotTo(base)
else
root.CFrame = base
end

root.AssemblyLinearVelocity = Vector3.zero
root.AssemblyAngularVelocity = Vector3.zero
end
end
end)

-- =========================
-- HITBOX
-- =========================

local HITBOX_SIZE = Vector3.new(1000,1000,1000)
local hitboxCache = {}

task.spawn(function()
while true do
if _G.HitboxEnabled then
for _, mob in ipairs(entityFolder:GetChildren()) do
local hrp = mob:FindFirstChild("HumanoidRootPart")
if hrp then
if not hitboxCache[mob] then
hitboxCache[mob] = hrp.Size
end
hrp.Size = HITBOX_SIZE
hrp.Transparency = 1
end
end
else
for mob, size in pairs(hitboxCache) do
if mob and mob.Parent then
local hrp = mob:FindFirstChild("HumanoidRootPart")
if hrp then
hrp.Size = size
hrp.Transparency = 0
end
end
end
end
task.wait(0.3)
end
end)

-- =========================
-- SKILLS (CD SYSTEM + FAILSAFE)
-- =========================

local skillUI
local cooldowns = {}

local function bindSkillUI()
cooldowns = {}

local skillFolder = playerGui:FindFirstChild("GamePanel")
and playerGui.GamePanel.MobilePanel.PC.Skill

if not skillFolder then return end

for _, key in ipairs({"Q","F","R"}) do
local val = skillFolder[key].CD.CDVaule
if val then cooldowns[key] = val end
end
end

task.wait(1)
bindSkillUI()

local function isReady(cd)
if not cd then return false end
return cd.Text == "" or tonumber(cd.Text) == 0
end

task.spawn(function()
while true do
if _G.AutoFarmEnabled then
for _, key in ipairs({"R","F","Q"}) do
local cd = cooldowns[key]
if isReady(cd) then
VirtualInputManager:SendKeyEvent(true,key,false,game)
task.wait(0.05)
VirtualInputManager:SendKeyEvent(false,key,false,game)
end
end
end
task.wait(0.1)
end
end)

-- FAILSAFE
task.spawn(function()
while true do
if _G.AutoFarmEnabled then
for _, key in ipairs({"Q","F"}) do
VirtualInputManager:SendKeyEvent(true,key,false,game)
task.wait(0.05)
VirtualInputManager:SendKeyEvent(false,key,false,game)
end
end
task.wait(0.5)
end
end)

-- =========================
-- AUTO LOOT
-- =========================

task.spawn(function()
while true do
if _G.AutoLootEnabled and hrp then
for _, fx in ipairs(fxFolder:GetChildren()) do
if fx:IsA("BasePart") then
fx.CFrame = hrp.CFrame
elseif fx:IsA("Model") and fx.PrimaryPart then
fx:SetPrimaryPartCFrame(hrp.CFrame)
end
end
end

task.wait(2)
end
end)

-- =========================
-- REMOTE SKILL ATTACK SYSTEM (OP)
-- =========================

local netFolder, setState, triggerSkill

local function bindNetSkill(char)
netFolder = char:WaitForChild("NetMessage")
setState = netFolder:WaitForChild("SetState")
triggerSkill = netFolder:WaitForChild("TrigerSkill")
end

if player.Character then bindNetSkill(player.Character) end
player.CharacterAdded:Connect(bindNetSkill)

-- Weapon folders
local swordFolder = ReplicatedStorage:WaitForChild("Model"):WaitForChild("Item"):WaitForChild("Weapon"):WaitForChild("Sword")
local staffFolder = ReplicatedStorage:WaitForChild("Model"):WaitForChild("Item"):WaitForChild("Weapon"):WaitForChild("Staff")

local SKILL_KEY = "Enter"
local SKILL_MODE = 1

-- OP SETTINGS
local HITS_PER_TARGET = 3
local ATTACK_DELAY = 0.08

-- =========================
-- WEAPON CACHE
-- =========================
local currentSkillID = 101

local function getEquippedWeaponName()
local success, result = pcall(function()
return player.PlayerGui
.EquipPanel.Main.EquipInfo.Main.Page.PlayerEquip
.Equipment_Slot.Slot2.Weapon.ItemInfo.ItemName.Text
end)

return success and result or nil
end

task.spawn(function()
while true do
local weaponName = getEquippedWeaponName()

if weaponName then
if swordFolder:FindFirstChild(weaponName) then
currentSkillID = 101
elseif staffFolder:FindFirstChild(weaponName) then
currentSkillID = 103
else
currentSkillID = 101
end
end

task.wait(0.5)
end
end)

-- =========================
-- TARGET CFrame
-- =========================
local function getTargetCFrame(entity)
local baseCF

if entity:IsA("Model") then
local root = entity:FindFirstChild("HumanoidRootPart") or entity.PrimaryPart
if root then baseCF = root.CFrame end
elseif entity:IsA("BasePart") then
baseCF = entity.CFrame
end

if not baseCF then return nil end

-- ✅ KEEP ROTATION, only move position
if USE_RANDOM_OFFSET then
local offset = Vector3.new(
math.random(-2,2),
math.random(-2,2),
math.random(-2,2)
)

return CFrame.new(baseCF.Position + offset, baseCF.Position)
end

return baseCF
end

-- =========================
-- ATTACK ENTITY (MULTI HIT)
-- =========================
local function attackEntity(entity)
if not setState or not triggerSkill then return end

local cf = getTargetCFrame(entity)
if not cf then return end

for i = 1, HITS_PER_TARGET do
setState:FireServer("action", true)

triggerSkill:FireServer(
currentSkillID,
SKILL_KEY,
cf,
SKILL_MODE
)

setState:FireServer("action", false)
end
end

-- =========================
-- MAIN LOOP (CONTROLLED)
-- =========================
task.spawn(function()
while true do
if _G.SkillRemoteEnabled then
for _, entity in ipairs(entityFolder:GetChildren()) do
attackEntity(entity)
task.wait(0.02) -- small per-target spacing
end
end

task.wait(ATTACK_DELAY)
end
end)

-- =========================
-- AUTO SELL
-- =========================

local payload = table.create(100)
for i = 1, 100 do payload[i] = i end

local remote = ReplicatedStorage:WaitForChild("Remote"):WaitForChild("RemoteEvent")
local setState

local function bindNet(char)
local net = char:WaitForChild("NetMessage")
setState = net:WaitForChild("SetState")
end

if player.Character then bindNet(player.Character) end
player.CharacterAdded:Connect(bindNet)

local function doSell()
if not setState then return end

setState:FireServer("action", true)
task.wait(0.05)
setState:FireServer("action", false)
remote:FireServer(539767613, payload)
end

task.spawn(function()
while true do
if _G.RemoteSpamEnabled then
doSell()
task.wait(30)
else
task.wait(0.5)
end
end
end)
[ View More ]
ade0493c-8533-4cf9-ae0f-adce4b6ca296.webp


Hello, this is a Cursed Blade script that i did with chatgpt, not fully ai script tho! chatgpt messed many things up so i fixed some of those problems!Autofarm V1: You need to equip a weapon and skills to work properly, it's teleports all enemies infront of you and skills automatically used (if not then just use one skill manually and should work!).Autofarm V2: You don't have to use weapon but recommended for faster progress, it's kills everything on the map you just need to afk.Auto Sell: Automatically sells your drops that you got from the dungeon, you can use it in dungeon and in lobby too.Auto Loot: Automatically loot your drops that you got from the killed mobs and bosses. (sometimes it's bugged so just turn it off and on again)Hitbox Expander: It's works sometimes, this feature is still in development!THERE IS NOT BULLSH*T HIDDEN KEY SYSTEM IN THE SCRIPT!
 
Back
Top