![Arise Crossover : HACX HUB [KEYLESS]](https://scriptblox.com/images/sb/rbx-1367e937af0967a801ab12f7f494ec68-1e9fd39bf3ee.png)
Keyless

if Fluent then
Fluent:Destroy()
end
local perfectusfolder = "PerfectusHubv2"
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TweenService = game:GetService("TweenService")
local TeleportService = game:GetService("TeleportService")
local VirtualUser = game:GetService("VirtualUser")
local workspace = game:GetService("Workspace")
local LocalPlayer = game:GetService("Players").LocalPlayer
local Inventory = LocalPlayer:FindFirstChild("leaderstats") and LocalPlayer.leaderstats:FindFirstChild("Inventory")
local player = game:GetService("Players").LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
local hrp = character:WaitForChild("HumanoidRootPart")
local enemiesFolder = workspace:WaitForChild("__Main"):WaitForChild("__Enemies"):WaitForChild("Client")
local dungeonFolder = workspace:WaitForChild("__Main"):WaitForChild("__Dungeon")
local remote = game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent
local AppearFolder = workspace:FindFirstChild("__Extra") and workspace.__Extra:FindFirstChild("__Appear")
local userFolder = workspace.__Main.__Pets:WaitForChild(tostring(LocalPlayer.UserId))
local PET_FOLDER = userFolder:GetChildren()
local PET_EVENT = require(game:GetService("ReplicatedStorage").BridgeNet2).ReferenceBridge("PET_EVENT")
local infshadow = game:GetService("Players").LocalPlayer.leaderstats.PlayerStats
local degisiklik2 = "\005"
local orosbucocugu = "\010"
local winterServerHopEnabled = false
local winterServerPreference = "Low Player Server"
local WINTER_CFRAME = CFrame.new(4755.91406,29.7264385,-2026.7511)
local WINTER_CFRAME2 = CFrame.new(4856.24707, 29.7264633, -2101.28369, 0.373035252, -3.37695298e-07, -0.927817166, 2.59595424e-07, 1, -2.59595367e-07, 0.927817166, -1.4401887e-07, 0.373035252)
local ignoredWinterMobs = {}
local winterEndBoss = "Snow Monarch"
local function sendAttackCommand(targetName, ariseToggle)
local dataRemoteEvent = ReplicatedStorage:WaitForChild("BridgeNet2"):WaitForChild("dataRemoteEvent")
if ariseToggle then
LocalPlayer:SetAttribute("PetsArise", false)
task.wait(0.02)
LocalPlayer:SetAttribute("PetsArise", true)
task.wait(0.02)
end
local trialKeys = {"\004", "\005", "\006", "\007", "\008", "\009", "\010", "\011", "\012"}
for _, key in ipairs(trialKeys) do
local args = {
[1] = {
[1] = {
["PetPos"] = {},
["AttackType"] = "All",
["Event"] = "Attack",
["Enemy"] = targetName
},
[2] = key
}
}
dataRemoteEvent:FireServer(unpack(args))
task.wait(0.1)
end
end
local function teleportPetsToTargetPart(targetPart)
if not targetPart or not targetPart:IsA("BasePart") then
warn("Geçersiz targetPart! Bir BasePart olmalı.")
return
end
local petsFolder = game.Workspace:FindFirstChild("__Main") and game.Workspace.__Main:FindFirstChild("__Pets")
if not petsFolder then
warn("__Pets klasörü bulunamadı!")
return
end
for _, userIdFolder in pairs(petsFolder:GetChildren()) do
if userIdFolder:IsA("Folder") then
for _, petFolder in pairs(userIdFolder:GetChildren()) do
if petFolder:IsA("Folder") then
for _, model in pairs(petFolder:GetChildren()) do
if model:IsA("Model") then
if not model.PrimaryPart then
local humanoidRootPart = model:FindFirstChild("HumanoidRootPart")
if humanoidRootPart then
model.PrimaryPart = humanoidRootPart
else
warn(model.Name .. " modelinde HumanoidRootPart bulunamadı!")
continue
end
end
local targetCFrame = targetPart.CFrame * CFrame.new(0, model.PrimaryPart.Position.Y - targetPart.Position.Y, 0)
model:SetPrimaryPartCFrame(targetCFrame)
print(model.Name .. " modeli teleport edildi: " .. tostring(targetCFrame))
end
end
end
end
end
end
end
local function loadLibrary()
local Library = loadstring(game:HttpGet("https://github.com/1dontgiveaf/Fluent/releases/latest/download/main.lua"))()
task.wait(0.1)
local SaveManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/1dontgiveaf/Fluent/main/Addons/SaveManager.lua"))()
task.wait(0.1)
local InterfaceManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/1dontgiveaf/Fluent/main/Addons/InterfaceManager.lua"))()
return Library, SaveManager, InterfaceManager
end
local Library, SaveManager, InterfaceManager = loadLibrary()
local teleportEnabled = false
local teleportingEnabled = false
local castleFarmEnabled = false
local autoFarmV2Enabled = false
local autoRankEnabled = false
local autoEquipEnabled = false
local damageEnabled = false
local DelayToggle = false
local autoPotionEnabled = false
local killedNPCs = {}
local dungeonkill = {}
local castlekill = {}
local targetedEnemies = {}
local selectedMobName = ""
local movementMethod = "Teleport"
local farmingStyle = "Normal"
local selectedWorlds = {}
local selectedRanks = {}
local selectedDungeonTypes = {}
local autoBuyTicketEnabled = false
local selectedPotions = {}
local selectedMobTypes = {}
local targetFloor = 100
local maxDistance = 120
local CastleDelay = 0.7
local DungeonDelay = 0.7
local DungeonDelay2 = 6
local SelectedLevel = 1
local castleFarmMethod = "Teleport"
local castleTweenSpeed = 0.7
local dungeonFarmMethod = "Teleport"
local dungeonTweenSpeed = 0.7
local mainTweenSpeed = 0.7
local ariseDestroyDelay = 0.1
local autoUseDungeonRune = false
local autoUseDungeonRejoinRune = false
local autoResetCastleEnabled = false
local castleBossPriorityEnabled = false
local selectedDungeonRunes = {}
local castleDungeonExitMode = "Wait for Dungeon to End"
local autoExitDungeonForCastle = false
local autoLoadCheckpointsCastle = true
local webhookUrl = ""
local webhookEnabled = false
local winterFarmEnabled = false
local winterFarmMethod = "Teleport"
local winterTweenSpeed = 0.7
local winterWalkSpeed = 32
local winterFarmDelay = 1
local savedWinterPosition = nil
local autoReturnEnabled = false
local disableDungeonDuringWinter = false
local disableCastleDuringWinter = false
local isWinterActive = false
local selectedCheckpoint = "False"
local checkpointsEnabled = false
local POTION_TYPES = {
"ExpPotion",
"GemsPotion",
"DropsPotion",
"CoinsPotion",
"ShadowPotion"
}
local MOB_TYPES = {
"Normal",
"Big"
}
local rankMapping = {
["E"] = 1,
["D"] = 2,
["C"] = 3,
["B"] = 4,
["A"] = 5,
["S"] = 6,
["SS"] = 7
}
local function getRankLetter(numRank)
for letter, number in pairs(rankMapping) do
if number == numRank then
return letter
end
end
return "Unknown"
end
local villageSpawns = {
["Leveling City"] = "SoloWorld",
["Grass Village"] = "NarutoWorld",
["Brum Island"] = "OPWorld",
["Faceheal Town"] = "BleachWorld",
["Lucky Kingdom"] = "BCWorld",
["Nipon City"] = "ChainsawWorld",
["Mori Town"] = "JojoWorld",
["Dragon Ball"] = "DBWorld",
["One Punch"] = "OPMWorld",
["Kindama City"] = "DanWorld",
["Hunters City"] = "Solo2World"
}
local dungeonSpawns = {
["BCWorld"] = "Lucky Kingdom",
["SoloWorld"] = "Leveling City",
["NarutoWorld"] = "Grass Village",
["OPWorld"] = "Brum Island",
["BleachWorld"] = "Faceheal Town",
["ChainsawWorld"] = "Nipon City",
["JojoWorld"] = "Mori Town",
["DBWorld"] = "Dragon Ball",
["OPMWorld"] = "One Punch",
["DanWorld"] = "Kindama City",
["Solo2World"] = "Hunters City"
}
local customCFrames = {
["Mori Town"] = CFrame.new(5462.841796875, 40.822052001953125, -132.9186553955078),
["Nipon City"] = CFrame.new(199.8670196533203, 33.89651107788086, -5077.17626953125),
["Faceheal Town"] = CFrame.new(2990.454833984375, 68.84293365478516, -3085.167724609375),
["Lucky Kingdom"] = CFrame.new(76.28400421142578, 37.8531494140625, 4911.29150390625),
["Dragon Ball"] = CFrame.new(-6933.37256, 124.132904, -64.2621765, -0.548029363, -2.10871889e-08, 0.8364591, 5.39440421e-08, 1, 6.05529991e-08, -0.8364591, 7.83068117e-08, -0.548029363)
}
local function sendWebhookMessage(message, dungeonData)
print("[DEBUG] Webhook function called with message:", message)
if not _G.webhookEnabled or _G.webhookUrl == "" then
print("[DEBUG] Webhook not sent - disabled or empty URL")
return false
end
local dungeonClears = "0"
local success, clearCount = pcall(function()
return game:GetService("Players").LocalPlayer.leaderstats.GeneralStats:GetAttribute("DungeonClear") or 0
end)
if success then
dungeonClears = tostring(clearCount)
else
print("[DEBUG] Failed to get dungeon clear count:", clearCount)
end
local data = {
["content"] = "",
["embeds"] = {
{
["title"] = "Dungeon Join",
["description"] = message,
["color"] = tonumber("0x" .. "800080"),
["thumbnail"] = {
["url"] = "https://i.imgur.com/HEEC8jd.png"
},
["fields"] = {
{
["name"] = "Game",
["value"] = game:GetService("MarketplaceService"):GetProductInfo(game.PlaceId).Name,
["inline"] = true
},
{
["name"] = "Player",
["value"] = game.Players.LocalPlayer.Name,
["inline"] = true
},
{
["name"] = "Time",
["value"] = os.date("%Y-%m-%d %H:%M:%S"),
["inline"] = true
}
},
["footer"] = {
["text"] = "Total Dungeon Clears: " .. dungeonClears,
["icon_url"] = "https://i.imgur.com/XOANIHC.png"
},
["timestamp"] = DateTime.now():ToIsoDate()
}
}
}
local headers = {
["Content-Type"] = "application/json"
}
print("[DEBUG] Sending enhanced webhook...")
local success, response = pcall(function()
request({
Url = _G.webhookUrl,
Method = "POST",
Headers = headers,
Body = game:GetService("HttpService"):JSONEncode(data)
})
end)
if success then
print("[DEBUG] Webhook sent successfully!")
return true
else
print("[DEBUG] Failed to send webhook. Error:", response)
return false
end
end
local function anticheat()
local player = game.Players.LocalPlayer
if player and player.Character then
local characterScripts = player.Character:FindFirstChild("CharacterScripts")
if characterScripts then
local flyingFixer = characterScripts:FindFirstChild("FlyingFixer")
if flyingFixer then
flyingFixer:Destroy()
end
local characterUpdater = characterScripts:FindFirstChild("CharacterUpdater")
if characterUpdater then
characterUpdater:Destroy()
end
end
end
end
local function isEnemyDead(enemy)
local healthBar = enemy:FindFirstChild("HealthBar")
if healthBar and healthBar:FindFirstChild("Main") and healthBar.Main:FindFirstChild("Bar") then
local amount = healthBar.Main.Bar:FindFirstChild("Amount")
if amount and amount:IsA("TextLabel") and amount.ContentText == "0 HP" then
return true
end
end
return false
end
local function saveCastleReturnCFrame(cframe)
if writefile then
local components = {cframe:GetComponents()}
local str = table.concat(components, ",")
writefile("castle_return_cframe.txt", str)
end
end
local function loadCastleReturnCFrame()
if readfile and isfile and isfile("castle_return_cframe.txt") then
local str = readfile("castle_return_cframe.txt")
local nums = {}
for num in string.gmatch(str, "([^,]+)") do
table.insert(nums, tonumber(num))
end
if #nums == 12 then
return CFrame.new(unpack(nums))
end
end
return nil
end
local displayToFolder = {}
local selectedDungeonRune = nil
local function getRuneDropdownValues()
local itemsFolder = player.leaderstats.Inventory:FindFirstChild("Items")
local values = {}
displayToFolder = {}
if itemsFolder then
for _, folder in ipairs(itemsFolder:GetChildren()) do
if folder:IsA("Folder") and string.match(folder.Name, "Rune$") then
local guiEntry = player.PlayerGui
:WaitForChild("__Disable")
:WaitForChild("Menus")
:WaitForChild("Inventory")
:WaitForChild("Main")
:WaitForChild("Lists")
:WaitForChild("Items")
:FindFirstChild(folder.Name)
local displayName
local amountText = "0"
if guiEntry and guiEntry:FindFirstChild("Main") then
local main = guiEntry.Main
if main:FindFirstChild("Value") then
displayName = main.Value.Text
end
if main:FindFirstChild("Amount") then
amountText = main.Amount.Text
end
end
displayName = displayName or folder.Name
local combinedName = displayName .. " | " .. amountText
table.insert(values, combinedName)
displayToFolder[combinedName] = folder.Name
end
end
end
return values
end
local castleReturnEnabled = false
local function getSpawnLocation(worldName)
local spawnName = villageSpawns[worldName]
if not spawnName then
return nil
end
local spawnsFolder = workspace:FindFirstChild("__Extra") and workspace.__Extra:FindFirstChild("__Spawns")
if not spawnsFolder then
return nil
end
local spawnLocation = spawnsFolder:FindFirstChild(spawnName)
if spawnLocation and spawnLocation:IsA("SpawnLocation") then
return spawnLocation.CFrame
end
return nil
end
local function TweenTeleport()
local rootPart = character:WaitForChild("HumanoidRootPart")
local parts = {}
for _, part in pairs(game.Workspace.__Main.__Enemies.Server:GetDescendants()) do
if part:IsA("BasePart") then
table.insert(parts, part)
end
end
if (#parts > 0) then
local randomPart = parts[math.random(1, #parts)]
local targetCFrame = randomPart.CFrame
local tweenInfo = TweenInfo.new(2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local tween = TweenService:Create(rootPart, tweenInfo, {CFrame = targetCFrame})
tween:Play()
tween.Completed:Wait()
print("Tween ile teleport edildi: " .. randomPart.Name .. " (" .. randomPart.ClassName .. ")")
else
warn("Workspace'te BasePart bulunamadı!")
end
end
local function teleportToObject(object)
if not object then
print("[ERROR] teleportToObject: Object is nil!")
return
end
print("[DEBUG] Attempting to teleport to dungeon part...")
anticheat()
local redDungeonPrimary = workspace.__Main.__Dungeon:FindFirstChild("Dungeon") and
workspace.__Main.__Dungeon.Dungeon:FindFirstChild("DungeonRod2") and
workspace.__Main.__Dungeon.Dungeon.DungeonRod2:FindFirstChild("Primary")
if redDungeonPrimary then
print("[DEBUG] Red dungeon detected, teleporting to Primary part")
hrp.CFrame = redDungeonPrimary.CFrame * CFrame.new(0, 2, 0)
else
print("[DEBUG] Regular dungeon, teleporting to dungeon part")
hrp.CFrame = object.CFrame * CFrame.new(0, 2, 0)
end
task.wait(0.5)
local dungeonPart = workspace.__Main.__Dungeon:WaitForChild("Dungeon", 2)
if not dungeonPart then
print("[ERROR] Could not find Dungeon part after teleport!")
return
end
print("[DEBUG] Found dungeon part at", dungeonPart:FindFirstChild("DoubleDungeonSpawn") and dungeonPart.DoubleDungeonSpawn.Position or "No DoubleDungeonSpawn found")
task.wait(0.5)
if autoBuyTicketEnabled then
local dungeonIcon =
player.PlayerGui:FindFirstChild("Menus") and player.PlayerGui.Menus:FindFirstChild("Dungeon") and
player.PlayerGui.Menus.Dungeon:FindFirstChild("Background") and
player.PlayerGui.Menus.Dungeon.Background:FindFirstChild("DungeonIcon") and
player.PlayerGui.Menus.Dungeon.Background.DungeonIcon:FindFirstChild("Completed")
if dungeonIcon and dungeonIcon.Visible then
print("[DEBUG] Ticket completed, buying new ticket...")
local args = {
[1] = {
[1] = {
["Type"] = "Gems",
["Action"] = "BuyTicket",
["Event"] = "DungeonAction"
},
[2] = orosbucocugu
}
}
remote:FireServer(unpack(args))
task.wait(1)
else
print("[DEBUG] Ticket not completed, skipping purchase...")
end
end
print("[DEBUG] Creating dungeon...")
local args = {
[1] = {
[1] = {
["Action"] = "Create",
["Event"] = "DungeonAction"
},
[2] = orosbucocugu
}
}
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
task.wait(0.3)
if autoUseDungeonRune == true and #selectedDungeonRunes > 0 then
print("[DEBUG] Adding runes:", table.concat(selectedDungeonRunes, ", "))
local allRuneSlots = {}
local slot = 1
for _, runeName in ipairs(selectedDungeonRunes) do
for i = 1, 6 do
table.insert(allRuneSlots, {
slot = slot,
name = runeName
})
slot += 1
end
end
for i = 1, #allRuneSlots, 3 do
for j = 0, math.min(2, #allRuneSlots - i) do
local runeData = allRuneSlots[i + j]
local addArgs = {
[1] = {
[1] = {
["Dungeon"] = player.UserId,
["Action"] = "AddItems",
["Slot"] = runeData.slot,
["Event"] = "DungeonAction",
["Item"] = runeData.name
},
[2] = orosbucocugu
}
}
remote:FireServer(unpack(addArgs))
end
task.wait(0.05)
end
print("[DEBUG] Finished adding all runes in batches")
end
task.wait(0.5)
print("[DEBUG] Starting dungeon...")
local startArgs = {
[1] = {
[1] = {
["Dungeon"] = player.UserId,
["Action"] = "Start",
["Event"] = "DungeonAction"
},
[2] = orosbucocugu
}
}
remote:FireServer(unpack(startArgs))
end
local function isDungeonTime()
local t = os.date("*t")
local totalSeconds = t.min * 60 + t.sec
local mod15 = totalSeconds % 900
local isActive = true
local secondsUntilNextOpen = 0
if mod15 >= 870 then
isActive = false
secondsUntilNextOpen = 900 - mod15
end
return isActive, secondsUntilNextOpen
end
local function isCastleTimeGlobal()
local utc = os.date("!*t")
local minute = utc.min
if minute >= 45 and minute < 57 then
return true
end
return false
end
local function searchDungeon(method)
if method == "Teleport" then
local lastWebhookTime = 0
while teleportingEnabled do
if game.PlaceId == 128336380114944 then
print("[DEBUG] In dungeon, pausing search until exit.")
task.wait(5)
else
local isActive, minutesUntil = isDungeonTime()
if isActive then
local dungeonFound = false
for _, worldName in pairs(selectedWorlds) do
if not teleportingEnabled then break end
local spawnLocation = getSpawnLocation(worldName)
if spawnLocation then
print("[DEBUG] Teleporting to", worldName)
anticheat()
task.wait(1)
local dungeonPart = workspace.__Main.__Dungeon:WaitForChild("Dungeon", 1)
if dungeonPart then
local isRedDungeon = dungeonPart:GetAttribute("IsRedDungeon") == true
local dungeonMapName = dungeonPart:GetAttribute("MapName")
local dungeonWorldName = dungeonSpawns[dungeonMapName]
local typeMatch = (isRedDungeon and table.find(selectedDungeonTypes, "Red Dungeon"))
or (not isRedDungeon and table.find(selectedDungeonTypes, "Normal Dungeon"))
if typeMatch then
print(isRedDungeon and "[DEBUG] Found Red Dungeon" or "[DEBUG] Found Normal Dungeon")
end
if dungeonWorldName and table.find(selectedWorlds, dungeonWorldName) and typeMatch then
print("[DEBUG] Dungeon world matches: " .. dungeonWorldName)
local foundRank = dungeonPart:GetAttribute("DungeonRank")
local rankMatch = false
if foundRank and #selectedRanks > 0 then
for _, selRank in ipairs(selectedRanks) do
if rankMapping[selRank] == foundRank then
rankMatch = true
break
end
end
end
if rankMatch then
print("[DEBUG] Rank matched:", foundRank)
anticheat()
task.wait(0.1)
local currentTime = os.time()
if _G.webhookEnabled and _G.webhookUrl ~= "" and (currentTime - lastWebhookTime) > 30 then
local rankLetter = getRankLetter(foundRank)
local dungeonData = {
world = dungeonWorldName,
type = isRedDungeon and "Red Dungeon" or "Normal Dungeon",
rank = rankLetter
}
local webhookMessage = string.format(
"**Dungeon Found!**\nWorld: %s\nType: %s\nRank: %s",
dungeonWorldName,
dungeonData.type,
rankLetter
)
if sendWebhookMessage(webhookMessage, dungeonData) then
lastWebhookTime = currentTime
end
end
if isRedDungeon then
local redDungeonPrimary = dungeonPart:FindFirstChild("DungeonRod2") and
dungeonPart.DungeonRod2:FindFirstChild("Primary")
if redDungeonPrimary then
print("[DEBUG] Teleporting to Red Dungeon Primary part")
teleportToObject(redDungeonPrimary)
else
print("[DEBUG] Red Dungeon Primary part not found, attempting fallback teleport")
teleportToObject(dungeonPart)
end
else
print("[DEBUG] Teleporting to Normal Dungeon part")
teleportToObject(dungeonPart)
end
dungeonFound = true
break
else
print("[DEBUG] Dungeon rank does not match! Found:", foundRank, "Selected:", table.concat(selectedRanks, ", "))
end
else
print("[DEBUG] Dungeon world/type does not match selection. Found world:", dungeonWorldName)
local _, secondsUntilNextOpen = isDungeonTime()
print("[DEBUG] Waiting until next dungeon time in", secondsUntilNextOpen, "seconds")
task.wait(secondsUntilNextOpen + 1)
break
end
else
print("[DEBUG] No dungeon part found in", worldName)
end
else
print("[DEBUG] Could not find spawn location for", worldName)
end
task.wait(0.1)
end
if not dungeonFound then
print("[DEBUG] No matching dungeon found in any selected world")
local _, secondsUntilNextOpen = isDungeonTime()
print("[DEBUG] Waiting until next dungeon time in", secondsUntilNextOpen, "seconds")
task.wait(secondsUntilNextOpen + 1)
end
else
print("[DEBUG] Not dungeon time, waiting...")
local _, secondsUntilNextOpen = isDungeonTime()
task.wait(secondsUntilNextOpen + 1)
end
end
task.wait(0.1)
end
end
end
player.CharacterAdded:Connect(
function(newCharacter)
character = newCharacter
hrp = newCharacter:WaitForChild("HumanoidRootPart")
end
)
local function getNearestSelectedEnemy()
if not selectedEnemyFoundTime or os.time() - selectedEnemyFoundTime > 1 then
killedNPCs = {}
end
local nearestEnemy = nil
local shortestDistance = math.huge
local playerPosition = hrp.Position
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
if enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") then
local healthBar = enemy:FindFirstChild("HealthBar")
if healthBar and healthBar:FindFirstChild("Main") and healthBar.Main:FindFirstChild("Title") then
local title = healthBar.Main.Title
if title and title:IsA("TextLabel") and title.ContentText == selectedMobName and not killedNPCs[enemy.Name] then
local enemyPosition = enemy.HumanoidRootPart.Position
local distance = (playerPosition - enemyPosition).Magnitude
if distance < shortestDistance then
shortestDistance = distance
nearestEnemy = enemy
end
end
end
end
end
if nearestEnemy then
selectedEnemyFoundTime = os.time()
end
return nearestEnemy
end
local function isBossRoom()
local roomLabel = player.PlayerGui and player.PlayerGui:FindFirstChild("Hud") and player.PlayerGui.Hud:FindFirstChild("UpContanier") and player.PlayerGui.Hud.UpContanier:FindFirstChild("Room")
if not roomLabel then return false end
local text = roomLabel.Text
local current, total = text:match("Room:%s*(%d+)%s*/%s*(%d+)")
return current and total and (current == total)
end
local function getAnyEnemy()
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
if enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") and not dungeonkill[enemy.Name] and not isEnemyDead(enemy) then
local size = enemy.HumanoidRootPart.Size
local mobType = ""
if #selectedMobTypes > 0 then
if size == Vector3.new(2, 2, 1) and table.find(selectedMobTypes, "Normal") then
return enemy
elseif size == Vector3.new(4, 4, 2) and table.find(selectedMobTypes, "Big") then
return enemy
end
else
return enemy
end
end
end
return nil
end
local function getAnyEnemyForCastle()
if castleBossPriorityEnabled then
local biggestEnemy = nil
local biggestSize = Vector3.new(0,0,3)
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
if enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") and not castlekill[enemy.Name] and not isEnemyDead(enemy) then
local size = enemy.HumanoidRootPart.Size
if size.Magnitude > biggestSize.Magnitude then
biggestSize = size
biggestEnemy = enemy
end
end
end
if biggestEnemy then
return biggestEnemy
end
end
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
if
enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") and not castlekill[enemy.Name] and
not isEnemyDead(enemy)
then
return enemy
end
end
return nil
end
local function getNearestEnemy()
local nearestEnemy, shortestDistance = nil, math.huge
local playerPosition = hrp.Position
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
if enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") and not killedNPCs[enemy.Name] then
local distance = (playerPosition - enemy:GetPivot().Position).Magnitude
if distance < shortestDistance then
shortestDistance = distance
nearestEnemy = enemy
end
end
end
return nearestEnemy
end
local function getLowestHPEnemy()
local lowestHPEnemy = nil
local lowestHP = math.huge
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
if
enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") and not targetedEnemies[enemy.Name] and
not isEnemyDead(enemy)
then
local currentHP = tonumber(enemy.HealthBar.Main.Bar.Amount.ContentText:match("%d+")) or math.huge
if currentHP < lowestHP then
lowestHP = currentHP
lowestHPEnemy = enemy
end
end
end
return lowestHPEnemy
end
local noclipConnection
local function enableNoclip()
if noclipConnection then return end
noclipConnection = game:GetService("RunService").Stepped:Connect(function()
if movementMethod == "Walk" and character then
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") and part.CanCollide then
part.CanCollide = false
end
end
end
end)
end
local function disableNoclip()
if noclipConnection then
noclipConnection:Disconnect()
noclipConnection = nil
end
end
local function moveToTarget(target)
if not target or not target:FindFirstChild("HumanoidRootPart") then return end
local enemyHrp = target.HumanoidRootPart
if movementMethod == "Teleport" then
task.wait(0.03)
hrp.CFrame = enemyHrp.CFrame * CFrame.new(0, 0, 6)
task.wait(0.03)
elseif movementMethod == "Tween" then
local tweenInfo = TweenInfo.new(mainTweenSpeed, Enum.EasingStyle.Linear)
local tween = TweenService:Create(hrp, tweenInfo, {CFrame = enemyHrp.CFrame * CFrame.new(0, 0, 6)})
tween:Play()
tween.Completed:Wait()
elseif movementMethod == "Walk" then
enableNoclip()
local humanoid = hrp.Parent:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid:MoveTo((enemyHrp.CFrame * CFrame.new(0, 0, 4)).Position)
local reached = false
local conn
conn = humanoid.MoveToFinished:Connect(function(success)
reached = true
end)
local startTime = tick()
while not reached and tick() - startTime < 3 do
task.wait(0.05)
end
if conn then conn:Disconnect() end
end
end
end
local function isInCastle()
local player = game:GetService("Players").LocalPlayer
local hud = player.PlayerGui:FindFirstChild("Hud")
if not hud then return false end
local upContainer = hud:FindFirstChild("UpContanier")
if not upContainer then return false end
local room = upContainer:FindFirstChild("Room")
if not room then return false end
local text = room.Text
local floor, maxFloor = text:match("Floor:%s*(%d+)%s*/%s*(%d+)")
if maxFloor and tonumber(maxFloor) == 100 then
return true
end
return false
end
local function isInDungeon()
return game.PlaceId == 128336380114944 and not isInCastle()
end
local function teleportDungeon()
if game.PlaceId ~= 128336380114944 then return end
local bossRoomWaited = false
while teleportEnabled do
if isInCastle() and castleFarmEnabled then break end
if isBossRoom() and not bossRoomWaited then
Fluent:Notify({
Title = "Boss Room",
Content = "Boss room reached. Waiting " .. DungeonDelay2 .. " seconds before farming.",
Duration = 3
})
task.wait(DungeonDelay2)
bossRoomWaited = true
elseif not isBossRoom() then
bossRoomWaited = false
end
local target = getAnyEnemy()
if target and target.Parent then
anticheat()
local enemyPos = target.HumanoidRootPart.Position
local enemyCFrame = target.HumanoidRootPart.CFrame
local targetCFrame = enemyCFrame * CFrame.new(0, 2, 6)
if dungeonFarmMethod == "Tween" then
local tweenInfo = TweenInfo.new(
dungeonTweenSpeed,
Enum.EasingStyle.Linear,
Enum.EasingDirection.Out
)
local tween = TweenService:Create(hrp, tweenInfo, {CFrame = targetCFrame})
tween:Play()
tween.Completed:Wait()
else
task.wait(0.03)
hrp.CFrame = targetCFrame
task.wait(0.03)
end
task.wait(0.05)
sendAttackCommand(target.Name, true)
task.wait(0.05)
while target.Parent and not isEnemyDead(target) do
task.wait(0.1)
end
dungeonkill[target.Name] = true
if DungeonDelay and DungeonDelay > 0 then
task.wait(DungeonDelay)
end
else
local serverFolder = workspace.__Main.__Enemies.Server
if serverFolder and #serverFolder:GetChildren() > 0 then
local randomIndex = math.random(1, #serverFolder:GetChildren())
local serverPart = serverFolder:GetChildren()[randomIndex]
if serverPart then
print("[DEBUG] No mob found (Dungeon), teleporting to server part:", serverPart.Name)
anticheat()
hrp.CFrame = serverPart.CFrame * CFrame.new(0, 2, 6)
task.wait(0.05)
sendAttackCommand(serverPart.Name, true)
task.wait(1)
else
warn("[ERROR] Invalid server part selected! Retrying...")
task.wait(0.5)
end
else
warn("[ERROR] No server parts found! Retrying...")
task.wait(0.5)
end
end
task.wait(0.1)
end
end
local function getCurrentFloor()
local hudGui = player.PlayerGui:FindFirstChild("Hud") and player.PlayerGui.Hud:FindFirstChild("UpContanier")
if hudGui and hudGui:FindFirstChild("Room") then
local roomText = hudGui.Room.Text
local floorNumber = tonumber(roomText:match("Floor: (%d+)/%d+")) or 0
return floorNumber
end
return 0
end
local function checkFloorAndExit()
while castleFarmEnabled do
local currentFloor = getCurrentFloor()
if currentFloor >= targetFloor then
print("[DEBUG] Target floor", targetFloor, "reached, stopping farm...")
castleFarmEnabled = false
print("[DEBUG] Attempting to exit castle via teleport...")
game:GetService("TeleportService"):Teleport(87039211657390, game.Players.LocalPlayer)
Fluent:Notify({
Title = "Castle Exited",
Content = "Reached target floor " .. targetFloor .. " and exiting...",
Duration = 5
})
task.spawn(function()
task.wait(5)
if castleReturnEnabled and game.PlaceId == 87039211657390 then
local cf = loadCastleReturnCFrame()
if cf and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
player.Character.HumanoidRootPart.CFrame = cf
Fluent:Notify({
Title = "Castle Return",
Content = "Teleported to saved position after castle.",
Duration = 3
})
end
end
end)
return true
end
task.wait(0.1)
end
return false
end
local function checkFloorChangeAndTeleport()
local previousFloor = getCurrentFloor()
if previousFloor == 0 then
print("[DEBUG] Could not determine current floor, skipping floor change check.")
return false
end
print("[DEBUG] Monitoring floor change, current floor:", previousFloor)
while castleFarmEnabled do
local currentFloor = getCurrentFloor()
if currentFloor > previousFloor then
print("[DEBUG] Floor increased from", previousFloor, "to", currentFloor, ", teleporting to portal...")
local roomName = "Room_" .. currentFloor
local portal =
workspace:FindFirstChild("__Main") and workspace.__Main:FindFirstChild("__World") and
workspace.__Main.__World:FindFirstChild(roomName) and
workspace.__Main.__World[roomName]:FindFirstChild("Portal")
if portal and portal:IsA("BasePart") then
print("[DEBUG] Portal found in", roomName, ", teleporting...")
anticheat()
hrp.CFrame = portal.CFrame * CFrame.new(0, 0, 3)
task.wait(0.1)
game:GetService("Players").LocalPlayer:SetAttribute("PetsArise", false)
task.wait(0.05)
game:GetService("Players").LocalPlayer:SetAttribute("PetsArise", true)
local function allMobsDead()
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
if enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") and not isEnemyDead(enemy) then
return false
end
end
return true
end
while not allMobsDead() and castleFarmEnabled do
task.wait(0.1)
end
print("[DEBUG] Teleported to portal, all mobs dead, resetting castlekill table...")
castlekill = {}
previousFloor = currentFloor
else
print("[ERROR] Portal not found in", roomName, ", trying MainRoot.Part as fallback")
local mainRootPart = workspace:FindFirstChild("__Main") and workspace.__Main:FindFirstChild("__World") and
workspace.__Main.__World:FindFirstChild(roomName) and
workspace.__Main.__World[roomName]:FindFirstChild("Buildings") and
workspace.__Main.__World[roomName].Buildings:FindFirstChild("MainRoot") and
workspace.__Main.__World[roomName].Buildings.MainRoot:FindFirstChild("Part")
if mainRootPart and mainRootPart:IsA("BasePart") then
print("[DEBUG] Fallback MainRoot.Part found, teleporting...")
anticheat()
hrp.CFrame = mainRootPart.CFrame * CFrame.new(0, 0, 6)
task.wait(0.2)
sendAttackCommand(mainRootPart.Name, true)
task.wait(0.05)
local function allMobsDead()
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
if enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") and not isEnemyDead(enemy) then
return false
end
end
return true
end
while not allMobsDead() and castleFarmEnabled do
task.wait(0.2)
end
print("[DEBUG] Teleported to MainRoot.Part, all mobs dead, resetting castlekill table...")
castlekill = {}
previousFloor = currentFloor
else
print("[ERROR] MainRoot.Part also not found in", roomName)
return false
end
end
elseif currentFloor < previousFloor then
print(
"[DEBUG] Floor decreased unexpectedly from",
previousFloor,
"to",
currentFloor,
", resetting check..."
)
previousFloor = currentFloor
end
task.wait(0.3)
end
return false
end
local function teleportCastleFarmMain()
if game.PlaceId ~= 128336380114944 then
return
end
task.spawn(checkFloorAndExit)
task.spawn(checkFloorChangeAndTeleport)
while castleFarmEnabled do
if not isInCastle() and teleportEnabled then
print("[DEBUG] Not in Castle, stopping castle farm.")
break
end
local target = getAnyEnemyForCastle()
if target and target.Parent and not isEnemyDead(target) then
anticheat()
local enemyPos = target.HumanoidRootPart.Position
local enemyLook = target.HumanoidRootPart.CFrame.LookVector
local teleportPos = enemyPos - (enemyLook * 3)
local targetCFrame = CFrame.new(teleportPos, enemyPos)
if castleFarmMethod == "Tween" then
local tweenInfo = TweenInfo.new(
castleTweenSpeed,
Enum.EasingStyle.Linear,
Enum.EasingDirection.Out
)
local tween = TweenService:Create(hrp, tweenInfo, {CFrame = targetCFrame})
tween:Play()
tween.Completed:Wait()
else
hrp.CFrame = targetCFrame
end
task.wait(0.05)
sendAttackCommand(target.Name, true)
task.wait(0.05)
while target.Parent and not isEnemyDead(target) do
task.wait(0.1)
end
castlekill[target.Name] = true
if CastleDelay and CastleDelay > 0 then
task.wait(CastleDelay)
end
else
local serverFolder = workspace.__Main.__Enemies.Server
if serverFolder and #serverFolder:GetChildren() > 0 then
local randomIndex = math.random(1, #serverFolder:GetChildren())
local serverPart = serverFolder:GetChildren()[randomIndex]
if serverPart then
print("[DEBUG] No mob found (Castle), teleporting to server part CFrame for castle:", serverPart.Name)
anticheat()
humanoidRootPart.CFrame = serverPart.CFrame * CFrame.new(0, 0, 6)
task.wait(0.05)
sendAttackCommand(serverPart.Name, true)
task.wait(0.05)
else
print("[INFO] Server part selected but invalid for castle, waiting before retry...")
task.wait(1)
end
else
local currentFloor = getCurrentFloor()
local roomName = "Room_" .. tostring(currentFloor)
local mainRootPart = workspace:FindFirstChild("__Main") and workspace.__Main:FindFirstChild("__World") and
workspace.__Main.__World:FindFirstChild(roomName) and
workspace.__Main.__World[roomName]:FindFirstChild("Buildings") and
workspace.__Main.__World[roomName].Buildings:FindFirstChild("MainRoot") and
workspace.__Main.__World[roomName].Buildings.MainRoot:FindFirstChild("Part")
if mainRootPart and mainRootPart:IsA("BasePart") then
print("[INFO] No server parts found, teleporting to MainRoot.Part as fallback for castle:", roomName)
anticheat()
humanoidRootPart.CFrame = mainRootPart.CFrame
task.wait(0.05)
sendAttackCommand(mainRootPart.Name, true)
task.wait(0.6)
else
print("[INFO] No server parts or MainRoot.Part found in the folder for castle, waiting before retry...")
task.wait(0.1)
end
end
end
task.wait(0.1)
end
end
local function teleportToWorldSpawn(worldName)
local spawnName = villageSpawns[worldName]
if not spawnName then
return false
end
local spawnsFolder = workspace:FindFirstChild("__Extra") and workspace.__Extra:FindFirstChild("__Spawns")
if not spawnsFolder then
return false
end
local spawnPart = spawnsFolder:FindFirstChild(spawnName)
if not spawnPart or not spawnPart:IsA("BasePart") then
return false
end
anticheat()
hrp.CFrame = spawnPart.CFrame
task.wait(0.5)
return true
end
local function cframeToTable(cframe)
return {
x = cframe.X,
y = cframe.Y,
z = cframe.Z,
lookVectorX = cframe.LookVector.X,
lookVectorY = cframe.LookVector.Y,
lookVectorZ = cframe.LookVector.Z,
upVectorX = cframe.UpVector.X,
upVectorY = cframe.UpVector.Y,
upVectorZ = cframe.UpVector.Z
}
end
local function tableToCFrame(tbl)
return CFrame.new(
tbl.x,
tbl.y,
tbl.z,
tbl.lookVectorX,
tbl.lookVectorY,
tbl.lookVectorZ,
tbl.upVectorX,
tbl.upVectorY,
tbl.upVectorZ
)
end
local function searchLoop()
local lastDungeonNotifyTime = 0
local lastCastleNotifyTime = 0
local lastTeleportTime = 0
local notifyInterval = 180
local teleportCooldown = 15
while true do
local currentTime = tick()
if teleportingEnabled then
local isDungeonNow, secondsUntilNextDungeon = isDungeonTime()
if isDungeonNow and (currentTime - lastTeleportTime) >= teleportCooldown then
task.wait(1)
lastTeleportTime = currentTime
elseif not isDungeonNow and (currentTime - lastDungeonNotifyTime) >= notifyInterval then
if teleportingEnabled and not castleFarmEnabled then
Fluent:Notify({
Title = "Dungeon Search",
Content = "Next dungeon in " .. math.floor(secondsUntilNextDungeon) .. "s",
Duration = 5
})
lastDungeonNotifyTime = currentTime
end
end
elseif castleFarmEnabled then
local isCastleNow, secondsUntilNextCastle = isCastleTimeGlobal()
if isCastleNow then
if game.PlaceId == 87039211657390 and (currentTime - lastTeleportTime) >= teleportCooldown then
local args = {
[1] = {
[1] = {
["Check"] = checkpointsEnabled and selectedCheckpoint ~= "False",
["Action"] = "Join",
["Event"] = "CastleAction"
},
[2] = orosbucocugu
}
}
if checkpointsEnabled and selectedCheckpoint ~= "False" then
args[1][1]["Floor"] = selectedCheckpoint
end
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
lastTeleportTime = currentTime
end
else
if (currentTime - lastCastleNotifyTime) >= notifyInterval then
lastCastleNotifyTime = currentTime
end
end
end
task.wait(0.3)
end
end
local function teleportAndTrackDeath()
while teleportEnabled do
local target = getNearestEnemy()
if target and target.Parent then
anticheat()
moveToTarget(target)
task.wait(0.05)
sendAttackCommand(target.Name, true)
task.wait(0.05)
while teleportEnabled and target.Parent and not isEnemyDead(target) do
task.wait(0.1)
end
killedNPCs[target.Name] = true
end
task.wait(0.1)
end
end
local function teleportToSelectedEnemy()
local lastResetTime = os.time()
while teleportEnabled do
local target = nil
if _G.selectedMobs and #_G.selectedMobs > 0 then
_G.currentMobIndex = _G.currentMobIndex or 1
local currentMobType = _G.selectedMobs[_G.currentMobIndex]
local shortestDistance = math.huge
local playerPosition = hrp.Position
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
if enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") then
local healthBar = enemy:FindFirstChild("HealthBar")
if healthBar and healthBar:FindFirstChild("Main") and healthBar.Main:FindFirstChild("Title") then
if healthBar.Main.Title.Text == currentMobType and not killedNPCs[enemy.Name] and not isEnemyDead(enemy) then
local size = enemy.HumanoidRootPart.Size
local isCorrectSize = true
if #selectedMobTypes > 0 then
isCorrectSize = false
if size == Vector3.new(2, 2, 1) and table.find(selectedMobTypes, "Normal") then
isCorrectSize = true
elseif size == Vector3.new(4, 4, 2) and table.find(selectedMobTypes, "Big") then
isCorrectSize = true
end
end
if isCorrectSize then
local distance = (playerPosition - enemy.HumanoidRootPart.Position).Magnitude
if distance < shortestDistance then
shortestDistance = distance
target = enemy
end
end
end
end
end
end
if not target then
_G.currentMobIndex = (_G.currentMobIndex % #_G.selectedMobs) + 1
end
end
if not target and os.time() - lastResetTime > 1 then
killedNPCs = {}
lastResetTime = os.time()
print("Reset killed NPCs list")
end
if target and target.Parent and not isEnemyDead(target) then
anticheat()
moveToTarget(target)
task.wait(0.05)
sendAttackCommand(target.Name, true)
task.wait(0.05)
while target.Parent and not isEnemyDead(target) do
task.wait(0.1)
end
killedNPCs[target.Name] = true
_G.mobKillCounts = _G.mobKillCounts or {}
local mobName = "Unknown"
if target:FindFirstChild("HealthBar") and
target.HealthBar:FindFirstChild("Main") and
target.HealthBar.Main:FindFirstChild("Title") then
mobName = target.HealthBar.Main.Title.Text
end
_G.mobKillCounts[mobName] = (_G.mobKillCounts[mobName] or 0) + 1
print("Killed", mobName, "- Total:", _G.mobKillCounts[mobName])
end
task.wait(delay)
end
end
local function tweenToCFrame(targetCFrame)
if not hrp then return end
local tweenInfo = TweenInfo.new(mainTweenSpeed, Enum.EasingStyle.Linear)
local tween = TweenService:Create(hrp, tweenInfo, {CFrame = targetCFrame})
tween:Play()
tween.Completed:Wait()
end
local function autoFarmV2()
local lastResetTime = os.time()
while autoFarmV2Enabled do
if teleportEnabled then
break
end
local target = nil
if farmingStyle == "Normal" then
target = getAnyEnemy()
elseif farmingStyle == "Nearest" then
local nearestDistance = math.huge
local playerPosition = hrp.Position
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
if enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") and not targetedEnemies[enemy.Name] and not isEnemyDead(enemy) then
local size = enemy.HumanoidRootPart.Size
local isCorrectSize = true
if #selectedMobTypes > 0 then
isCorrectSize = false
if size == Vector3.new(2, 2, 1) and table.find(selectedMobTypes, "Normal") then
isCorrectSize = true
elseif size == Vector3.new(4, 4, 2) and table.find(selectedMobTypes, "Big") then
isCorrectSize = true
end
end
if isCorrectSize then
local distance = (playerPosition - enemy.HumanoidRootPart.Position).Magnitude
if distance < nearestDistance then
nearestDistance = distance
target = enemy
end
end
end
end
elseif farmingStyle == "Highest HP" then
local highestHP = 0
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
if enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") and not targetedEnemies[enemy.Name] and not isEnemyDead(enemy) then
local size = enemy.HumanoidRootPart.Size
local isCorrectSize = true
if #selectedMobTypes > 0 then
isCorrectSize = false
if size == Vector3.new(2, 2, 1) and table.find(selectedMobTypes, "Normal") then
isCorrectSize = true
elseif size == Vector3.new(4, 4, 2) and table.find(selectedMobTypes, "Big") then
isCorrectSize = true
end
end
if isCorrectSize then
local currentHP = tonumber(enemy.HealthBar.Main.Bar.Amount.ContentText:match("%d+")) or 0
if currentHP > highestHP then
highestHP = currentHP
target = enemy
end
end
end
end
elseif farmingStyle == "Lowest HP" then
target = getLowestHPEnemy()
end
if not target and os.time() - lastResetTime > 1 then
targetedEnemies = {}
lastResetTime = os.time()
print("Reset killed monster list")
end
if target and target.Parent and not isEnemyDead(target) then
anticheat()
moveToTarget(target, false)
task.wait(0.05)
sendAttackCommand(target.Name, true)
task.wait(0.05)
while target.Parent and not isEnemyDead(target) do
task.wait(0.1)
end
targetedEnemies[target.Name] = true
end
task.wait(delay)
end
end
local function attackNearest()
local Player_HumanoidRootPart = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if not Player_HumanoidRootPart then
return
end
local nearestPlayer = nil
local nearestDistance = math.huge
for _, NPC in pairs(game.Workspace.__Main.__Enemies.Client:GetChildren()) do
if NPC and NPC:FindFirstChild("HumanoidRootPart") then
local healthBar = NPC:FindFirstChild("HealthBar")
if
healthBar and healthBar.Main and healthBar.Main.Bar and healthBar.Main.Bar.Amount and
healthBar.Main.Bar.Amount.Text ~= "0 HP"
then
local distance = (NPC.HumanoidRootPart.Position - Player_HumanoidRootPart.Position).Magnitude
if distance < maxDistance and distance < nearestDistance then
nearestDistance = distance
nearestPlayer = NPC
end
end
end
end
if nearestPlayer then
task.wait(0.05)
sendAttackCommand(nearestPlayer.Name, true)
task.wait(0.05)
end
end
local function getMobType(enemy)
if enemy and enemy:FindFirstChild("HumanoidRootPart") then
local size = enemy.HumanoidRootPart.Size
if size.X == 2 and size.Y == 2 and size.Z == 1 then
return "Normal"
elseif size.X == 4 and size.Y == 4 and size.Z == 2 then
return "Big"
end
end
return "Unknown"
end
local function getCurrentWorldName()
local enemiesServerFolder = workspace:FindFirstChild("__Main") and workspace.__Main:FindFirstChild("__Enemies") and workspace.__Main.__Enemies:FindFirstChild("Server")
if not enemiesServerFolder then return nil end
local worldNames = {
[1] = "Leveling City",
[2] = "Grass Village",
[3] = "Brum Island",
[4] = "Faceheal Town",
[5] = "Lucky Kingdom",
[6] = "Nipon City",
[7] = "Mori Town",
[8] = "Dragon City",
[9] = "XZ City"
}
for i = 1, 9 do
local worldFolder = enemiesServerFolder:FindFirstChild(tostring(i))
if worldFolder then
for _, child in ipairs(worldFolder:GetChildren()) do
if child:IsA("Part") then
return worldNames[i]
end
end
end
end
return nil
end
local UserInputService = game:GetService("UserInputService")
local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled
local windowSize = isMobile and UDim2.fromOffset(450, 300) or UDim2.fromOffset(525, 375)
local deviceType = isMobile and "Mobile" or "Computer"
local Window =
Fluent:CreateWindow(
{
Title = game:GetService("MarketplaceService"):GetProductInfo(game.PlaceId).Name .. " - " .. deviceType,
SubTitle = "By Perfectus",
TabWidth = 135,
Size = windowSize,
Acrylic = false,
Theme = "Perfectus",
MinimizeKey = Enum.KeyCode.LeftControl
}
)
local Tabs = {
Updates = Window:AddTab({Title = "Updates", Icon = "http://www.roblox.com/asset/?id=100643227311924"}),
Main = Window:AddTab({Title = "Main", Icon = "http://www.roblox.com/asset/?id=101029723441244"}),
Winter = Window:AddTab({Title = "Winter", Icon = "http://www.roblox.com/asset/?id=105761433635743"}),
dungeon = Window:AddTab({Title = "Dungeon", Icon = "http://www.roblox.com/asset/?id=94159588809272"}),
castle = Window:AddTab({Title = "Castle", Icon = "http://www.roblox.com/asset/?id=83915833356289"}),
Rank = Window:AddTab({Title = "Rank", Icon = "http://www.roblox.com/asset/?id=85503604796811"}),
Exchange = Window:AddTab({Title = "Exchange", Icon = "http://www.roblox.com/asset/?id=77484367461047"}),
Potion = Window:AddTab({Title = "Potion", Icon = "http://www.roblox.com/asset/?id=94258015983504"}),
Level = Window:AddTab({Title = "Stats", Icon = "http://www.roblox.com/asset/?id=137048024127340"}),
Webhook = Window:AddTab({Title = "Webhook", Icon = "http://www.roblox.com/asset/?id=125671980317396"}),
tp = Window:AddTab({Title = "Teleports", Icon = "http://www.roblox.com/asset/?id=121248877953645"}),
pets = Window:AddTab({Title = "Pets", Icon = "http://www.roblox.com/asset/?id=75110508198546"}),
misc = Window:AddTab({Title = "Weapons", Icon = "http://www.roblox.com/asset/?id=72061049443754"}),
Settings = Window:AddTab({Title = "Settings", Icon = "http://www.roblox.com/asset/?id=136391856776112"})
}
local Options = Fluent.Options
local function populateTabs()
task.spawn(function()
Tabs.Updates:AddSection("WEBSITE")
Tabs.Updates:AddButton({
Title = "Website Link",
Description = "",
Callback = function()
setclipboard("https://perfectusmim1.github.io/websitem.github.io/")
Fluent:Notify({
Title = "Perfectus",
Content = "Copied to clipboard!",
Duration = 3
})
end
})
Tabs.Updates:AddSection("DISCORD")
Tabs.Updates:AddButton({
Title = "Discord Link",
Description = "",
Callback = function()
setclipboard("https://discord.com/invite/FcFkuF4xR3")
Fluent:Notify({
Title = "Perfectus",
Content = "Copied to clipboard!",
Duration = 3
})
end
})
Tabs.Updates:AddSection("VERSION")
Tabs.Updates:AddParagraph({
Title = "v2.9.6",
Content = [[May 11, 2025]]
})
end)
task.spawn(function()
Tabs.Main:AddSection("Basic Settings")
Tabs.Main:AddButton(
{
Title = "Get Gamepass",
Description = "",
Callback = function()
local leaderstats = player:FindFirstChild("leaderstats")
if leaderstats then
local passes = leaderstats:FindFirstChild("Passes")
if passes then
passes:SetAttribute("AutoAttack", true)
passes:SetAttribute("AutoClicker", true)
passes:SetAttribute("DoubleCoins", true)
passes:SetAttribute("DoubleExp", true)
passes:SetAttribute("DoubleGems", true)
passes:SetAttribute("ExtraEquip", true)
passes:SetAttribute("ExtraRise", true)
passes:SetAttribute("InstaDestroy", true)
passes:SetAttribute("InstaArise", true)
passes:SetAttribute("DoubleDrops", true)
passes:SetAttribute("MoreStorage", true)
passes:SetAttribute("MoreStorage2", true)
Fluent:Notify(
{
Title = "Perfectus",
Content = "Gamepass received successfully.",
Duration = 3
}
)
else
warn("Damn")
end
else
warn("leaderstats folder not found")
end
end
}
)
Tabs.Main:AddButton(
{
Title = "Redeem Codes",
Description = "",
Callback = function()
local remote = game:GetService("ReplicatedStorage"):WaitForChild("BridgeNet2"):WaitForChild("dataRemoteEvent")
local codes = {"QUESTS", "ALIENS", "1MLIKES", "WINTERRAID", "EASTER", "GZIRU"}
for _, code in ipairs(codes) do
local args = {
[1] = {
[1] = {
["Event"] = "UseCode",
["Code"] = code
},
[2] = orosbucocugu
}
}
remote:FireServer(unpack(args))
task.wait(0.3)
end
end
}
)
Tabs.Main:AddButton(
{
Title = "Boost Shadows Speed",
Description = "",
Callback = function()
game:GetService("Players").LocalPlayer.leaderstats.PlayerStats:SetAttribute("ShadowRange", 199)
task.wait(0.1)
game:GetService("Players").LocalPlayer.leaderstats.PlayerStats:SetAttribute("ShadowSpeed", 199)
end
}
)
Tabs.Main:AddSection("Farm Settings")
Tabs.Main:AddDropdown(
"MovementMethod",
{
Title = "Method",
Values = {"Tween", "Teleport", "Walk"},
Multi = false,
Default = 2,
Callback = function(option)
movementMethod = option
end
}
)
Tabs.Main:AddDropdown(
"FarmType",
{
Title = "Farm Type",
Values = {"Normal", "Nearest", "Highest HP", "Lowest HP"},
Multi = false,
Default = "Normal",
Callback = function(option)
farmingStyle = option
end
}
)
Tabs.Main:AddDropdown(
"MobType",
{
Title = "Mob Type",
Values = MOB_TYPES,
Multi = true,
Default = {},
Callback = function(Value)
selectedMobTypes = {}
for mobType, isSelected in pairs(Value) do
if isSelected then
table.insert(selectedMobTypes, mobType)
end
end
end
}
)
Tabs.Main:AddSlider(
"MainWalkSpeed",
{
Title = "Walk Speed",
Description = "",
Default = 10,
Min = 0.1,
Max = 999,
Rounding = 0.1,
}
):OnChanged(function(Value)
game:GetService("Players").LocalPlayer.leaderstats.PlayerStats:SetAttribute("PlayerSpeed", Value)
end)
Tabs.Main:AddSlider(
"MainTweenSpeed",
{
Title = "Tween Speed",
Description = "",
Default = mainTweenSpeed,
Min = 0.1,
Max = 3.0,
Rounding = 1,
Callback = function(Value)
mainTweenSpeed = Value
end
}
)
Tabs.Main:AddSlider(
"Slider",
{
Title = "Farm Delay",
Description = "",
Default = 0.7,
Min = 0.1,
Max = 5,
Rounding = 1,
Callback = function(Value)
delay = Value
end
}
)
Tabs.Main:AddSection("Auto Farm")
local worldToMobs = {
["Leveling City"] = {"Soondoo", "Gonshee", "LongIn", "Daek", "Anders", "Largalgan"},
["Grass Village"] = {"Snake Man", "Blossom", "Black Crow"},
["Brum Island"] = {"Shark Man", "Eminel", "Light Admiral"},
["Faceheal Town"] = {"Luryu", "Fyakuya", "Genji"},
["Lucky Kingdom"] = {"Sortudo", "Michille", "Wind"},
["Nipon City"] = {"Heaven", "Zere", "Ika"},
["Mori Town"] = {"Diablo", "Gosuke", "Golyne"},
["Dragon City"] = {"Turtle", "Green", "Sky"},
["XZ City"] = {"Rider", "Cyborg", "Hurricane"},
["Kindama City"] = {"Shrimp", "Baira", "Lomo"},
["Hunters City"] = {"Wuiri Brute", "Wuiri", "Chris", "Chris Brute", "Gernnart", "Gernnart Brute"}
}
local allWorlds = {
"Leveling City",
"Grass Village",
"Brum Island",
"Faceheal Town",
"Lucky Kingdom",
"Nipon City",
"Mori Town",
"Dragon City",
"XZ City",
"Kindama City",
"Hunters City"
}
local selectedWorld = allWorlds[1]
local currentMobs = worldToMobs[selectedWorld] or {}
local currentWorldName = getCurrentWorldName()
local WorldDropdown = Tabs.Main:AddDropdown(
"WorldDropdown",
{
Title = "Select World",
Description = "Filter mobs by world",
Values = allWorlds,
Multi = false,
Default = currentWorldName
}
)
local MobDropdown = Tabs.Main:AddDropdown(
"MobDropdown",
{
Title = "Select Mobs",
Description = "Mobs from selected world",
Values = currentMobs,
Multi = true,
Default = {}
}
)
MobDropdown:OnChanged(
function(Value)
local selectedMobs = {}
for mobName, isSelected in next, Value do
if isSelected then
table.insert(selectedMobs, mobName)
end
end
_G.selectedMobs = selectedMobs
selectedMobName = #selectedMobs > 0 and selectedMobs[1] or ""
killedNPCs = {}
end
)
WorldDropdown:OnChanged(
function(Value)
selectedWorld = Value
currentMobs = worldToMobs[selectedWorld] or {}
if MobDropdown then
MobDropdown:SetValues(currentMobs)
end
end)
Tabs.Main:AddToggle(
"FarmSelectedMob",
{
Title = "Farm Selected Mobs",
Default = false,
Callback = function(state)
if state and game.PlaceId ~= 87039211657390 then
return
end
teleportEnabled = state
damageEnabled = state
killedNPCs = {}
if state then
task.spawn(teleportToSelectedEnemy)
game:GetService("Players").LocalPlayer:SetAttribute("AutoClick", true)
end
end
}
)
Tabs.Main:AddToggle(
"AutoFarmAllMobs",
{
Title = "Auto Farm All Mobs",
Default = false,
Callback = function(state)
if state and game.PlaceId ~= 87039211657390 then
return
end
autoFarmV2Enabled = state
teleportEnabled = false
if state then
task.spawn(autoFarmV2)
game:GetService("Players").LocalPlayer:SetAttribute("AutoClick", true)
end
end
}
)
Tabs.Main:AddSection("Auto Rejoin")
Tabs.Main:AddParagraph({
Title = "Info",
Content = "If you experience crashes during long farm sessions, you can enable this as an alternative solution. Don't forget to enable Auto Execute as well!"
})
local autoRejoinMainEnabled = false
local autoRejoinMainThread
Tabs.Main:AddToggle("AutoRejoinMain", {
Title = "Auto Rejoin",
Default = false,
Callback = function(state)
autoRejoinMainEnabled = state
if state then
if autoRejoinMainThread then
autoRejoinMainThread:Disconnect()
end
autoRejoinMainThread = task.spawn(function()
while autoRejoinMainEnabled do
for i = 1, 900 do
if not autoRejoinMainEnabled then return end
task.wait(1)
end
if autoRejoinMainEnabled then
game:GetService("TeleportService"):Teleport(game.PlaceId, game.Players.LocalPlayer)
end
end
end)
end
end
})
Tabs.Main:AddSection("Auto Attack")
local function attackNearest()
local Player_HumanoidRootPart = LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
local nearestPlayer, nearestDistance
for _, NPC in pairs(game.Workspace.__Main.__Enemies.Client:GetChildren()) do
if Player_HumanoidRootPart and NPC then
local distance = (NPC.HumanoidRootPart.Position - Player_HumanoidRootPart.Position).Magnitude
if
distance <= maxDistance and (not nearestDistance or distance < nearestDistance) and
NPC.HealthBar.Main.Bar.Amount.Text ~= "0 HP"
then
nearestDistance = distance
nearestPlayer = NPC
end
end
end
if nearestPlayer then
local targetPart = nearestPlayer:FindFirstChild("HumanoidRootPart")
if targetPart then
teleportPetsToTargetPart(targetPart)
end
sendAttackCommand(nearestPlayer.Name, false)
end
end
Tabs.Main:AddSlider(
"Slider",
{
Title = "Auto Attack Range",
Description = "",
Default = 30,
Min = 0,
Max = 120,
Rounding = 0.1,
Callback = function(Value)
maxDistance = tonumber(Value)
end
}
)
local ToggleMain1 = Tabs.Main:AddToggle("MyToggleMain1", {Title = "Auto Attack v2", Default = false})
ToggleMain1:OnChanged(
function()
if Options.MyToggleMain1.Value and not userFolder:GetChildren()[1] then
Options.MyToggleMain1:SetValue(false)
Fluent:Notify(
{
Title = "Notification",
Content = "You don't have shadow equipped",
Duration = 3
}
)
elseif Options.MyToggleMain1.Value and userFolder:GetChildren()[1] then
repeat
local total = 0
for _, v in pairs(PET_FOLDER) do
if v:GetAttribute("Target") or v:GetAttribute("Target") == "" then
total = total + 1
print(total)
end
end
if total == 0 then
print("total == ", total)
attackNearest()
else
total = 0
print("total reset")
end
task.wait(0.5)
until not Options.MyToggleMain1.Value
end
end
)
Tabs.Main:AddSection("Auto Arise, Destroy")
local ToggleMain2 = Tabs.Main:AddToggle("MyToggleMain2", {Title = "Auto Arise", Default = false})
ToggleMain2:OnChanged(
function()
if Options.MyToggleMain2.Value then
connection =
workspace.__Main.__Enemies.Client.DescendantAdded:Connect(
function(descendant)
if descendant:IsA("ProximityPrompt") and descendant.Name == "ArisePrompt" then
print("Found", descendant)
local num = 0
while descendant.Parent and Options.MyToggleMain2.Value do
descendant.HoldDuration = 0
fireproximityprompt(descendant)
num = num + 1
print(num, descendant.Parent)
task.wait(ariseDestroyDelay)
end
end
end
)
else
if connection then
connection:Disconnect()
connection = nil
end
end
end
)
local ToggleMain3 = Tabs.Main:AddToggle("MyToggleMain3", {Title = "Auto Destroy", Default = false})
ToggleMain3:OnChanged(
function()
if Options.MyToggleMain3.Value then
local connection =
workspace.__Main.__Enemies.Client.DescendantAdded:Connect(
function(descendant)
if descendant:IsA("ProximityPrompt") and descendant.Name == "DestroyPrompt" then
print("Found", descendant)
local num = 0
while descendant.Parent and Options.MyToggleMain3.Value do
descendant.HoldDuration = 0
fireproximityprompt(descendant)
num = num + 1
print(num, descendant.Parent)
task.wait(ariseDestroyDelay)
end
end
end
)
else
if connection then
connection:Disconnect()
connection = nil
end
end
end
)
Tabs.Main:AddSlider(
"AriseDestroyDelay",
{
Title = "Arise/Destroy Delay",
Description = "",
Default = 0.1,
Min = 0.01,
Max = 3,
Rounding = 2,
Callback = function(Value)
ariseDestroyDelay = Value
end
}
)
Tabs.Main:AddSection("Filtered Auto Arise/Destroy")
local allMobs = {}
for _, mobsList in pairs(worldToMobs) do
for _, mobName in ipairs(mobsList) do
if not table.find(allMobs, mobName) then
table.insert(allMobs, mobName)
end
end
end
table.sort(allMobs)
local ariseSelectedMobTypes = {}
local destroySelectedMobTypes = {}
local ariseSelectedMobs = {}
local destroySelectedMobs = {}
local AriseTypeDropdown = Tabs.Main:AddDropdown(
"AriseTypeDropdown",
{
Title = "Arise - Mob Types",
Description = "",
Values = {"Normal", "Big"},
Multi = true,
Default = {}
}
)
AriseTypeDropdown:OnChanged(
function(Value)
ariseSelectedMobTypes = {}
for mobType, isSelected in pairs(Value) do
if isSelected then
table.insert(ariseSelectedMobTypes, mobType)
end
end
end
)
local DestroyTypeDropdown = Tabs.Main:AddDropdown(
"DestroyTypeDropdown",
{
Title = "Destroy - Mob Types",
Description = "",
Values = {"Normal", "Big"},
Multi = true,
Default = {}
}
)
DestroyTypeDropdown:OnChanged(
function(Value)
destroySelectedMobTypes = {}
for mobType, isSelected in pairs(Value) do
if isSelected then
table.insert(destroySelectedMobTypes, mobType)
end
end
end
)
local AriseMobDropdown = Tabs.Main:AddDropdown(
"AriseMobDropdown",
{
Title = "Arise - Specific Mobs",
Description = "",
Values = allMobs,
Multi = true,
Default = {}
}
)
AriseMobDropdown:OnChanged(
function(Value)
ariseSelectedMobs = {}
for mobName, isSelected in pairs(Value) do
if isSelected then
table.insert(ariseSelectedMobs, mobName)
end
end
end
)
local DestroyMobDropdown = Tabs.Main:AddDropdown(
"DestroyMobDropdown",
{
Title = "Destroy - Specific Mobs",
Description = "",
Values = allMobs,
Multi = true,
Default = {}
}
)
DestroyMobDropdown:OnChanged(
function(Value)
destroySelectedMobs = {}
for mobName, isSelected in pairs(Value) do
if isSelected then
table.insert(destroySelectedMobs, mobName)
end
end
end
)
local function isMatchingAriseFilteredMob(enemy)
local typeFilterApplied = #ariseSelectedMobTypes > 0
local mobFilterApplied = #ariseSelectedMobs > 0
if not typeFilterApplied and not mobFilterApplied then
return false
end
if typeFilterApplied then
local mobType = getMobType(enemy)
if not table.find(ariseSelectedMobTypes, mobType) then
return false
end
end
if mobFilterApplied then
local healthBar = enemy:FindFirstChild("HealthBar")
if healthBar and healthBar:FindFirstChild("Main") and healthBar.Main:FindFirstChild("Title") then
local mobName = healthBar.Main.Title.Text
if not table.find(ariseSelectedMobs, mobName) then
return false
end
else
return false
end
end
return true
end
local function isMatchingDestroyFilteredMob(enemy)
local typeFilterApplied = #destroySelectedMobTypes > 0
local mobFilterApplied = #destroySelectedMobs > 0
if not typeFilterApplied and not mobFilterApplied then
return false
end
if typeFilterApplied then
local mobType = getMobType(enemy)
if not table.find(destroySelectedMobTypes, mobType) then
return false
end
end
if mobFilterApplied then
local healthBar = enemy:FindFirstChild("HealthBar")
if healthBar and healthBar:FindFirstChild("Main") and healthBar.Main:FindFirstChild("Title") then
local mobName = healthBar.Main.Title.Text
if not table.find(destroySelectedMobs, mobName) then
return false
end
else
return false
end
end
return true
end
local filteredActionsConnection
local FilteredActionsToggle = Tabs.Main:AddToggle(
"FilteredActionsToggle",
{
Title = "Activate Filtered Actions",
Default = false
}
)
FilteredActionsToggle:OnChanged(function(state)
if state then
filteredActionsConnection = workspace.__Main.__Enemies.Client.DescendantAdded:Connect(
function(descendant)
if descendant:IsA("ProximityPrompt") then
local enemy = descendant:FindFirstAncestorOfClass("Model")
if not enemy then return end
local processId = game:GetService("HttpService"):GenerateGUID(false)
local isProcessActive = true
local function checkToggleState()
return Options.FilteredActionsToggle.Value and isProcessActive
end
if descendant.Name == "ArisePrompt" and isMatchingAriseFilteredMob(enemy) then
task.spawn(function()
while descendant.Parent and checkToggleState() do
descendant.HoldDuration = 0
fireproximityprompt(descendant)
task.wait(ariseDestroyDelay)
end
end)
elseif descendant.Name == "DestroyPrompt" and isMatchingDestroyFilteredMob(enemy) then
task.spawn(function()
while descendant.Parent and checkToggleState() do
descendant.HoldDuration = 0
fireproximityprompt(descendant)
task.wait(ariseDestroyDelay)
end
end)
end
end
end
)
else
if filteredActionsConnection then
filteredActionsConnection:Disconnect()
filteredActionsConnection = nil
end
end
end)
Tabs.Main:AddSection("Guild")
local donateNumber = 0
Tabs.Main:AddInput(
"Donate",
{
Title = "How much donate?",
Description = "",
Default = "",
Placeholder = "0",
Numeric = true,
Finished = true,
Callback = function(value)
donateNumber = value
end
})
Tabs.Main:AddToggle(
"DonateButton",
{
Title = "Donate",
Default = false,
Callback = function(state)
startdonate = state
if startdonate then
while startdonate do
local args = {
[1] = {
[1] = {
["Action"] = "Donate",
["Event"] = "GuildAction",
["Amount"] = donateNumber
},
[2] = orosbucocugu
}
}
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
task.wait(0.5)
end
end
end
})
Tabs.Main:AddSection("Quest")
Tabs.Main:AddToggle(
"AutoQuest",
{
Title = "Auto Claim Daily Quest",
Default = false,
Callback = function(state)
autoQuestEnabled = state
if state then
task.spawn(function()
while autoQuestEnabled do
local args = {[1] = {[1] = {["Id"] = "DailyTime",["Type"] = "Daily",["Event"] = "ClaimQuest"},[2] = "\11"}}game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
task.wait(0.1)
local args = {[1] = {[1] = {["Id"] = "DailyBrute",["Type"] = "Daily",["Event"] = "ClaimQuest"},[2] = "\11"}}game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
task.wait(0.1)
local args = {[1] = {[1] = {["Id"] = "DailyDungeon",["Type"] = "Daily",["Event"] = "ClaimQuest"},[2] = "\11"}}game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
task.wait(0.1)
local args = {[1] = {[1] = {["Id"] = "DailyEnemy",["Type"] = "Daily",["Event"] = "ClaimQuest"},[2] = "\11"}}game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
task.wait(0.1)
end
end)
end
end
})
Tabs.Main:AddToggle(
"AutoQuest2",
{
Title = "Auto Claim Weekly Quest",
Default = false,
Callback = function(state)
autoQuestEnabled2 = state
if state then
task.spawn(function()
while autoQuestEnabled2 do
local args = {[1] = {[1] = {["Id"] = "WeeklyArise",["Type"] = "Weekly",["Event"] = "ClaimQuest"},[2] = "\11"}}game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
task.wait(0.1)
local args = {[1] = {[1] = {["Id"] = "WeeklyBrute",["Type"] = "Weekly",["Event"] = "ClaimQuest"},[2] = "\11"}}game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
task.wait(0.1)
local args = {[1] = {[1] = {["Id"] = "WeeklyDungeon",["Type"] = "Weekly",["Event"] = "ClaimQuest"},[2] = "\11"}}game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
task.wait(0.1)
local args = {[1] = {[1] = {["Id"] = "WeeklyEnemy",["Type"] = "Weekly",["Event"] = "ClaimQuest"},[2] = "\11"}}game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
task.wait(0.1)
end
end)
end
end
})
Tabs.Winter:AddSection("Winter Farm")
local function teleportToWinter()
if not (player.Character and player.Character:FindFirstChild("HumanoidRootPart")) then
return false
end
anticheat()
player.Character.HumanoidRootPart.CFrame = WINTER_CFRAME
task.wait(0.5)
player.Character.HumanoidRootPart.CFrame = WINTER_CFRAME
task.wait(0.5)
local spawn = workspace:FindFirstChild("__Main")
and workspace.__Main:FindFirstChild("__World")
and workspace.__Main.__World:FindFirstChild("WinterIsland")
and workspace.__Main.__World.WinterIsland:FindFirstChild("Buildings")
and workspace.__Main.__World.WinterIsland.Buildings:FindFirstChild("Model")
and workspace.__Main.__World.WinterIsland.Buildings.Model:FindFirstChild("DoubleDungeonSpawn")
and workspace.__Main.__World.WinterIsland.Buildings.Model.DoubleDungeonSpawn:FindFirstChild("DoubleDungeonSpawn")
return spawn ~= nil
end
local function savePosition()
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
savedWinterPosition = player.Character.HumanoidRootPart.CFrame
end
end
local function returnToSaved()
if not savedWinterPosition then
return false
end
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
anticheat()
player.Character.HumanoidRootPart.CFrame = savedWinterPosition
return true
end
return false
end
local function anyMobsExist()
if not enemiesFolder then return false end
for _, enemy in pairs(enemiesFolder:GetChildren()) do
if enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") and not isEnemyDead(enemy) then
return true
end
end
return false
end
local function farmWinterIsland()
local target
for _, e in ipairs(enemiesFolder:GetChildren()) do
if e:IsA("Model") and e:FindFirstChild("HumanoidRootPart") and not isEnemyDead(e) then
local shouldIgnore = false
if e:FindFirstChild("HealthBar") and e.HealthBar:FindFirstChild("Main") and e.HealthBar.Main:FindFirstChild("Title") then
local mobName = e.HealthBar.Main.Title.Text
if table.find(ignoredWinterMobs, mobName) then
shouldIgnore = true
end
end
if not shouldIgnore then
target = e
break
end
end
end
if not target then return false end
local hrp = player.Character.HumanoidRootPart
if winterFarmMethod == "Teleport" then
anticheat()
hrp.CFrame = target.HumanoidRootPart.CFrame * CFrame.new(0,2,6)
elseif winterFarmMethod == "Tween" then
local ti = TweenInfo.new(winterTweenSpeed, Enum.EasingStyle.Linear, Enum.EasingDirection.Out)
local tw = TweenService:Create(hrp, ti, {CFrame = target.HumanoidRootPart.CFrame * CFrame.new(0,2,6)})
tw:Play(); tw.Completed:Wait()
elseif winterFarmMethod == "Walk" then
enableNoclip()
local hum = hrp.Parent:FindFirstChildOfClass("Humanoid")
if hum then
hum.WalkSpeed = winterWalkSpeed
hum:MoveTo((target.HumanoidRootPart.CFrame * CFrame.new(0,0,4)).Position)
local reached=false; local conn
conn = hum.MoveToFinished:Connect(function(s) reached=s end)
local t0 = tick()
while not reached and tick()-t0<3 do task.wait(0.05) end
conn:Disconnect()
end
end
task.wait(0.05)
sendAttackCommand(target.Name, true)
while target.Parent and not isEnemyDead(target) do task.wait(0.1) end
task.wait(winterFarmDelay)
return true
end
local function hasAliveEnemies()
if not enemiesFolder then return false end
for _, enemy in pairs(enemiesFolder:GetChildren()) do
if enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") and not isEnemyDead(enemy) then
local shouldIgnore = false
if enemy:FindFirstChild("HealthBar") and enemy.HealthBar:FindFirstChild("Main") and enemy.HealthBar.Main:FindFirstChild("Title") then
local mobName = enemy.HealthBar.Main.Title.Text
if table.find(ignoredWinterMobs, mobName) then
shouldIgnore = true
end
end
if not shouldIgnore then
return true
end
end
end
return false
end
local function bossExists()
if not enemiesFolder then return false end
for _, enemy in pairs(enemiesFolder:GetChildren()) do
if enemy:IsA("Model") and enemy:FindFirstChild("HumanoidRootPart") and
enemy:FindFirstChild("HealthBar") and enemy.HealthBar:FindFirstChild("Main") and
enemy.HealthBar.Main:FindFirstChild("Title") and
enemy.HealthBar.Main.Title.Text == winterEndBoss then
return true, enemy, isEnemyDead(enemy)
end
end
return false, nil, false
end
local function serverHopWinter()
if not winterServerHopEnabled then
return
end
print("Starting server hop process...")
local TeleportService = game:GetService("TeleportService")
local HttpService = game:GetService("HttpService")
local servers = {}
local function fetchServers(cursor)
local url = "https://games.roblox.com/v1/games/" .. game.PlaceId .. "/servers/Public?sortOrder=Asc&limit=100"
if cursor then
url = url .. "&cursor=" .. cursor
end
local success, result = pcall(function()
return HttpService:JSONDecode(game:HttpGet(url))
end)
if success and result and result.data then
for _, server in pairs(result.data) do
if server and server.playing and server.id ~= game.JobId then
table.insert(servers, server)
end
end
if result.nextPageCursor then
fetchServers(result.nextPageCursor)
end
end
end
pcall(fetchServers)
if #servers == 0 then
Fluent:Notify({
Title = "Winter Raid",
Content = "No servers found for hopping",
Duration = 3
})
return
end
Fluent:Notify({
Title = "Winter Raid",
Content = "Found " .. #servers .. " servers for hopping",
Duration = 3
})
if winterServerPreference == "Low Player Server" then
table.sort(servers, function(a, b)
return a.playing < b.playing
end)
else
table.sort(servers, function(a, b)
return a.playing > b.playing
end)
end
for _, server in pairs(servers) do
if server and server.id then
print("Attempting to teleport to server: " .. server.id .. " with " .. server.playing .. " players")
TeleportService:TeleportToPlaceInstance(game.PlaceId, server.id, player)
task.wait(2)
end
end
Fluent:Notify({
Title = "Winter Raid",
Content = "Server hop failed or completed, returning to saved position",
Duration = 3
})
returnToSaved()
end
Tabs.Winter:AddToggle("AutoWinterFarm", {
Title = "Auto Winter Farm",
Default = false,
Callback = function(state)
winterFarmEnabled = state
if state and game.PlaceId ~= 87039211657390 then
return
end
task.spawn(function()
while winterFarmEnabled do
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
anticheat()
player.Character.HumanoidRootPart.CFrame = WINTER_CFRAME
task.wait(0.5)
player.Character.HumanoidRootPart.CFrame = WINTER_CFRAME2
task.wait(1)
end
if anyMobsExist() then
local tempFarmingStyle = farmingStyle
local tempMovementMethod = movementMethod
local tempTargetedEnemies = targetedEnemies
local farming = true
while winterFarmEnabled and farming do
local bossFound, bossEnemy, bossDefeated = bossExists()
if bossFound and not bossDefeated then
Fluent:Notify({
Title = "Winter Raid",
Content = "Boss found, attacking...",
Duration = 3
})
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local hrp = player.Character.HumanoidRootPart
anticheat()
if winterFarmMethod == "Teleport" then
hrp.CFrame = bossEnemy.HumanoidRootPart.CFrame * CFrame.new(0,2,6)
elseif winterFarmMethod == "Tween" then
local ti = TweenInfo.new(winterTweenSpeed, Enum.EasingStyle.Linear, Enum.EasingDirection.Out)
local tw = TweenService:Create(hrp, ti, {CFrame = bossEnemy.HumanoidRootPart.CFrame * CFrame.new(0,2,6)})
tw:Play(); tw.Completed:Wait()
elseif winterFarmMethod == "Walk" then
enableNoclip()
local hum = hrp.Parent:FindFirstChildOfClass("Humanoid")
if hum then
hum.WalkSpeed = winterWalkSpeed
hum:MoveTo((bossEnemy.HumanoidRootPart.CFrame * CFrame.new(0,0,4)).Position)
local reached = false; local conn
conn = hum.MoveToFinished:Connect(function(s) reached = s end)
local t0 = tick()
while not reached and tick()-t0<3 do task.wait(0.05) end
conn:Disconnect()
end
end
task.wait(0.05)
sendAttackCommand(bossEnemy.Name, true)
while bossEnemy.Parent and not isEnemyDead(bossEnemy) do task.wait(0.1) end
task.wait(2)
farming = false
if winterServerHopEnabled then
Fluent:Notify({
Title = "Winter Raid",
Content = "Boss defeated, server hopping...",
Duration = 3
})
task.wait(1)
serverHopWinter()
elseif autoReturnEnabled then
returnToSaved()
end
break
end
elseif bossFound and bossDefeated then
print("Boss already defeated")
farming = false
if winterServerHopEnabled then
serverHopWinter()
elseif autoReturnEnabled then
returnToSaved()
end
break
elseif hasAliveEnemies() then
local farmedSomething = farmWinterIsland()
if not farmedSomething then
task.wait(1)
end
else
print("Waiting for boss or non-ignored enemies...")
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
anticheat()
player.Character.HumanoidRootPart.CFrame = WINTER_CFRAME2
end
if not anyMobsExist() then
print("No more enemies found, raid may be over")
farming = false
if autoReturnEnabled then
returnToSaved()
end
break
end
task.wait(1)
end
end
farmingStyle = tempFarmingStyle
movementMethod = tempMovementMethod
targetedEnemies = tempTargetedEnemies
else
local t = os.date("*t")
local waitMinutes = t.min < 10 and (10 - t.min) or (60 - t.min + 10)
local secs = waitMinutes * 60 - t.sec
local returnSuccess = returnToSaved()
if returnSuccess then
isWinterActive = false
end
Fluent:Notify({
Title = "Winter Raid",
Content = "Waiting " .. secs .. " seconds for next Winter raid",
Duration = 3
})
task.wait(secs)
if winterFarmEnabled then
isWinterActive = true
end
end
end
end)
end
})
local IgnoreWinterMobsDropdown = Tabs.Winter:AddDropdown("IgnoreWinterMobs", {
Title = "Ignore Mobs",
Values = {"Metal", "Snow Monarch", "Elf Soldier", "Laruda", "Winter Bear", "High Frost"},
Multi = true,
Default = {}
})
Tabs.Winter:AddDropdown("WinterEndBoss", {
Title = "End Boss Selection",
Values = {"Snow Monarch", "Laruda"},
Default = winterEndBoss,
Callback = function(v)
winterEndBoss = v
end
})
IgnoreWinterMobsDropdown:OnChanged(function(Value)
ignoredWinterMobs = {}
for Value, State in next, Value do
if State then
table.insert(ignoredWinterMobs, Value)
end
end
end)
Tabs.Winter:AddDropdown("WinterMethod", {
Title="Farm Method", Values={"Teleport","Tween","Walk"},
Default=winterFarmMethod,
Callback=function(v)
winterFarmMethod = v
end
})
Tabs.Winter:AddSlider("WinterTweenSpeed", {
Title = "Tween Speed",
Description = "",
Default = winterTweenSpeed,
Min = 0.3,
Max = 3.0,
Rounding = 1,
Callback = function(v)
winterTweenSpeed = v
end
})
Tabs.Winter:AddSlider("WinterDelay", {
Title = "Farm Delay",
Description = "",
Default = winterFarmDelay,
Min = 1,
Max = 15,
Rounding = 0.1,
Callback = function(v)
winterFarmDelay = v
end
})
Tabs.Winter:AddSection("Position")
Tabs.Winter:AddButton({
Title = "Save Position",
Description = "Save current position for return",
Callback = savePosition
})
Tabs.Winter:AddToggle("AutoReturn", {
Title = "Auto Return After Farming",
Default = false,
Callback = function(state)
autoReturnEnabled = state
end
})
Tabs.Winter:AddSection("Winter Server Hop")
Tabs.Winter:AddDropdown("WinterServerPreference", {
Title = "Server Player Count",
Values = {"Low Player Server", "High Player Server"},
Default = winterServerPreference,
Callback = function(v)
winterServerPreference = v
end
})
Tabs.Winter:AddToggle("WinterServerHop", {
Title = "Auto Server Hop When Raid Ends",
Default = winterServerHopEnabled,
Callback = function(state)
winterServerHopEnabled = state
end
})
Tabs.Rank:AddSection("Auto Rank")
Tabs.Rank:AddDropdown(
"AutoRankFarmMethod",
{
Title = "Farm Method",
Values = {"Teleport", "Tween"},
Multi = false,
Default = "Teleport",
Callback = function(Value)
_G.autoRankFarmMethod = Value
end
}
)
Tabs.Rank:AddSlider(
"AutoRankDelay",
{
Title = "Auto Rank Delay",
Description = "",
Default = 0.7,
Min = 0.01,
Max = 2,
Rounding = 1,
Callback = function(Value)
_G.autoRankDelay = Value
end
}
)
Tabs.Rank:AddSlider(
"AutoRankTweenSpeed",
{
Title = "Tween Speed",
Description = "",
Default = mainTweenSpeed,
Min = 0.1,
Max = 3.0,
Rounding = 1,
Callback = function(Value)
_G.autoRankTweenSpeed = Value
end
}
)
Tabs.Rank:AddParagraph(
{
Title = "Current Rank",
Content = "Rank: " .. game:GetService("Players").LocalPlayer.leaderstats.Rank.Value
}
)
Tabs.Rank:AddToggle(
"AutoRankToggle",
{
Title = "Auto Rank",
Default = false,
Callback = function(state)
autoRankEnabled = state
if state then
game:GetService("Players").LocalPlayer:SetAttribute("AutoClick", true)
task.spawn(
function()
if game.PlaceId ~= 128336380114944 and not workspace.__Main:FindFirstChild("Room_1") then
task.wait(3)
local args = {
[1] = {
[1] = {
["Action"] = "TestEnter",
["Event"] = "DungeonAction"
},
[2] = orosbucocugu
}
}
remote:FireServer(unpack(args))
task.wait(1)
end
targetedEnemies = {}
while autoRankEnabled do
if castleFarmEnabled then
break
end
local target = getAnyEnemy()
if target and target.Parent then
anticheat()
local enemyPos = target.HumanoidRootPart.Position
local enemyLook = target.HumanoidRootPart.CFrame.LookVector
local teleportPos = enemyPos - (enemyLook * 5)
local targetCFrame = CFrame.new(teleportPos, enemyPos)
local farmMethod = _G.autoRankFarmMethod or "Teleport"
local farmDelay = _G.autoRankDelay or 0.7
if farmMethod == "Tween" then
local tweenInfo = TweenInfo.new(mainTweenSpeed, Enum.EasingStyle.Linear, Enum.EasingDirection.Out)
local tween = TweenService:Create(hrp, tweenInfo, {CFrame = targetCFrame})
tween:Play()
tween.Completed:Wait()
else
hrp.CFrame = targetCFrame
end
task.wait(0.05)
sendAttackCommand(target.Name, true)
task.wait(0.05)
while target.Parent and not isEnemyDead(target) do
task.wait(0.1)
end
targetedEnemies[target.Name] = true
if farmDelay and farmDelay > 0 then
task.wait(farmDelay)
end
else
local serverFolder = workspace.__Main.__Enemies.Server
if serverFolder and #serverFolder:GetChildren() > 0 then
local randomIndex = math.random(1, #serverFolder:GetChildren())
local serverPart = serverFolder:GetChildren()[randomIndex]
if serverPart then
anticheat()
hrp.CFrame = serverPart.CFrame
sendAttackCommand(serverPart.Name, true)
task.wait(0.6)
else
task.wait(0.6)
end
else
task.wait(0.6)
end
end
task.wait(0.1)
end
end
)
end
end
}
)
Tabs.dungeon:AddSection("Auto Dungeon Search")
Tabs.dungeon:AddDropdown(
"WorldSelection",
{
Title = "Select Worlds",
Values = {
"Leveling City",
"Grass Village",
"Brum Island",
"Faceheal Town",
"Lucky Kingdom",
"Nipon City",
"Mori Town",
"Dragon Ball",
"One Punch",
"Kindama City",
"Hunters City"
},
Multi = true,
Default = {},
Callback = function(Value)
local selected = {}
for worldName, isSelected in pairs(Value) do
if isSelected then
table.insert(selected, worldName)
end
end
selectedWorlds = selected
end
}
)
Tabs.dungeon:AddDropdown(
"RankSelection",
{
Title = "Select Ranks",
Values = {"E", "D", "C", "B", "A", "S", "SS"},
Multi = true,
Default = {},
Callback = function(Value)
local selected = {}
for rank, isSelected in pairs(Value) do
if isSelected then
table.insert(selected, rank)
end
end
selectedRanks = selected
end
}
)
Tabs.dungeon:AddDropdown(
"DungeonTypeDropdown",
{
Title = "Dungeon Type",
Values = {"Normal Dungeon", "Red Dungeon"},
Multi = true,
Default = {},
Callback = function(Value)
local selected = {}
for dungeonType, isSelected in pairs(Value) do
if isSelected then
table.insert(selected, dungeonType)
end
end
selectedDungeonTypes = selected
end
}
)
Tabs.dungeon:AddButton({
Title = "Select All",
Description = "Select all options in World, Rank and Dungeon Type dropdowns",
Callback = function()
local allWorlds = {}
for _, world in ipairs({
"Leveling City",
"Grass Village",
"Brum Island",
"Faceheal Town",
"Lucky Kingdom",
"Nipon City",
"Mori Town",
"Dragon Ball",
"One Punch",
"Kindama City",
"Hunters City"
}) do
allWorlds[world] = true
end
Options.WorldSelection:SetValue(allWorlds)
local allRanks = {}
for _, rank in ipairs({"E", "D", "C", "B", "A", "S", "SS"}) do
allRanks[rank] = true
end
Options.RankSelection:SetValue(allRanks)
local allDungeonTypes = {}
for _, dungeonType in ipairs({"Normal Dungeon", "Red Dungeon"}) do
allDungeonTypes[dungeonType] = true
end
Options.DungeonTypeDropdown:SetValue(allDungeonTypes)
Fluent:Notify({
Title = "Selection Complete",
Content = "All options have been selected in all dropdowns",
Duration = 3
})
end
})
Tabs.dungeon:AddDropdown(
"DungeonSearchMethod",
{
Title = "Dungeon Search Method",
Values = {"Teleport"},
Multi = false,
Default = "Teleport",
Callback = function(value)
end
}
)
Tabs.dungeon:AddToggle(
"AutoSearchDungeon",
{
Title = "Auto Search Dungeon",
Default = false,
Callback = function(state)
teleportingEnabled = state
if state then
if game.PlaceId ~= 87039211657390 then
Fluent:Notify(
{
Title = "Warning",
Content = "Dungeon search is only available in the correct place.",
Duration = 5
}
)
teleportingEnabled = false
return
end
local selectedMethod = Options.DungeonSearchMethod.Value
task.spawn(
function()
searchDungeon(selectedMethod)
end
)
end
end
}
)
Tabs.dungeon:AddToggle(
"AutoBuyTicket",
{
Title = "Auto Buy Ticket (Gems)",
Default = false,
Callback = function(state)
autoBuyTicketEnabled = state
end
}
)
Tabs.dungeon:AddSection("Dungeon Farm")
Tabs.dungeon:AddDropdown(
"DungeonFarmMethod",
{
Title = "Farm Method",
Values = {"Teleport", "Tween"},
Multi = false,
Default = "Teleport",
Callback = function(Value)
dungeonFarmMethod = Value
end
}
)
Tabs.dungeon:AddSlider(
"DungeonTweenSpeed",
{
Title = "Tween Speed",
Description = "",
Default = dungeonTweenSpeed,
Min = 0.1,
Max = 3.0,
Rounding = 1,
Callback = function(Value)
dungeonTweenSpeed = Value
end
}
)
Tabs.dungeon:AddToggle("TeleportMobs", {
Title = "Auto Farm Dungeon",
Default = false,
Callback = function(state)
if state and isInCastle() then
Fluent:Notify({
Title = "Warning",
Content = "You cannot start Dungeon Farm while in Castle!",
Duration = 4
})
return
end
teleportEnabled = state
if state then
task.spawn(teleportDungeon)
game:GetService("Players").LocalPlayer:SetAttribute("AutoClick", true)
else
dungeonkill = {}
end
end
})
DungeonDelayDefault = 0.7
Tabs.dungeon:AddSlider(
"DungeonDelay",
{
Title = "Dungeon Farm Delay",
Description = "",
Default = DungeonDelayDefault,
Min = 0.1,
Max = 2,
Rounding = 1,
Callback = function(Value)
DungeonDelay = Value
end
}
)
Tabs.dungeon:AddSection("Dungeon Boss Room")
Tabs.dungeon:AddSlider(
"DungeonDelay2",
{
Title = "Dungeon Boss Wait Delay",
Description = "",
Default = "6",
Min = 1,
Max = 10,
Rounding = 0.1,
Callback = function(Value)
DungeonDelay2 = Value
end
}
)
Tabs.dungeon:AddSection("Runes")
Tabs.dungeon:AddDropdown("DungeonRuneDropdown", {
Title = "Select Dungeon Runes",
Values = getRuneDropdownValues(),
Multi = true,
Default = {},
Callback = function(val)
selectedDungeonRunes = {}
for displayName, isSelected in pairs(val) do
if isSelected then
local folderName = displayToFolder[displayName]
table.insert(selectedDungeonRunes, folderName)
end
end
end
})
Tabs.dungeon:AddButton({
Title = "Refresh Rune List",
Callback = function()
local dropdown = Fluent.Options.DungeonRuneDropdown
if dropdown then
dropdown:SetValues(getRuneDropdownValues())
end
end
})
Tabs.dungeon:AddToggle("AutoUseDungeonRune", {
Title = "Auto Use Selected Runes",
Default = false,
Callback = function(state)
autoUseDungeonRune = state
end
})
Tabs.dungeon:AddSection("Auto Rejoin Dungeon")
local autoRejoinDungeonEnabled = false
local function autoRejoinDungeonLoop()
while autoRejoinDungeonEnabled do
local dungeonInfo = game:GetService("Players").LocalPlayer.PlayerGui.Hud.UpContanier.DungeonInfo.TextLabel
if dungeonInfo and dungeonInfo.Text:find("Dungeon Ends in") then
task.wait(autoRejoinDelay)
local argsList = {
{
[1] = {
[1] = {
["Type"] = "Gems",
["Action"] = "BuyTicket",
["Event"] = "DungeonAction"
},
[2] = orosbucocugu
}
}
}
for _, args in ipairs(argsList) do
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
end
task.wait(0.5)
local argsCreate = {
[1] = {
[1] = {
["Action"] = "Create",
["Event"] = "DungeonAction"
},
[2] = orosbucocugu
}
}
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(argsCreate))
task.wait(0.5)
if (autoUseDungeonRune == true or autoUseDungeonRejoinRune == true) and #selectedDungeonRunes > 0 then
print("[DEBUG] Adding runes:", table.concat(selectedDungeonRunes, ", "))
local slot = 1
for _, runeName in ipairs(selectedDungeonRunes) do
for i = 1, 6 do
local addArgs = {
[1] = {
[1] = {
["Dungeon"] = player.UserId,
["Action"] = "AddItems",
["Slot"] = slot,
["Event"] = "DungeonAction",
["Item"] = runeName
},
[2] = orosbucocugu
}
}
remote:FireServer(unpack(addArgs))
print("[DEBUG] Added rune:", runeName, "Slot:", slot)
task.wait(0.1)
slot += 1
end
end
end
task.wait(0.5)
local player = game:GetService("Players").LocalPlayer
local argsStart = {
[1] = {
[1] = {
["Dungeon"] = player.UserId,
["Action"] = "Start",
["Event"] = "DungeonAction"
},
[2] = orosbucocugu
}
}
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(argsStart))
repeat task.wait(1) until not (dungeonInfo and dungeonInfo.Text:find("Dungeon Ends in")) or not autoRejoinDungeonEnabled
end
task.wait(0.2)
end
end
Tabs.dungeon:AddSlider(
"AutoRejoinDelay",
{
Title = "Auto Rejoin Delay",
Description = "",
Default = 1,
Min = 0,
Max = 30,
Rounding = 0.1,
Callback = function(val)
autoRejoinDelay = tonumber(val)
end
}
)
Tabs.dungeon:AddToggle(
"AutoRejoinDungeon",
{
Title = "Auto Rejoin Dungeon (Close Leave Fast)",
Default = false,
Callback = function(state)
autoRejoinDungeonEnabled = state
if state then
task.spawn(autoRejoinDungeonLoop)
end
end
}
)
Tabs.dungeon:AddToggle(
"AutoRejoinRuneDungeon",
{
Title = "Auto Rejoin Dungeon Use Rune",
Default = false,
Callback = function(state)
autoUseDungeonRejoinRune = state
end
}
)
local leaveFastEnabled = false
local function checkDungeonEndText()
while leaveFastEnabled do
local dungeonInfo = game:GetService("Players").LocalPlayer.PlayerGui.Hud.UpContanier.DungeonInfo.TextLabel
if dungeonInfo and dungeonInfo.Text:find("Dungeon Ends in") then
game:GetService("TeleportService"):Teleport(87039211657390, game.Players.LocalPlayer)
break
end
task.wait(0.1)
end
end
Tabs.dungeon:AddToggle(
"LeaveFastDungeon",
{
Title = "Leave Fast Dungeon",
Default = false,
Callback = function(state)
leaveFastEnabled = state
if state then
task.spawn(checkDungeonEndText)
end
end
}
)
local function autoDetectDoubleDungeon()
local inDoubleDungeon = false
local savedRejoinState = false
while waitdouble do
local dungeonInfo = game:GetService("Players").LocalPlayer.PlayerGui.Hud.UpContanier.DungeonInfo.TextLabel
if dungeonInfo then
if dungeonInfo.Text:find("Double Dungeon Appear") and not inDoubleDungeon then
inDoubleDungeon = true
savedRejoinState = autoRejoinDungeonEnabled
if autoRejoinDungeonEnabled then
Fluent:Notify({
Title = "Double Dungeon",
Content = "Double dungeon detected! Auto rejoin paused.",
Duration = 5
})
autoRejoinDungeonEnabled = false
end
elseif inDoubleDungeon and dungeonInfo.Text:find("Dungeon Ends in") then
inDoubleDungeon = false
if savedRejoinState then
task.wait(1)
autoRejoinDungeonEnabled = true
Fluent:Notify({
Title = "Double Dungeon",
Content = "Double dungeon completed. Auto rejoin restored.",
Duration = 5
})
end
end
end
task.wait(0.01)
end
end
Tabs.dungeon:AddToggle(
"DoubleDungeonToggle",
{
Title = "Wait for Double Dungeon",
Default = false,
Callback = function(state)
waitdouble = state
if state then
task.spawn(autoDetectDoubleDungeon)
end
end
}
)
Tabs.dungeon:AddSection("Dungeon Stuck Rejoin")
Tabs.dungeon:AddDropdown("DungeonRoomRejoinMinutes", {
Title = "Rejoin If Stuck (Minutes)",
Values = {"1","2","3","4","5","6","7","8","9","10"},
Multi = false,
Default = "3",
Callback = function(val)
dungeonRoomRejoinMinutes = tonumber(val)
end
})
Tabs.dungeon:AddToggle("DungeonRoomRejoinToggle", {
Title = "Enable Stuck Room Rejoin",
Default = false,
Callback = function(state)
dungeonRoomRejoinEnabled = state
end
})
local function dungeonRoomStuckRejoinLoop()
local lastRoom = nil
local lastRoomChange = os.clock()
while dungeonRoomRejoinEnabled and game.PlaceId == 128336380114944 do
local roomLabel = player.PlayerGui and player.PlayerGui:FindFirstChild("Hud") and player.PlayerGui.Hud:FindFirstChild("UpContanier") and player.PlayerGui.Hud.UpContanier:FindFirstChild("Room")
local roomText = roomLabel and roomLabel.Text or ""
if roomText ~= lastRoom then
lastRoom = roomText
lastRoomChange = os.clock()
end
if lastRoom and (os.clock() - lastRoomChange) >= (dungeonRoomRejoinMinutes * 60) then
Fluent:Notify({
Title = "Dungeon Rejoin",
Content = "Rejoining dungeon (stuck in same room for "..dungeonRoomRejoinMinutes.." min)",
Duration = 5
})
local argsList = {
{
[1] = {
[1] = {
["Type"] = "Gems",
["Action"] = "BuyTicket",
["Event"] = "DungeonAction"
},
[2] = orosbucocugu
}
}
}
for _, args in ipairs(argsList) do
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
end
task.wait(0.5)
local argsCreate = {
[1] = {
[1] = {
["Action"] = "Create",
["Event"] = "DungeonAction"
},
[2] = orosbucocugu
}
}
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(argsCreate))
task.wait(0.5)
if autoUseDungeonRejoinRune == true and #selectedDungeonRunes > 0 then
for _, runeName in ipairs(selectedDungeonRunes) do
local addArgs = {
[1] = {
[1] = {
["Dungeon"] = player.UserId,
["Action"] = "AddItems",
["Slot"] = 1,
["Event"] = "DungeonAction",
["Item"] = runeName
},
[2] = orosbucocugu
}
}
remote:FireServer(unpack(addArgs))
task.wait(0.1)
end
end
task.wait(0.5)
local argsStart = {
[1] = {
[1] = {
["Dungeon"] = player.UserId,
["Action"] = "Start",
["Event"] = "DungeonAction"
},
[2] = orosbucocugu
}
}
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(argsStart))
break
end
task.wait(1)
end
end
task.spawn(function()
while true do
if dungeonRoomRejoinEnabled and game.PlaceId == 128336380114944 then
dungeonRoomStuckRejoinLoop()
end
task.wait(2)
end
end)
Tabs.dungeon:AddSection("Advanced Dungeon Options")
local bypassDungeonEnabled = false
Tabs.dungeon:AddButton({
Title = "Bypass Dungeon",
Description = "",
Callback = function()
local argsList = {
{
[1] = {
[1] = {
["Type"] = "Gems",
["Action"] = "BuyTicket",
["Event"] = "DungeonAction"
},
[2] = orosbucocugu
}
}
}
for _, args in ipairs(argsList) do
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
end
local args = {
[1] = {
[1] = {
["Action"] = "Create",
["Event"] = "DungeonAction"
},
[2] = orosbucocugu
}
}
game:GetService("ReplicatedStorage"):WaitForChild("BridgeNet2"):WaitForChild("dataRemoteEvent"):FireServer(unpack(args))
task.wait(0.1)
local startArgs = {
[1] = {
[1] = {
["Dungeon"] = game:GetService("Players").LocalPlayer.UserId,
["Action"] = "Start",
["Event"] = "DungeonAction"
},
[2] = orosbucocugu
}
}
game:GetService("ReplicatedStorage"):WaitForChild("BridgeNet2"):WaitForChild("dataRemoteEvent"):FireServer(unpack(startArgs))
end
})
end)
task.spawn(function()
task.wait(0.1)
Tabs.castle:AddSection("Auto Castle Farm")
Tabs.castle:AddParagraph(
{
Title = "Castle Farm",
Content = "If you select 'False', checkpoints will not be used and your floors will progress as 1, 2, 3, etc."
}
)
Tabs.castle:AddDropdown(
"CastleCheckpoint",
{
Title = "Castle Checkpoint",
Values = {"False", "10", "20", "50", "70", "100"},
Multi = false,
Default = "False",
Callback = function(Value)
selectedCheckpoint = Value
end
}
)
Tabs.castle:AddToggle(
"EnableCheckpoints",
{
Title = "Enable Checkpoints",
Default = false,
Callback = function(Value)
checkpointsEnabled = Value
end
}
)
Tabs.castle:AddDropdown(
"CastleFarmMethod",
{
Title = "Farm Method",
Values = {"Teleport", "Tween"},
Multi = false,
Default = "Teleport",
Callback = function(Value)
castleFarmMethod = Value
end
}
)
Tabs.castle:AddToggle(
"CastleFarm",
{
Title = "Auto Farm Castle",
Default = false,
Callback = function(state)
if state and isInDungeon() then
Fluent:Notify({
Title = "Warning",
Content = "You cannot start Castle Farm while in Dungeon!",
Duration = 4
})
return
end
castleFarmEnabled = state
if state then
if game.PlaceId == 128336380114944 then
task.spawn(teleportCastleFarmMain)
game:GetService("Players").LocalPlayer:SetAttribute("AutoClick", true)
else
task.spawn(searchLoop)
end
task.spawn(
function()
while castleFarmEnabled do
wait(20)
if castleFarmEnabled then
castleFarmEnabled = false
castlekill = {}
wait(1)
castleFarmEnabled = true
if game.PlaceId == 128336380114944 then
task.spawn(teleportCastleFarmMain)
game:GetService("Players").LocalPlayer:SetAttribute("AutoClick", true)
else
task.spawn(searchLoop)
end
end
end
end
)
else
castlekill = {}
end
end
}
)
Tabs.castle:AddSection("Other Castle Options")
Tabs.castle:AddToggle(
"CastleBossPriority",
{
Title = "Prioritize Bosses",
Default = false,
Callback = function(state)
castleBossPriorityEnabled = state
end
}
)
Tabs.castle:AddToggle(
"AutoResetCastle",
{
Title = "Auto Reset Castle (Gems)",
Default = false,
Callback = function(state)
autoResetCastleEnabled = state
if state then
task.spawn(function()
while autoResetCastleEnabled do
if game.PlaceId == 87039211657390 then
local argsList = {
{
[1] = {
[1] = {
["Type"] = "Gems",
["Action"] = "BuyTicket",
["Event"] = "CastleAction"
},
[2] = orosbucocugu
}
}
}
for _, args in ipairs(argsList) do
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
end
end
task.wait(0.5)
end
end)
end
end
}
)
Tabs.castle:AddSection("Farm Settings")
Tabs.castle:AddSlider(
"CastleDelay",
{
Title = "Castle Farm Delay",
Description = "",
Default = 0.7,
Min = 0.1,
Max = 2,
Rounding = 1,
Callback = function(Value)
CastleDelay = Value
end
}
)
Tabs.castle:AddSlider(
"CastleTweenSpeed",
{
Title = "Tween Speed",
Description = "",
Default = castleTweenSpeed,
Min = 0.1,
Max = 3.0,
Rounding = 1,
Callback = function(Value)
castleTweenSpeed = Value
end
}
)
Tabs.castle:AddInput(
"ExitFloor",
{
Title = "Exit at Floor",
Description = "Enter floor number (max 100)",
Default = tostring(targetFloor),
Placeholder = "Enter floor (1-100)",
Numeric = true,
Finished = true,
Callback = function(value)
local num = tonumber(value)
if num then
targetFloor = math.min(math.max(1, num), 100)
end
end
}
)
Tabs.castle:AddSection("Leave Dungeon on Castle Time")
Tabs.castle:AddDropdown("CastleDungeonExitMode", {
Title = "Dungeon Exit Mode",
Values = {"Wait for Dungeon to End", "Leave Before Dungeon Ends"},
Multi = false,
Default = "Wait for Dungeon to End",
Callback = function(val)
castleDungeonExitMode = val
end
})
Tabs.castle:AddToggle("AutoExitDungeonForCastle", {
Title = "Leave Dungeon When Castle Time",
Default = false,
Callback = function(state)
autoExitDungeonForCastle = state
if state then
task.spawn(function()
while autoExitDungeonForCastle do
local isCastleNow = isCastleTimeGlobal()
if isCastleNow and isInDungeon() and game.PlaceId ~= 87039211657390 then
if castleDungeonExitMode == "Leave Before Dungeon Ends" then
game:GetService("TeleportService"):Teleport(87039211657390, game.Players.LocalPlayer)
break
elseif castleDungeonExitMode == "Wait for Dungeon to End" then
local dungeonInfo = game:GetService("Players").LocalPlayer.PlayerGui.Hud.UpContanier.DungeonInfo.TextLabel
while autoExitDungeonForCastle and isInDungeon() and game.PlaceId ~= 87039211657390 do
if dungeonInfo and dungeonInfo.Text:find("Dungeon Ends in") then
game:GetService("TeleportService"):Teleport(87039211657390, game.Players.LocalPlayer)
break
end
task.wait(0.5)
end
end
end
task.wait(2)
end
end)
end
end
})
Tabs.castle:AddSection("Return Position Management")
Tabs.castle:AddToggle("CastleReturnAfterFarm", {
Title = "Return to Saved CFrame After Castle",
Default = false,
Callback = function(state)
castleReturnEnabled = state
if state and not isfile("castle_return_cframe.txt") then
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
saveCastleReturnCFrame(player.Character.HumanoidRootPart.CFrame)
Fluent:Notify({
Title = "Castle Return",
Content = "Current position saved for castle return.",
Duration = 3
})
end
end
end
})
Tabs.castle:AddButton({
Title = "Save Current Position for Castle Return",
Description = "Saves your current position to return after castle.",
Callback = function()
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
saveCastleReturnCFrame(player.Character.HumanoidRootPart.CFrame)
Fluent:Notify({
Title = "Castle Return",
Content = "Current position saved for castle return.",
Duration = 3
})
end
end
})
task.spawn(function()
task.wait(2)
if castleReturnEnabled and game.PlaceId == 87039211657390 then
local cf = loadCastleReturnCFrame()
if cf then
task.wait(1)
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
player.Character.HumanoidRootPart.CFrame = cf
Fluent:Notify({
Title = "Castle Return",
Content = "Teleported to saved position after castle.",
Duration = 3
})
end
end
end
end)
end)
task.spawn(function()
task.wait(0.2) -- Wait a bit longer for this heavier tab
Tabs.tp:AddSection("World Teleports")
local useDirectTeleport = false
local function SetSpawnAndReset(worldName)
if useDirectTeleport then
local spawnFolder = workspace:FindFirstChild("__Extra") and workspace.__Extra:FindFirstChild("__Spawns")
if spawnFolder then
local spawnPart = spawnFolder:FindFirstChild(worldName)
if spawnPart and spawnPart:IsA("SpawnLocation") then
local hrp = game.Players.LocalPlayer.Character and game.Players.LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if hrp then
anticheat()
hrp.CFrame = spawnPart.CFrame * CFrame.new(0, 3, 0)
return
end
end
end
Fluent:Notify({
Title = "Teleport Failed",
Content = "Could not find spawn location for " .. worldName,
Duration = 3
})
else
remote:FireServer({
{
["Event"] = "ChangeSpawn",
["Spawn"] = worldName
},
orosbucocugu
})
task.wait(0.5)
if game.Players.LocalPlayer.Character then
game.Players.LocalPlayer.Character:BreakJoints()
end
end
end
Tabs.tp:AddToggle("DirectTeleport", {
Title = "Direct Teleport (No Spawn Change)",
Default = false,
Callback = function(state)
useDirectTeleport = state
end
})
Tabs.tp:AddButton({
Title = "Leveling City",
Description = "Teleport to Leveling City",
Callback = function()
SetSpawnAndReset(villageSpawns["Leveling City"])
end
})
Tabs.tp:AddButton({
Title = "Grass Village",
Description = "Teleport to Grass Village",
Callback = function()
SetSpawnAndReset(villageSpawns["Grass Village"])
end
})
Tabs.tp:AddButton({
Title = "Brum Island",
Description = "Teleport to Brum Island",
Callback = function()
SetSpawnAndReset(villageSpawns["Brum Island"])
end
})
Tabs.tp:AddButton({
Title = "Faceheal Town",
Description = "Teleport to Faceheal Town",
Callback = function()
SetSpawnAndReset(villageSpawns["Faceheal Town"])
end
})
Tabs.tp:AddButton({
Title = "Lucky Kingdom",
Description = "Teleport to Lucky Kingdom",
Callback = function()
SetSpawnAndReset(villageSpawns["Lucky Kingdom"])
end
})
Tabs.tp:AddButton({
Title = "Nipon City",
Description = "Teleport to Nipon City",
Callback = function()
SetSpawnAndReset(villageSpawns["Nipon City"])
end
})
Tabs.tp:AddButton({
Title = "Mori Town",
Description = "Teleport to Mori Town",
Callback = function()
SetSpawnAndReset(villageSpawns["Mori Town"])
end
})
Tabs.tp:AddButton({
Title = "Dragon Ball",
Description = "Teleport to Dragon Ball",
Callback = function()
SetSpawnAndReset(villageSpawns["Dragon Ball"])
end
})
Tabs.tp:AddButton({
Title = "One Punch Man",
Description = "Teleport to One Punch",
Callback = function()
SetSpawnAndReset(villageSpawns["One Punch"])
end
})
Tabs.tp:AddButton({
Title = "Kindama City",
Description = "Teleport to Kindama City",
Callback = function()
SetSpawnAndReset(villageSpawns["Kindama City"])
end
})
Tabs.tp:AddButton({
Title = "Hunters City",
Description = "Teleport to Hunters City",
Callback = function()
SetSpawnAndReset(villageSpawns["Hunters City"])
end
})
player.CharacterAdded:Connect(
function(newCharacter)
character = newCharacter
hrp = newCharacter:WaitForChild("HumanoidRootPart") -- Get the new HRP after respawn
end
)
local function teleportWithTween(targetCFrame)
if hrp then
local tweenInfo =
TweenInfo.new(
2,
Enum.EasingStyle.Sine,
Enum.EasingDirection.Out,
0,
false,
0
)
local tweenGoal = {CFrame = targetCFrame}
local tween = TweenService:Create(hrp, tweenInfo, tweenGoal)
tween:Play()
end
end
Tabs.pets:AddSection("Sell Pet")
local rankMapping = {
[1] = "E",
[2] = "D",
[3] = "C",
[4] = "B",
[5] = "A",
[6] = "S",
[7] = "SS",
[8] = "G",
[9] = "N"
}
local rankValues = {}
for i = 1, 9 do
table.insert(rankValues, rankMapping[i] .. " (Rank " .. i .. ")")
end
local selectedRanks = {}
local autoSellEnabled = false
Tabs.pets:AddDropdown("RankDropdown", {
Title = "Choose Ranks to Sell",
Values = rankValues,
Multi = true,
Default = {},
Callback = function(selections)
selectedRanks = {}
if type(selections) == "table" then
for selection, isSelected in pairs(selections) do
if isSelected == true then
local rankStr = selection:match("Rank (%d+)")
if rankStr then
local rank = tonumber(rankStr)
if rank then
table.insert(selectedRanks, rank)
end
end
end
end
end
end
})
local function sellPetsByRank()
local petFolder = player.leaderstats.Inventory:WaitForChild("Pets")
local petsToSell = {}
for _, pet in ipairs(petFolder:GetChildren()) do
local rankVal = pet:GetAttribute("Rank")
local isLocked = pet:GetAttribute("Locked") or false
if typeof(rankVal) == "number" and table.find(selectedRanks, rankVal) and not isLocked then
table.insert(petsToSell, pet.Name)
if #petsToSell >= 20 then
local args = {
[1] = {
[1] = {
["Event"] = "SellPet",
["Pets"] = petsToSell
},
[2] = degisiklik2
}
}
remote:FireServer(unpack(args))
task.wait(0.3)
petsToSell = {}
end
end
end
if #petsToSell > 0 then
local args = {
[1] = {
[1] = {
["Event"] = "SellPet",
["Pets"] = petsToSell
},
[2] = degisiklik2
}
}
remote:FireServer(unpack(args))
end
end
Tabs.pets:AddButton({
Title = "Sell Now",
Description = "Sell all pets with selected ranks immediately",
Callback = function()
if #selectedRanks > 0 then
sellPetsByRank()
else
Fluent:Notify({
Title = "No rank selected",
Content = "Please select at least one rank to sell pets",
Duration = 3
})
end
end
})
Tabs.pets:AddToggle("AutoSellToggle", {
Title = "Auto Sell Pets",
Default = autoSellEnabled,
Callback = function(state)
autoSellEnabled = state
if state then
if #selectedRanks > 0 then
Fluent:Notify({
Title = "Auto Sell enabled",
Content = "Will automatically sell pets with ranks: " .. table.concat(selectedRanks, ", "),
Duration = 3
})
task.spawn(function()
while autoSellEnabled do
sellPetsByRank()
task.wait(5)
end
end)
else
Fluent:Notify({
Title = "No rank selected",
Content = "Please select at least one rank to sell pets",
Duration = 3
})
end
end
end
})
Tabs.pets:AddSection("Choose Pets")
Tabs.pets:AddParagraph({
Title = "Pet Protection Info",
Content = "Locked pets will not be sold.\nLock your pets to prevent them from being deleted!"
})
local selectedShop = "WeaponShop1"
local selectedWeapon = ""
local autoBuyEnabled = false
local selectedWeaponType = ""
local autoSelectedEnabled = false
local weaponBuyAmount = 1 -- Default amount value
local weaponsByShop = {
["WeaponShop1"] = {"SpikeMace", "GemStaff", "DualKando", "CrystalScepter", "DualBoneMace", "DualSteelNaginata"},
["WeaponShop2"] = {"MonsterSlayer", "DualBasicStaffs", "PirateSaber", "MixedBattleAxe", "BronzeGreatAxe", "DualAncientMace"},
["WeaponShop3"] = {"DualPirateSaber", "DualSteelSabers", "SteelSaber", "SteelButterfly", "DualSteelButterfly", "SteelKando"},
["WeaponShop4"] = {"SteelNaginata", "GreatKopesh", "BoneMace", "AncientMace", "CrimsonStaff", "GreatSaber"},
["WeaponShop5"] = {"DualGreatSaber", "BasicStaff", "StellKopesh", "GreatTrident", "DualCrystalScepter", "DualTrident"},
["WeaponShop6"] = {"OzSword2", "CrystalSword2", "ObsidianDualAxe2", "SilverSpear2", "DragonAxe2", "DualDivineAxe2"},
["WeaponShop7"] = {"BloodStaff2", "DualCrimsonStaff2", "DualGemStaffs2", "GreatScythe2", "TwinObsidianDualStaff2", "SlayerScythe2"},
["WeaponShop8"] = {"BeholderStaff2", "TwinMixedAxe2", "TwinTrollSlayer2", "RuneAxe2", "DualSilverSpear2", "DualDragonAxe2"},
["WeaponShop9"] = {"SteelSword2", "SteelSpear2", "StarSpear2", "BoneStaff2", "SunGreatAxe2", "EnergyGreatSword2"},
["WeaponShop10"] = {"SteelAxe2", "SteelGreatAxe2", "TwinBeholderStaffs2", "ObisidianGlaive2", "DualSunGreatAxe2", "DivineHammer2"},
["WeaponShop11"] = {"CrossSword2", "DualDivineBattleAxe2", "EyeSword2", "FaithSword2", "DualKrakenSword2", "ArchamageStaff2"}
}
local weaponPrices = {
-- Shop 1
SpikeMace = "80",
GemStaff = "180",
DualKando = "400",
CrystalScepter = "900",
DualBoneMace = "2K",
DualSteelNaginata = "4.5K",
-- Shop 2
MonsterSlayer = "10K",
DualBasicStaffs = "22K",
PirateSaber = "49K",
MixedBattleAxe = "110K",
BronzeGreatAxe = "242K",
DualAncientMace = "535K",
-- Shop 3
DualPirateSaber = "1.2M",
DualSteelSabers = "2.5M",
SteelSaber = "5.65M",
SteelButterfly = "12.5M",
DualSteelButterfly = "27.5M",
SteelKando = "60M",
-- Shop 4
SteelNaginata = "132M",
GreatKopesh = "290M",
BoneMace = "630M",
AncientMace = "1.4B",
CrimsonStaff = "3B",
GreatSaber = "6.7B",
-- Shop 5
DualGreatSaber = "14.07B",
BasicStaff = "28.14B",
StellKopesh = "56.28B",
GreatTrident = "112.56B",
DualCrystalScepter = "223.11B",
DualTrident = "446.22B",
-- Shop 6
OzSword2 = "840B",
CrystalSword2 = "1.68T",
ObsidianDualAxe2 = "3.36T",
SilverSpear2 = "6.72T",
DragonAxe2 = "13.32T",
DualDivineAxe2 = "26.64T",
-- Shop 7
BloodStaff2 = "42T",
DualCrimsonStaff2 = "84T",
DualGemStaffs2 = "168T",
GreatScythe2 = "336T",
TwinObsidianDualStaff2 = "666T",
SlayerScythe2 = "1.33Qa",
-- Shop 8
BeholderStaff2 = "2.73Qa",
TwinMixedAxe2 = "5.46Qa",
TwinTrollSlayer2 = "10.92Qa",
RuneAxe2 = "21.84Qa",
DualSilverSpear2 = "43.29Qa",
DualDragonAxe2 = "86.58Qa",
-- Shop 9
SteelSword2 = "169.13Qa",
SteelSpear2 = "338.26Qa",
StarSpear2 = "559.52Qa",
BoneStaff2 = "1.12Qi",
SunGreatAxe2 = "2.41Qi",
EnergyGreatSword2 = "5.20Qi",
-- Shop 10
SteelAxe2 = "10.66Qi",
SteelGreatAxe2 = "21.58Qi",
TwinBeholderStaffs2 = "44.98Qi",
ObisidianGlaive2 = "91.78Qi",
DualSunGreatAxe2 = "195.78Qi",
DualDivineHammer2 = "422.50Qi",
-- Shop 11
CrossSword2 = "887.25Qi",
DualDivineBattleAxe2 = "1.90Sx",
EyeSword2 = "3.80Sx",
FaithSword2 = "7.60Sx",
DualKrakenSword2 = "15.21Sx",
ArchamageStaff2 = "30.42Sx"
}
local function getDisplayValues(weapons)
local displayValues = {}
for _, weapon in ipairs(weapons) do
local price = weaponPrices[weapon] or ""
table.insert(displayValues, weapon .. " - " .. price)
end
return displayValues
end
local shopDisplayNames = {
["WeaponShop1"] = "Leveling City",
["WeaponShop2"] = "Grass Village",
["WeaponShop3"] = "Brum Island",
["WeaponShop4"] = "Faceheal Town",
["WeaponShop5"] = "Lucky Kingdom",
["WeaponShop6"] = "Nipon City",
["WeaponShop7"] = "Mori Town",
["WeaponShop8"] = "Dragon Ball",
["WeaponShop9"] = "One Punch",
["WeaponShop10"] = "Kindama City",
["WeaponShop11"] = "Hunters City"
}
local function getInternalShopName(displayName)
for internal, display in pairs(shopDisplayNames) do
if display == displayName then
return internal
end
end
return displayName
end
Tabs.misc:AddSection("Buy Weapon")
Tabs.misc:AddDropdown("ShopDropdown", {
Title = "Select Shop",
Values = {"Leveling City", "Grass Village", "Brum Island", "Faceheal Town", "Lucky Kingdom", "Nipon City", "Mori Town", "Dragon Ball", "One Punch", "Kindama City", "Hunters City"},
Multi = false,
Default = shopDisplayNames[selectedShop],
Callback = function(displayName)
selectedShop = getInternalShopName(displayName)
local weaponDropdown = Fluent.Options.WeaponDropdown
if weaponDropdown then
weaponDropdown:SetValues(getDisplayValues(weaponsByShop[selectedShop] or {}))
if #weaponsByShop[selectedShop] > 0 then
selectedWeapon = weaponsByShop[selectedShop][1]
weaponDropdown:SetValue(selectedWeapon .. " - " .. (weaponPrices[selectedWeapon] or ""))
else
selectedWeapon = ""
end
end
end
})
Tabs.misc:AddDropdown("WeaponDropdown", {
Title = "Select Weapon",
Values = getDisplayValues(weaponsByShop[selectedShop] or {}),
Multi = false,
Default = selectedWeapon and (selectedWeapon .. " - " .. (weaponPrices[selectedWeapon] or "")) or "",
Callback = function(selection)
selectedWeapon = selection:match("^([^%s-]+)")
end
})
-- Add slider for amount control
Tabs.misc:AddSlider("WeaponBuyAmount", {
Title = "Purchase Amount",
Description = "Set how many weapons to purchase at once",
Default = 1,
Min = 1,
Max = 100,
Rounding = 0,
Callback = function(Value)
weaponBuyAmount = Value
end
})
local function buyWeapon()
if selectedShop and selectedWeapon and selectedWeapon ~= "" then
local args = {
[1] = {
[1] = {
["Action"] = "Buy",
["Shop"] = selectedShop,
["Item"] = selectedWeapon,
["Amount"] = weaponBuyAmount, -- Use the variable controlled by slider
["Event"] = "ItemShopAction"
},
[2] = orosbucocugu
}
}
remote:FireServer(unpack(args))
print("Purchased:", weaponBuyAmount, "x", selectedWeapon, "from shop:", selectedShop)
else
print("Please select a shop and weapon!")
end
end
Tabs.misc:AddToggle("AutoBuyToggle", {
Title = "Auto Buy Weapon",
Default = autoBuyEnabled,
Callback = function(state)
autoBuyEnabled = state
if state then
task.spawn(function()
while autoBuyEnabled do
buyWeapon()
task.wait(1)
end
end)
end
end
})
Tabs.misc:AddSection("Upgrade Weapon")
local function getUniqueWeaponNames()
local weapons = {}
local seenNames = {}
local playerWeapons = player.leaderstats.Inventory.Weapons:GetChildren()
for _, weapon in ipairs(playerWeapons) do
local weaponName = weapon:GetAttribute("Name")
if weaponName and not seenNames[weaponName] then
table.insert(weapons, weaponName)
seenNames[weaponName] = true
end
end
return weapons
end
local function getWeaponsByLevel(weaponType)
local weaponsByLevel = {}
for i = 1, 7 do
weaponsByLevel[i] = {}
end
local playerWeapons = player.leaderstats.Inventory.Weapons:GetChildren()
for _, weapon in ipairs(playerWeapons) do
local weaponName = weapon:GetAttribute("Name")
local weaponLevel = weapon:GetAttribute("Level") or 1
if (not weaponType or weaponType == "" or weaponName == weaponType) and weaponLevel >= 1 and weaponLevel <= 7 then
table.insert(weaponsByLevel[weaponLevel], weapon.Name)
end
end
return weaponsByLevel
end
local function upgradeWeaponsByLevel(weaponType)
local weaponsByLevel = getWeaponsByLevel(weaponType)
local anyUpgraded = false
for level = 1, 6 do
local weapons = weaponsByLevel[level]
while #weapons >= 3 do
local upgradeWeapons = {
weapons[1],
weapons[2],
weapons[3]
}
table.remove(weapons, 1)
table.remove(weapons, 1)
table.remove(weapons, 1)
local weaponName = player.leaderstats.Inventory.Weapons:FindFirstChild(upgradeWeapons[1]):GetAttribute("Name")
local args = {
[1] = {
[1] = {
["Type"] = weaponName,
["BuyType"] = "Gems",
["Weapons"] = upgradeWeapons,
["Event"] = "UpgradeWeapon",
["Level"] = level + 1
},
[2] = orosbucocugu
}
}
remote:FireServer(unpack(args))
print("Upgrading", #upgradeWeapons, "weapons", weaponName, "from level", level, "to level", level + 1)
Fluent:Notify({
Title = "Upgrading",
Content = "Upgrading " .. weaponName .. " from level " .. level .. " to level " .. (level + 1),
Duration = 3
})
anyUpgraded = true
task.wait(1)
end
end
if not anyUpgraded then
Fluent:Notify({
Title = "Notice",
Content = "No weapons available to upgrade",
Duration = 3
})
end
return anyUpgraded
end
local weaponTypes = getUniqueWeaponNames()
local selectedWeaponType = weaponTypes[1] or ""
local autoSelectedEnabled = false
Tabs.misc:AddDropdown("WeaponTypeDropdown", {
Title = "Select Weapon Type",
Values = weaponTypes,
Multi = false,
Default = selectedWeaponType,
Callback = function(weaponType)
selectedWeaponType = weaponType
end
})
Tabs.misc:AddButton({
Title = "Refresh Weapon List",
Description = "Refresh the list of available weapons",
Callback = function()
weaponTypes = getUniqueWeaponNames()
local weaponTypeDropdown = Fluent.Options.WeaponTypeDropdown
if weaponTypeDropdown then
weaponTypeDropdown:SetValues(weaponTypes)
if #weaponTypes > 0 and not table.find(weaponTypes, selectedWeaponType) then
selectedWeaponType = weaponTypes[1]
weaponTypeDropdown:SetValue(selectedWeaponType)
end
end
Fluent:Notify({
Title = "List Refreshed",
Content = "Updated available weapons list",
Duration = 3
})
end
})
Tabs.misc:AddToggle("AutoSelectToggle", {
Title = "Upgrade Selected Weapon",
Default = autoSelectedEnabled,
Callback = function(state)
autoSelectedEnabled = state
if state then
if not selectedWeaponType or selectedWeaponType == "" then
Fluent:Notify({
Title = "Error",
Content = "Please select weapon type before upgrading",
Duration = 3
})
return
end
task.spawn(function()
while autoSelectedEnabled do
local upgraded = upgradeWeaponsByLevel(selectedWeaponType)
task.wait(upgraded and 1 or 5)
end
end)
end
end
})
-- WEAPON SELL SECTION
Tabs.misc:AddSection("Sell Weapon")
-- Damage thresholds for dropdown (up to 1Qa)
local damageThresholds = {
["1K"] = 1000,
["5K"] = 5000,
["10K"] = 10000,
["25K"] = 25000,
["50K"] = 50000,
["75K"] = 75000,
["100K"] = 100000,
["1M"] = 1000000,
["5M"] = 5000000,
["10M"] = 10000000,
["25M"] = 25000000,
["50M"] = 50000000,
["75M"] = 75000000,
["100M"] = 100000000,
["1B"] = 1000000000,
["5B"] = 5000000000,
["10B"] = 10000000000,
["25B"] = 25000000000,
["50B"] = 50000000000,
["75B"] = 75000000000,
["100B"] = 100000000000,
["1T"] = 1000000000000,
["5T"] = 5000000000000,
["10T"] = 10000000000000,
["25T"] = 25000000000000,
["50T"] = 50000000000000,
["75T"] = 75000000000000,
["100T"] = 100000000000000,
["1Qa"] = 1000000000000000,
["5Qa"] = 5000000000000000,
["10Qa"] = 10000000000000000,
["25Qa"] = 25000000000000000,
["50Qa"] = 50000000000000000,
["75Qa"] = 75000000000000000,
["100Qa"] = 100000000000000000,
}
local damageThresholdNames = {
"1K", "5K", "10K", "25K", "50K", "75K", "100K",
"1M", "5M", "10M", "25M", "50M", "75M", "100M",
"1B", "5B", "10B", "25B", "50B", "75B", "100B",
"1T", "5T", "10T", "25T", "50T", "75T", "100T",
"1Qa", "5Qa", "10Qa", "25Qa", "50Qa", "75Qa", "100Qa"
}
local selectedDamageThreshold = damageThresholds["1K"]
local autoSellWeaponEnabled = false
Tabs.misc:AddDropdown("WeaponDamageThreshold", {
Title = "Choose Damage Threshold",
Values = damageThresholdNames,
Multi = false,
Default = "1K",
Callback = function(selection)
selectedDamageThreshold = damageThresholds[selection] or 1000
end
})
local function parseDamageText(damageText)
local num = tostring(damageText):match("Damage:%s*([%d%.]+%s*[KMBTQaq]?)")
if not num then return 0 end
num = num:gsub("%s+", "")
local mult = 1
if num:find("Qa") or num:find("qa") then
mult = 1000000000000000
num = num:gsub("[Qq][Aa]", "")
elseif num:find("T") then
mult = 1000000000000
num = num:gsub("T", "")
elseif num:find("B") then
mult = 1000000000
num = num:gsub("B", "")
elseif num:find("M") then
mult = 1000000
num = num:gsub("M", "")
elseif num:find("K") then
mult = 1000
num = num:gsub("K", "")
end
return tonumber(num) and tonumber(num) * mult or 0
end
-- Helper: Get weapon GUI damage by weapon name
local function getWeaponDamageByName(weaponName)
local guiPath = game:GetService("Players").LocalPlayer.PlayerGui
local lists = guiPath:FindFirstChild("__Disable") and guiPath.__Disable:FindFirstChild("Menus")
if not lists then return 0 end
lists = lists:FindFirstChild("Inventory") and lists.Inventory:FindFirstChild("Main")
if not lists then return 0 end
lists = lists:FindFirstChild("Lists") and lists.Lists:FindFirstChild("Weapons")
if not lists then return 0 end
local weaponGui = lists:FindFirstChild(weaponName)
if not weaponGui then return 0 end
local main = weaponGui:FindFirstChild("Main")
if not main then return 0 end
local dmgText = main:FindFirstChild("Damage")
if not dmgText or not dmgText:IsA("TextLabel") then return 0 end
return parseDamageText(dmgText.Text)
end
-- Sell weapons by damage threshold
local function sellWeaponsByDamage()
local weaponFolder = player.leaderstats.Inventory:WaitForChild("Weapons")
local weaponsToSell = {}
for _, weapon in ipairs(weaponFolder:GetChildren()) do
local weaponName = weapon.Name
local damage = getWeaponDamageByName(weaponName)
if damage > 0 and damage < selectedDamageThreshold then
table.insert(weaponsToSell, weaponName)
if #weaponsToSell >= 20 then
local args = {
[1] = {
[1] = {
["Weapons"] = weaponsToSell,
["Action"] = "Sell",
["Event"] = "WeaponAction"
},
[2] = orosbucocugu
}
}
remote:FireServer(unpack(args))
print("Sold", #weaponsToSell, "weapons below threshold")
task.wait(0.3)
weaponsToSell = {}
end
end
end
if #weaponsToSell > 0 then
local args = {
[1] = {
[1] = {
["Weapons"] = weaponsToSell,
["Action"] = "Sell",
["Event"] = "WeaponAction"
},
[2] = orosbucocugu
}
}
remote:FireServer(unpack(args))
print("Sold", #weaponsToSell, "remaining weapons below threshold")
end
end
Tabs.misc:AddButton({
Title = "Sell Weapons Now",
Description = "Sell all weapons below selected damage threshold",
Callback = function()
sellWeaponsByDamage()
end
})
Tabs.misc:AddToggle("AutoSellWeaponToggle", {
Title = "Auto Sell Weapons (Close Inventory)",
Default = autoSellWeaponEnabled,
Callback = function(state)
autoSellWeaponEnabled = state
if state then
Fluent:Notify({
Title = "Auto Sell Weapons enabled",
Content = "Will automatically sell weapons below threshold: " .. tostring(selectedDamageThreshold),
Duration = 3
})
task.spawn(function()
while autoSellWeaponEnabled do
sellWeaponsByDamage()
task.wait(5)
end
end)
end
end
})
Tabs.misc:AddSection("Enchant Weapon")
local enchantTypes = {
"FireAspect",
"VorpalAspect",
"LootAspect",
"Sharpness",
"Vorpal",
"Loot"
}
-- Function to get weapon display information from inventory GUI
local function getWeaponDisplayInfo()
local playerGui = game:GetService("Players").LocalPlayer.PlayerGui
local weaponFrames = {}
local inventoryPath
-- Use pcall to catch errors when trying to access inventory paths
local success = pcall(function()
-- Check both possible inventory GUI locations with safer traversal
if playerGui:FindFirstChild("__Disable") then
local menus = playerGui.__Disable:FindFirstChild("Menus")
if menus and menus:FindFirstChild("Inventory") then
local main = menus.Inventory:FindFirstChild("Main")
if main and main:FindFirstChild("Lists") then
local weapons = main.Lists:FindFirstChild("Weapons")
if weapons then
inventoryPath = weapons
end
end
end
elseif playerGui:FindFirstChild("Menus") then
local inventory = playerGui.Menus:FindFirstChild("Inventory")
if inventory and inventory:FindFirstChild("Main") then
local lists = inventory.Main:FindFirstChild("Lists")
if lists and lists:FindFirstChild("Weapons") then
inventoryPath = lists.Weapons
end
end
end
end)
if not success or not inventoryPath then
print("Warning: Could not find inventory path. The inventory might be open or GUI structure has changed.")
return {}
end
-- Collect all weapon information
for _, weaponFrame in pairs(inventoryPath:GetChildren()) do
-- Check for both ImageButton and Frame as classnames
if weaponFrame:IsA("ImageButton") or weaponFrame:IsA("Frame") then
local valueText
local rankText
local damageText
-- Try to find value text
if weaponFrame:FindFirstChild("Main") and
weaponFrame.Main:FindFirstChild("Value") then
valueText = weaponFrame.Main.Value.Text
end
-- Try to find rank text
if weaponFrame:FindFirstChild("Main") and
weaponFrame.Main:FindFirstChild("Rank") then
rankText = weaponFrame.Main.Rank.Text
end
-- Try to find damage text
if weaponFrame:FindFirstChild("Main") and
weaponFrame.Main:FindFirstChild("Damage") then
damageText = weaponFrame.Main.Damage.Text:gsub("Damage: ", "")
end
if valueText then
local displayName = valueText
local rank = rankText or "?"
local damage = damageText or "?"
local fullDisplay = string.format("%s | Rank: %s | DMG: %s", displayName, rank, damage)
-- Store frame name (weapon ID) with display info
table.insert(weaponFrames, {
displayName = fullDisplay,
frameName = weaponFrame.Name,
weaponID = weaponFrame.Name -- This is the actual weapon ID we need
})
end
end
end
return weaponFrames
end
-- Create a mapping between display names and weapon IDs
local displayToWeaponID = {}
-- Function to get weapon ID from display name
local function getWeaponIDFromDisplay(displayName)
-- Check if we have a cached mapping
if displayToWeaponID[displayName] then
return displayToWeaponID[displayName]
end
-- Get fresh weapon info
local weapons = getWeaponDisplayInfo()
-- Look for exact match in our weapons list
for _, weapon in pairs(weapons) do
if weapon.displayName == displayName then
displayToWeaponID[displayName] = weapon.weaponID
return weapon.weaponID
end
end
-- If we reach here, we need to try alternative methods
-- Try direct approach from inventory
local inventory = game:GetService("Players").LocalPlayer.leaderstats.Inventory.Weapons
-- First, try to extract a weapon ID pattern from the display name
-- Format example: "Hybrid War Axe | Rank: D | DMG: 6.22K"
local baseName = string.match(displayName, "^(.+) |")
if baseName then
-- Look for any weapon in inventory that might match this base name
for _, weapon in pairs(inventory:GetChildren()) do
local weaponName = weapon:GetAttribute("Name")
if weaponName and string.find(weaponName, baseName) then
displayToWeaponID[displayName] = weapon.Name
return weapon.Name
end
end
end
-- As a last resort, check GUI elements directly
local playerGui = game:GetService("Players").LocalPlayer.PlayerGui
local inventoryPaths = {
playerGui.__Disable and playerGui.__Disable.Menus and playerGui.__Disable.Menus.Inventory and
playerGui.__Disable.Menus.Inventory.Main.Lists.Weapons,
playerGui.Menus and playerGui.Menus.Inventory and playerGui.Menus.Inventory.Main.Lists.Weapons
}
for _, path in pairs(inventoryPaths) do
if path then
for _, frame in pairs(path:GetChildren()) do
if frame:IsA("ImageButton") or frame:IsA("Frame") then
if frame:FindFirstChild("Main") and frame.Main:FindFirstChild("Value") then
local frameName = string.format("%s | Rank: %s | DMG: %s",
frame.Main.Value.Text,
frame.Main:FindFirstChild("Rank") and frame.Main.Rank.Text or "?",
frame.Main:FindFirstChild("Damage") and frame.Main.Damage.Text:gsub("Damage: ", "") or "?"
)
if frameName == displayName then
displayToWeaponID[displayName] = frame.Name
return frame.Name
end
end
end
end
end
end
return nil
end
-- Function to generate a list of enchant levels
local function getEnchantLevels()
local levels = {}
for i = 1, 9 do
table.insert(levels, tostring(i))
end
return levels
end
-- Track selected enchants and levels
local selectedEnchants = {}
local selectedLevels = {}
-- Function to check if a weapon has the desired enchants and levels
local function checkEnchants(weapon)
-- Safety check to ensure we have valid selections
if selectedEnchants == nil then selectedEnchants = {} end
if selectedLevels == nil then selectedLevels = {} end
if #selectedEnchants == 0 or #selectedLevels == 0 then
return false
end
local enchantFolder = weapon:FindFirstChild("Enchants")
if not enchantFolder then
return false
end
-- Debug current enchants and levels (more verbose for troubleshooting)
local debugText = "Checking Enchants:\n"
for _, enchantName in pairs(selectedEnchants) do
local currentLevel = enchantFolder:GetAttribute(enchantName)
debugText = debugText .. enchantName .. ": " .. (currentLevel or "None") .. "\n"
end
debugText = debugText .. "Selected Levels: "
for i, level in ipairs(selectedLevels) do
debugText = debugText .. level .. (i < #selectedLevels and ", " or "")
end
print(debugText) -- Print debug info to output
-- Check if any of our selected enchants has reached the desired level
for _, enchantName in pairs(selectedEnchants) do
local currentLevel = enchantFolder:GetAttribute(enchantName)
-- If this enchant exists
if currentLevel then
for _, targetLevel in pairs(selectedLevels) do
-- Convert both to numbers for proper comparison
local numCurrentLevel = tonumber(currentLevel)
local numTargetLevel = tonumber(targetLevel)
-- FIX: Only stop if the level matches exactly
if numCurrentLevel and numTargetLevel and numCurrentLevel == numTargetLevel then
-- Found a match: enchant + level meets our criteria
Fluent:Notify({
Title = "Enchant Goal Reached",
Content = enchantName .. " level " .. currentLevel .. " found (target: " .. targetLevel .. ")",
Duration = 5
})
return true
end
end
end
end
-- No selected enchant with desired level found
return false
end
-- Get weapon list - Fixed version
local function getWeaponList()
local weapons = {}
-- Try to get weapons from GUI first
local success, result = pcall(function()
return getWeaponDisplayInfo()
end)
if success then
weapons = result
else
print("Warning: Error getting weapon display info: " .. tostring(result))
end
local displayList = {}
if #weapons == 0 then
-- Try direct inventory approach since GUI method failed
local success, inventory = pcall(function()
return game:GetService("Players").LocalPlayer.leaderstats.Inventory.Weapons
end)
if not success or not inventory then
Fluent:Notify({
Title = "Error",
Content = "Cannot access inventory. Try closing inventory menu first.",
Duration = 5
})
return {}
end
-- Add weapons from inventory
for _, weapon in pairs(inventory:GetChildren()) do
local weaponName = weapon:GetAttribute("Name") or weapon.Name
displayList[weaponName] = weaponName
-- Add to our weapons reference list
table.insert(weapons, {
displayName = weaponName,
frameName = weapon.Name,
weaponID = weapon.Name
})
-- Update our mapping
displayToWeaponID[weaponName] = weapon.Name
end
-- Fallback: If still empty, just use the weapon folder names
if next(displayList) == nil then
for _, weapon in pairs(inventory:GetChildren()) do
displayList[weapon.Name] = weapon.Name
displayToWeaponID[weapon.Name] = weapon.Name
end
end
else
for _, weapon in pairs(weapons) do
displayList[weapon.displayName] = weapon.displayName
-- Update our mapping
displayToWeaponID[weapon.displayName] = weapon.weaponID
end
end
-- Convert to array for dropdown
local dropdownList = {}
for display, _ in pairs(displayList) do
table.insert(dropdownList, display)
end
return dropdownList
end
-- Initialize UI elements
local weaponDropdown = Tabs.misc:AddDropdown(
"EnchantWeapon",
{
Title = "Select Weapon",
Values = {}, -- Start with empty values and fill later
Multi = false,
Default = "",
}
)
-- Use pcall when accessing the weapon list
local success, weapons = pcall(function()
return getWeaponList()
end)
if success then
weaponDropdown:SetValues(weapons)
if #weapons == 0 then
Fluent:Notify({
Title = "Weapon List Empty",
Content = "Try closing inventory menu first, then click 'Refresh Weapon List'",
Duration = 5
})
end
else
Fluent:Notify({
Title = "Error Loading Weapons",
Content = "Please close inventory menu and try again",
Duration = 5
})
end
Tabs.misc:AddButton({
Title = "Refresh Weapon List",
Callback = function()
local success, weapons = pcall(function()
return getWeaponList()
end)
if success then
weaponDropdown:SetValues(weapons)
Fluent:Notify({
Title = "Weapon List Refreshed",
Content = "Found " .. #weapons .. " weapons",
Duration = 3
})
else
Fluent:Notify({
Title = "Error",
Content = "Try closing inventory menu first",
Duration = 3
})
end
end
})
local enchantTypeDropdown = Tabs.misc:AddDropdown(
"EnchantType",
{
Title = "Select Enchants",
Values = enchantTypes,
Multi = true,
Default = {},
}
)
local enchantLevelDropdown = Tabs.misc:AddDropdown(
"EnchantLevel",
{
Title = "Select Levels",
Values = getEnchantLevels(),
Multi = true,
Default = {},
}
)
enchantTypeDropdown:OnChanged(function(Value)
selectedEnchants = {}
if Value then -- Ensure Value is not nil
for enchant, isSelected in next, Value do
if isSelected then
table.insert(selectedEnchants, enchant)
end
end
end
end)
enchantLevelDropdown:OnChanged(function(Value)
selectedLevels = {}
if Value then -- Ensure Value is not nil
for level, isSelected in next, Value do
if isSelected then
-- Make sure we store the level as a string
table.insert(selectedLevels, level)
end
end
end
end)
-- Auto enchant functionality
local autoEnchantEnabled = false
local function autoEnchant()
while autoEnchantEnabled do
local selectedDisplay = weaponDropdown.Value
if selectedDisplay then
-- Get the actual weapon ID using our improved function
local weaponID = getWeaponIDFromDisplay(selectedDisplay)
if weaponID then
-- Use pcall to safely get inventory
local success, inventory = pcall(function()
return game:GetService("Players").LocalPlayer.leaderstats.Inventory.Weapons
end)
if not success or not inventory then
Fluent:Notify({
Title = "Error",
Content = "Cannot access inventory. Try closing inventory menu first.",
Duration = 3
})
autoEnchantEnabled = false
break
end
local weapon = inventory:FindFirstChild(weaponID)
if weapon then
-- Get enchant folder - create it if it doesn't exist
local enchantFolder = weapon:FindFirstChild("Enchants")
if not enchantFolder then
enchantFolder = Instance.new("Folder")
enchantFolder.Name = "Enchants"
enchantFolder.Parent = weapon
end
-- Debug the current state of enchants
if enchantFolder then
local debugStr = "Current Enchants for " .. weapon.Name .. ":\n"
for _, enchantName in pairs(selectedEnchants) do
local currentLevel = enchantFolder:GetAttribute(enchantName)
debugStr = debugStr .. enchantName .. ": " .. (currentLevel or "None") .. "\n"
end
print(debugStr)
end
-- Check if the weapon already has the desired enchants and levels
if checkEnchants(weapon) then
-- If the weapon has the desired enchants, stop auto enchanting
autoEnchantEnabled = false
Fluent:Notify({
Title = "Auto Enchant Success",
Content = "Desired enchant level reached! Stopping enchant.",
Duration = 5
})
break
else
-- If not, perform the enchant
local args = {
[1] = {
[1] = {
["Weapon"] = weaponID,
["Event"] = "EnchantWeapon",
["BuyType"] = "Gems"
},
[2] = orosbucocugu
}
}
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
-- Add a small delay to check enchants after firing
task.wait(0.5)
-- Re-check if we got the desired enchant - force a refresh first
inventory = game:GetService("Players").LocalPlayer.leaderstats.Inventory.Weapons
weapon = inventory:FindFirstChild(weaponID)
if weapon and checkEnchants(weapon) then
autoEnchantEnabled = false
Fluent:Notify({
Title = "Auto Enchant Success",
Content = "Desired enchant level reached!",
Duration = 5
})
break
end
end
else
Fluent:Notify({
Title = "Error",
Content = "Weapon not found in inventory! Try refreshing weapon list.",
Duration = 3
})
task.wait(1)
end
else
Fluent:Notify({
Title = "Error",
Content = "Could not get weapon ID! Try refreshing weapon list.",
Duration = 3
})
autoEnchantEnabled = false
end
else
Fluent:Notify({
Title = "Error",
Content = "No weapon selected!",
Duration = 3
})
autoEnchantEnabled = false
end
task.wait(0.2)
end
end
-- Add toggle for auto enchant
Tabs.misc:AddToggle(
"AutoEnchant",
{
Title = "Auto Enchant",
Default = false,
Callback = function(state)
autoEnchantEnabled = state
if state then
if #selectedEnchants == 0 or #selectedLevels == 0 then
Fluent:Notify({
Title = "Auto Enchant",
Content = "Please select at least one enchant and level!",
Duration = 5
})
return
end
task.spawn(autoEnchant)
end
end
}
)
local locations = {
{Name = "Location 1", CFrame = CFrame.new(-6161.25781, 140.639832, 5512.9668)},
{Name = "Location 2", CFrame = CFrame.new(-5868.44141, 132.70488, 362.519379)},
{Name = "Location 3", CFrame = CFrame.new(-5430.81006, 107.441559, -5502.25244)},
{Name = "Location 4", CFrame = CFrame.new(-702.243225, 133.344467, -3538.11646)},
{Name = "Location 5", CFrame = CFrame.new(450.001709, 117.564827, 3435.4292)},
{Name = "Location 6", CFrame = CFrame.new(3230.96826, 135.41008, 36.1600113)},
{Name = "Location 7", CFrame = CFrame.new(4325.36523, 118.995422, -4819.78857)}
}
local PlaceID = game.PlaceId
local AllIDs = {}
local foundAnything = ""
local actualHour = os.date("!*t").hour
local File =
pcall(
function()
AllIDs = game:GetService("HttpService"):JSONDecode(readfile("NotSameServers.json"))
end
)
if not File then
table.insert(AllIDs, actualHour)
writefile("NotSameServers.json", game:GetService("HttpService"):JSONEncode(AllIDs))
end
function TPReturner()
local Site
if foundAnything == "" then
Site =
game.HttpService:JSONDecode(
game:HttpGet("https://games.roblox.com/v1/games/" .. PlaceID .. "/servers/Public?sortOrder=Asc&limit=100")
)
else
Site =
game.HttpService:JSONDecode(
game:HttpGet(
"https://games.roblox.com/v1/games/" ..
PlaceID .. "/servers/Public?sortOrder=Asc&limit=100&cursor=" .. foundAnything
)
)
end
local ID = ""
if Site.nextPageCursor and Site.nextPageCursor ~= "null" and Site.nextPageCursor ~= nil then
foundAnything = Site.nextPageCursor
end
local num = 0
for _, v in pairs(Site.data) do
local Possible = true
ID = tostring(v.id)
if tonumber(v.maxPlayers) > tonumber(v.playing) then
for _, Existing in pairs(AllIDs) do
if num ~= 0 then
if ID == tostring(Existing) then
Possible = false
end
else
if tonumber(actualHour) ~= tonumber(Existing) then
local delFile =
pcall(
function()
delfile("NotSameServers.json")
AllIDs = {}
table.insert(AllIDs, actualHour)
end
)
end
end
num = num + 1
end
if Possible then
table.insert(AllIDs, ID)
wait()
pcall(
function()
writefile("NotSameServers.json", game:GetService("HttpService"):JSONEncode(AllIDs))
wait()
-- autoexec ile ilgili kodlar kaldırıldı
game:GetService("TeleportService"):TeleportToPlaceInstance(PlaceID, ID, Players.LocalPlayer)
end
)
wait(4)
break
end
end
end
end
local function getUniquePetNames()
local pets = {}
local seenNames = {} -- To track unique names
local playerPets = game:GetService("Players").LocalPlayer.leaderstats.Inventory.Pets:GetChildren()
print("Fetching pets...") -- DEBUG
for _, pet in ipairs(playerPets) do
local petName = pet:GetAttribute("Name") -- Get "Name" attribute
if petName then
print("Found Pet:", petName) -- DEBUG
if not seenNames[petName] then
table.insert(pets, petName)
seenNames[petName] = true -- Mark name as seen
end
end
end
return pets
end
-- Populate dropdown with **unique** pet names
local autoEquipEnabled = false
local function EquipBestPets()
local petsFolder = player.leaderstats.Inventory.Pets
local maxEquip = player.leaderstats.Values:GetAttribute("MaxEquipPets") or 1
local bestPets = {}
local petsList = {}
for _, pet in ipairs(petsFolder:GetChildren()) do
local rank = pet:GetAttribute("Rank")
if rank and typeof(rank) == "number" then
table.insert(petsList, {name = pet.Name, rank = rank})
end
end
table.sort(
petsList,
function(a, b)
return a.rank > b.rank
end
)
local equipCount = 0
for _, petData in ipairs(petsList) do
if equipCount < maxEquip then
table.insert(bestPets, petData.name)
equipCount = equipCount + 1
else
break
end
end
if #bestPets > 0 then
game:GetService("ReplicatedStorage"):WaitForChild("BridgeNet2"):WaitForChild("dataRemoteEvent"):FireServer(
{
{["Event"] = "EquipBest", ["Pets"] = bestPets},
degisiklik2
}
)
end
end
local Toggle = Tabs.pets:AddToggle("AutoEquip", {Title = "Auto Equip Best Pets", Default = false})
Toggle:OnChanged(
function(state)
autoEquipEnabled = state
if state then
--Fluent:Notify({Title = "Auto Equip", Content = "Enabled. Equipping every 2 minutes.", Duration = 5})
task.spawn(
function()
while autoEquipEnabled do
EquipBestPets()
wait(120)
end
end
)
else
--Fluent:Notify({Title = "Auto Equip", Content = "Disabled.", Duration = 5})
end
end
)
local targetCFrame =
CFrame.new(
3648.76318,
223.552261,
2637.36719,
0.846323907,
7.72367986e-18,
-0.532668591,
-1.10462046e-17,
1,
-3.05065368e-18,
0.532668591,
8.46580728e-18,
0.846323907
)
local function tweenToPivot()
hrp.CFrame = targetCFrame
end
local function tweenCharacter(targetCFrame)
if player and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local hrp = player.Character.HumanoidRootPart
local tweenService = game:GetService("TweenService")
local tweenInfo = TweenInfo.new(3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local tween = tweenService:Create(hrp, tweenInfo, {CFrame = targetCFrame})
tween:Play()
end
end
Tabs.tp:AddSection("Dedu Island")
Tabs.tp:AddButton(
{
Title = "Tween to Dedu Island",
Description = "Smoothly moves your character",
Callback = function()
tweenCharacter(
CFrame.new(
3859.06299,
60.1228409,
3081.9458,
-0.987112403,
6.46206388e-07,
-0.160028473,
5.63319077e-07,
1,
5.63319418e-07,
0.160028473,
4.65912507e-07,
-0.987112403
)
) -- Change this to your desired position
end
}
)
Tabs.Exchange:AddSection("Exchange Shop")
local autoExchangeEnabled = false
local selectedExchangeItem = nil
local exchangeAmount = 1
local exchangeDelay = 0.5
local exchangeItems = {
"x1 Rare => x1 Common",
"x5 Common => x1 Rare",
"x1 Legendary => x1 Rare",
"x5 Rare => x1 Legendary",
"x10 Rank Up Rune => x1 Ultimate Rank Up Rune"
}
local itemMapping = {
["x1 Rare => x1 Common"] = "EnchCommon",
["x5 Common => x1 Rare"] = "EnchRare",
["x1 Legendary => x1 Rare"] = "EnchRare2",
["x5 Rare => x1 Legendary"] = "EnchLegendary",
["x10 Rank Up Rune => x1 Ultimate Rank Up Rune"] = "DgURankUpRune"
}
Tabs.Exchange:AddDropdown("ExchangeItem", {
Title = "Select Item",
Values = exchangeItems,
Default = "",
Callback = function(Value)
selectedExchangeItem = itemMapping[Value]
end
})
Tabs.Exchange:AddSlider("ExchangeAmount", {
Title = "Amount",
Default = exchangeAmount,
Min = 1, Max = 100, Rounding = 0.1,
Callback = function(Value)
exchangeAmount = Value
end
})
Tabs.Exchange:AddSlider("ExchangeDelay", {
Title = "Delay",
Default = 1,
Min = 0.1,
Max = 10,
Rounding = 0.1,
Callback = function(Value)
exchangeDelay = Value
end
})
Tabs.Exchange:AddToggle("AutoExchange", {
Title = "Auto Exchange",
Default = false,
Callback = function(state)
autoExchangeEnabled = state
if state then
task.spawn(function()
if not selectedExchangeItem then
autoExchangeEnabled = false
return
end
while autoExchangeEnabled do
local args = {
[1] = {
[1] = {
["Shop"] = "ExchangeShop",
["Action"] = "Buy",
["Amount"] = exchangeAmount,
["Event"] = "ItemShopAction",
["Item"] = selectedExchangeItem
},
[2] = orosbucocugu
}
}
game:GetService("ReplicatedStorage")
:WaitForChild("BridgeNet2")
:WaitForChild("dataRemoteEvent")
:FireServer(unpack(args))
task.wait(exchangeDelay)
end
end)
end
end
})
local function usePotion(potionName)
if not autoPotionEnabled then return end
local args = {
[1] = {
[1] = {
["Event"] = "UseItem",
["Name"] = potionName,
["Action"] = "Use"
},
[2] = orosbucocugu
}
}
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
end
task.spawn(function()
while true do
if autoPotionEnabled and #selectedPotions > 0 then
for _, potion in ipairs(selectedPotions) do
usePotion(potion)
end
end
task.wait(1)
end
end)
Tabs.Potion:AddSection("Potion System")
Tabs.Potion:AddToggle(
"AutoPotion",
{
Title = "Auto Use Potion",
Default = false,
Callback = function(state)
autoPotionEnabled = state
end
}
)
Tabs.Potion:AddDropdown(
"PotionSelection",
{
Title = "Select Potions",
Values = POTION_TYPES,
Multi = true,
Default = {},
Callback = function(Value)
selectedPotions = {}
for potion, isSelected in pairs(Value) do
if isSelected then
table.insert(selectedPotions, potion)
end
end
end
}
)
Tabs.Level:AddSection("Stat Upgrade")
local statNames = {
"ShadowDamage",
"ShadowSpeed",
"WeaponDamage",
"PlayerSpeed",
"ShadowRange"
}
local pointsList = {}
for i = 1, 10 do table.insert(pointsList, tostring(i)) end
local selectedStats = {}
local selectedPoints = 1
local autoStatUpgrade = false
Tabs.Level:AddDropdown("StatMultiDropdown", {
Title = "Select Stats",
Values = statNames,
Multi = true,
Default = {},
Callback = function(val)
selectedStats = {}
for stat, enabled in pairs(val) do
if enabled then table.insert(selectedStats, stat) end
end
end
})
Tabs.Level:AddDropdown("PointsDropdown", {
Title = "Points",
Values = pointsList,
Multi = false,
Default = "1",
Callback = function(val)
selectedPoints = tonumber(val)
end
})
Tabs.Level:AddToggle("AutoStatUpgradeToggle", {
Title = "Auto Upgrade Selected Stats",
Default = false,
Callback = function(state)
autoStatUpgrade = state
if state then
task.spawn(function()
while autoStatUpgrade do
for _, stat in ipairs(selectedStats) do
local args = {
[1] = {
[1] = {
["Stats"] = stat,
["Event"] = "StatsUp",
["Points"] = selectedPoints
},
[2] = orosbucocugu
}
}
game:GetService("ReplicatedStorage").BridgeNet2.dataRemoteEvent:FireServer(unpack(args))
task.wait(0.2)
end
task.wait(1)
end
end)
end
end
})
Tabs.Webhook:AddInput("WebhookURLInput", {
Title = "Webhook URL",
Description = "Enter the webhook URL to send dungeon data",
Default = "",
Placeholder = "https://discord.com/api/webhooks/your-webhook-id",
Numeric = false,
Finished = true,
Callback = function(value)
_G.webhookUrl = value
end
})
Tabs.Webhook:AddToggle("EnableWebhook", {
Title = "Enable Dungeon Join Webhook",
Description = "Toggle sending dungeon info to webhook",
Default = false,
Callback = function(state)
_G.webhookEnabled = state
end
})
getgenv().Image = "rbxassetid://14867516798"
getgenv().ToggleUI = "LeftControl"
task.spawn(
function()
if not getgenv().LoadedMobileUI == true then
getgenv().LoadedMobileUI = true
local OpenUI = Instance.new("ScreenGui")
local ImageButton = Instance.new("ImageButton")
local UICorner = Instance.new("UICorner")
OpenUI.Name = "OpenUI"
OpenUI.Parent = game:GetService("CoreGui")
OpenUI.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ImageButton.Parent = OpenUI
ImageButton.BackgroundColor3 = Color3.fromRGB(105, 105, 105)
ImageButton.BackgroundTransparency = 0.8
ImageButton.Position = UDim2.new(0.9, 0, 0.1, 0)
ImageButton.Size = UDim2.new(0, 50, 0, 50)
ImageButton.Image = getgenv().Image
ImageButton.Draggable = true
ImageButton.Transparency = 1
UICorner.CornerRadius = UDim.new(0, 200)
UICorner.Parent = ImageButton
ImageButton.MouseButton1Click:Connect(
function()
game:GetService("VirtualInputManager"):SendKeyEvent(true, getgenv().ToggleUI, false, game)
end
)
end
end
)
game:GetService("Players").LocalPlayer.Idled:connect(function()
game:GetService("VirtualUser"):CaptureController()
game:GetService("VirtualUser"):ClickButton2(Vector2.new())
wait(1)
end)
game:GetService("Players").LocalPlayer.Idled:connect(function()
VirtualUser:Button2Down(Vector2.new(0, 0), workspace.CurrentCamera.CFrame)
wait(1)
VirtualUser:Button2Up(Vector2.new(0, 0), workspace.CurrentCamera.CFrame)
end)
Tabs.Settings:AddSection("Settings")
Tabs.Settings:AddButton({
Title = "Rejoin",
Description = "Rejoin the same game server",
Callback = function()
game:GetService("TeleportService"):Teleport(game.PlaceId, game.Players.LocalPlayer)
end
})
Tabs.Settings:AddButton({
Title = "Server Hop",
Description = "Hop to a different server",
Callback = function()
TPReturner()
end
})
local autoMinimizeUI = false
Tabs.Settings:AddToggle("AutoMinimizeUI", {
Title = "Auto Minimize UI on Start",
Description = "Automatically minimizes the UI when the script starts.",
Default = false,
Callback = function(val)
autoMinimizeUI = val
end
})
Tabs.Settings:AddButton({
Title = "Reset All Configs",
Description = "Deletes all saved configurations",
Callback = function()
if isfolder(perfectusfolder) then
if isfolder(perfectusfolder .. "/AriseCrossover") then
delfolder(perfectusfolder .. "/AriseCrossover")
end
if #listfiles(perfectusfolder) == 0 then
delfolder(perfectusfolder)
end
Fluent:Notify({
Title = "Config Reset",
Content = "All configurations have been deleted (restart fluent to see changes)",
Duration = 3
})
else
Fluent:Notify({
Title = "Config Reset",
Content = "No configurations found to delete",
Duration = 3
})
end
end
})
Tabs.Settings:AddSection("Script Settings")
_G.AriseSettings = _G.AriseSettings or {
Toggles = {
AutoReinject = false
}
}
local queueteleport = (syn and syn.queue_on_teleport) or
queue_on_teleport or
(fluxus and fluxus.queue_on_teleport) or
(shadow_env and shadow_env.queue_on_teleport) or
(krnl and krnl.queue_on_teleport) or
(sirhurt and sirhurt.queue_on_teleport) or
(oxygen and oxygen.queue_on_teleport) or
(sentinel and sentinel.queue_on_teleport) or
(hookfunction and hookfunction.queue_on_teleport) or
(getgenv().queue_on_teleport)
if not queueteleport then
warn("Auto-execute için desteklenen bir queue_on_teleport fonksiyonu bulunamadı!")
queueteleport = function(x)
warn("queue_on_teleport desteklenmiyor - auto-execute çalışmayacak")
end
end
local TeleportCheck = false
Tabs.Settings:AddToggle("AutoReinjectToggle", {
Title = "Auto Execute on Teleport",
Description = "",
Default = _G.AriseSettings.Toggles.AutoReinject or false,
Callback = function(Value)
_G.AriseSettings.Toggles.AutoReinject = Value
if Value then
print("Auto Execute enabled. The script will automatically run after teleport.")
else
print("Auto Execute disabled.")
end
end
})
player.OnTeleport:Connect(function(State)
if _G.AriseSettings.Toggles.AutoReinject and not TeleportCheck and queueteleport then
TeleportCheck = true
queueteleport([[
spawn(function()
pcall(function()
print("Script loading...")
local success, error_message = pcall(function()
loadstring(game:HttpGet('https://raw.githubusercontent.com/perfectusmim1/Hub/refs/heads/main/Key'))()
end)
if not success then
warn("An error occurred while loading the script: " .. tostring(error_message))
end
end)
end)
]])
end
end)
task.spawn(function()
task.wait(1)
if (Fluent.Options.AutoMinimizeUI and Fluent.Options.AutoMinimizeUI.Value) or autoMinimizeUI then
pcall(function()
game:GetService("VirtualInputManager"):SendKeyEvent(true, Enum.KeyCode.LeftControl, false, game)
task.wait(0.1)
game:GetService("VirtualInputManager"):SendKeyEvent(false, Enum.KeyCode.LeftControl, false, game)
Fluent:Notify({
Title = "Hide UI",
Content = "Auto hidden.",
Duration = 3
})
end)
end
end)
SaveManager:SetLibrary(Fluent)
InterfaceManager:SetLibrary(Fluent)
SaveManager:IgnoreThemeSettings()
SaveManager:SetIgnoreIndexes({})
InterfaceManager:SetFolder(perfectusfolder)
SaveManager:SetFolder(perfectusfolder .. "/AriseCrossover")
InterfaceManager:BuildInterfaceSection(Tabs.Settings)
SaveManager:BuildConfigSection(Tabs.Settings)
Window:SelectTab(1)
SaveManager:LoadAutoloadConfig()
task.spawn(function()
task.wait(0.1)
end)
end)
end
task.spawn(function()
task.wait(0.1)
populateTabs()
end)
w
w script fr
w