Run it
Copy the script and paste it into your executor.
Fluent
Fluent:()
perfectusfolder =
Players = :()
ReplicatedStorage = :()
TweenService = :()
TeleportService = :()
VirtualUser = :()
= :()
LocalPlayer = :().LocalPlayer
Inventory = LocalPlayer:() LocalPlayer.leaderstats:()
player = :().LocalPlayer
character = player.Character player.CharacterAdded:()
humanoidRootPart = character:()
hrp = character:()
enemiesFolder = :():():()
dungeonFolder = :():()
remote = :().BridgeNet2.dataRemoteEvent
AppearFolder = :() .__Extra:()
userFolder = .__Main.__Pets:((LocalPlayer.UserId))
PET_FOLDER = userFolder:()
PET_EVENT = (:().BridgeNet2).()
infshadow = :().LocalPlayer.leaderstats.PlayerStats
degisiklik2 =
orosbucocugu =
winterServerHopEnabled =
winterServerPreference =
WINTER_CFRAME = .(,,-)
WINTER_CFRAME2 = .(, , -, , -, -, , , -, , -, )
ignoredWinterMobs = {}
winterEndBoss =
(targetName, ariseToggle)
dataRemoteEvent = ReplicatedStorage:():()
ariseToggle
LocalPlayer:(, )
.()
LocalPlayer:(, )
.()
trialKeys = {, , , , , , , , }
_, key (trialKeys)
args = {
[] = {
[] = {
[] = {},
[] = ,
[] = ,
[] = targetName
},
[] = key
}
}
dataRemoteEvent:((args))
.()
(targetPart)
targetPart targetPart:()
()
petsFolder = .Workspace:() .Workspace.__Main:()
petsFolder
()
_, userIdFolder (petsFolder:())
userIdFolder:()
_, petFolder (userIdFolder:())
petFolder:()
_, model (petFolder:())
model:()
model.PrimaryPart
humanoidRootPart = model:()
humanoidRootPart
model.PrimaryPart = humanoidRootPart
(model.Name .. )
targetCFrame = targetPart.CFrame * .(, model.PrimaryPart.Position.Y - targetPart.Position.Y, )
model:(targetCFrame)
(model.Name .. .. (targetCFrame))
()
Library = (:())()
.()
SaveManager = (:())()
.()
InterfaceManager = (:())()
Library, SaveManager, InterfaceManager
Library, SaveManager, InterfaceManager = ()
teleportEnabled =
teleportingEnabled =
castleFarmEnabled =
autoFarmV2Enabled =
autoRankEnabled =
autoEquipEnabled =
damageEnabled =
DelayToggle =
autoPotionEnabled =
killedNPCs = {}
dungeonkill = {}
castlekill = {}
targetedEnemies = {}
selectedMobName =
movementMethod =
farmingStyle =
selectedWorlds = {}
selectedRanks = {}
selectedDungeonTypes = {}
autoBuyTicketEnabled =
selectedPotions = {}
selectedMobTypes = {}
targetFloor =
maxDistance =
CastleDelay =
DungeonDelay =
DungeonDelay2 =
SelectedLevel =
castleFarmMethod =
castleTweenSpeed =
dungeonFarmMethod =
dungeonTweenSpeed =
mainTweenSpeed =
ariseDestroyDelay =
autoUseDungeonRune =
autoUseDungeonRejoinRune =
autoResetCastleEnabled =
castleBossPriorityEnabled =
selectedDungeonRunes = {}
castleDungeonExitMode =
autoExitDungeonForCastle =
autoLoadCheckpointsCastle =
webhookUrl =
webhookEnabled =
winterFarmEnabled =
winterFarmMethod =
winterTweenSpeed =
winterWalkSpeed =
winterFarmDelay =
savedWinterPosition =
autoReturnEnabled =
disableDungeonDuringWinter =
disableCastleDuringWinter =
isWinterActive =
selectedCheckpoint =
checkpointsEnabled =
POTION_TYPES = {
,
,
,
,
}
MOB_TYPES = {
,
}
rankMapping = {
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] =
}
(numRank)
letter, number (rankMapping)
number == numRank
letter
villageSpawns = {
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] =
}
dungeonSpawns = {
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] =
}
customCFrames = {
[] = .(, , -),
[] = .(, , -),
[] = .(, , -),
[] = .(, , ),
[] = .(-, , -, -, -, , , , , -, , -)
}
(message, dungeonData)
(, message)
.webhookEnabled .webhookUrl ==
()
dungeonClears =
success, clearCount = (()
:().LocalPlayer.leaderstats.GeneralStats:()
)
success
dungeonClears = (clearCount)
(, clearCount)
data = {
[] = ,
[] = {
{
[] = ,
[] = message,
[] = ( .. ),
[] = {
[] =
},
[] = {
{
[] = ,
[] = :():(.PlaceId).Name,
[] =
},
{
[] = ,
[] = .Players.LocalPlayer.Name,
[] =
},
{
[] = ,
[] = .(),
[] =
}
},
[] = {
[] = .. dungeonClears,
[] =
},
[] = DateTime.():()
}
}
}
headers = {
[] =
}
()
success, response = (()
({
Url = .webhookUrl,
Method = ,
Headers = headers,
Body = :():(data)
})
)
success
()
(, response)
()
player = .Players.LocalPlayer
player player.Character
characterScripts = player.Character:()
characterScripts
flyingFixer = characterScripts:()
flyingFixer
flyingFixer:()
characterUpdater = characterScripts:()
characterUpdater
characterUpdater:()
(enemy)
healthBar = enemy:()
healthBar healthBar:() healthBar.Main:()
amount = healthBar.Main.Bar:()
amount amount:() amount.ContentText ==
(cframe)
writefile
components = {cframe:()}
str = .(components, )
(, str)
()
readfile isfile ()
str = ()
nums = {}
num .(str, )
.(nums, (num))
#nums ==
.((nums))
displayToFolder = {}
selectedDungeonRune =
()
itemsFolder = player.leaderstats.Inventory:()
values = {}
displayToFolder = {}
itemsFolder
_, folder (itemsFolder:())
folder:() .(folder.Name, )
guiEntry = player.PlayerGui
:()
:()
:()
:()
:()
:()
:(folder.Name)
displayName
amountText =
guiEntry guiEntry:()
main = guiEntry.Main
main:()
displayName = main.Value.Text
main:()
amountText = main.Amount.Text
displayName = displayName folder.Name
combinedName = displayName .. .. amountText
.(values, combinedName)
displayToFolder[combinedName] = folder.Name
values
castleReturnEnabled =
(worldName)
spawnName = villageSpawns[worldName]
spawnName
spawnsFolder = :() .__Extra:()
spawnsFolder
spawnLocation = spawnsFolder:(spawnName)
spawnLocation spawnLocation:()
spawnLocation.CFrame
()
rootPart = character:()
parts = {}
_, part (.Workspace.__Main.__Enemies.Server:())
part:()
.(parts, part)
(#parts > )
randomPart = parts[.(, #parts)]
targetCFrame = randomPart.CFrame
tweenInfo = TweenInfo.(, .EasingStyle.Quad, .EasingDirection.Out)
tween = TweenService:(rootPart, tweenInfo, { = targetCFrame})
tween:()
tween.Completed:()
( .. randomPart.Name .. .. randomPart.ClassName .. )
()
(object)
object
()
()
()
redDungeonPrimary = .__Main.__Dungeon:()
.__Main.__Dungeon.Dungeon:()
.__Main.__Dungeon.Dungeon.DungeonRod2:()
redDungeonPrimary
()
hrp.CFrame = redDungeonPrimary.CFrame * .(, , )
()
hrp.CFrame = object.CFrame * .(, , )
.()
dungeonPart = .__Main.__Dungeon:(, )
dungeonPart
()
(, dungeonPart:() dungeonPart.DoubleDungeonSpawn.Position )
.()
autoBuyTicketEnabled
dungeonIcon =
player.PlayerGui:() player.PlayerGui.Menus:()
player.PlayerGui.Menus.Dungeon:()
player.PlayerGui.Menus.Dungeon.Background:()
player.PlayerGui.Menus.Dungeon.Background.DungeonIcon:()
dungeonIcon dungeonIcon.Visible
()
args = {
[] = {
[] = {
[] = ,
[] = ,
[] =
},
[] = orosbucocugu
}
}
remote:((args))
.()
()
()
args = {
[] = {
[] = {
[] = ,
[] =
},
[] = orosbucocugu
}
}
:().BridgeNet2.dataRemoteEvent:((args))
.()
autoUseDungeonRune == #selectedDungeonRunes >
(, .(selectedDungeonRunes, ))
allRuneSlots = {}
slot =
_, runeName (selectedDungeonRunes)
i = ,
.(allRuneSlots, {
slot = slot,
name = runeName
})
slot +=
i = , #allRuneSlots,
j = , .(, #allRuneSlots - i)
runeData = allRuneSlots[i + j]
addArgs = {
[] = {
[] = {
[] = player.UserId,
[] = ,
[] = runeData.slot,
[] = ,
[] = runeData.name
},
[] = orosbucocugu
}
}
remote:((addArgs))
.()
()
.()
()
startArgs = {
[] = {
[] = {
[] = player.UserId,
[] = ,
[] =
},
[] = orosbucocugu
}
}
remote:((startArgs))
()
t = .()
totalSeconds = t.min * + t.sec
mod15 = totalSeconds %
isActive =
secondsUntilNextOpen =
mod15 >=
isActive =
secondsUntilNextOpen = - mod15
isActive, secondsUntilNextOpen
()
utc = .()
minute = utc.min
minute >= minute <
(method)
method ==
lastWebhookTime =
teleportingEnabled
.PlaceId ==
()
.()
isActive, minutesUntil = ()
isActive
dungeonFound =
_, worldName (selectedWorlds)
teleportingEnabled
spawnLocation = (worldName)
spawnLocation
(, worldName)
()
.()
dungeonPart = .__Main.__Dungeon:(, )
dungeonPart
isRedDungeon = dungeonPart:() ==
dungeonMapName = dungeonPart:()
dungeonWorldName = dungeonSpawns[dungeonMapName]
typeMatch = (isRedDungeon .(selectedDungeonTypes, ))
( isRedDungeon .(selectedDungeonTypes, ))
typeMatch
(isRedDungeon )
dungeonWorldName .(selectedWorlds, dungeonWorldName) typeMatch
( .. dungeonWorldName)
foundRank = dungeonPart:()
rankMatch =
foundRank #selectedRanks >
_, selRank (selectedRanks)
rankMapping[selRank] == foundRank
rankMatch =
rankMatch
(, foundRank)
()
.()
currentTime = .()
.webhookEnabled .webhookUrl ~= (currentTime - lastWebhookTime) >
rankLetter = (foundRank)
dungeonData = {
world = dungeonWorldName,
= isRedDungeon ,
rank = rankLetter
}
webhookMessage = .(
,
dungeonWorldName,
dungeonData.type,
rankLetter
)
(webhookMessage, dungeonData)
lastWebhookTime = currentTime
isRedDungeon
redDungeonPrimary = dungeonPart:()
dungeonPart.DungeonRod2:()
redDungeonPrimary
()
(redDungeonPrimary)
()
(dungeonPart)
()
(dungeonPart)
dungeonFound =
(, foundRank, , .(selectedRanks, ))
(, dungeonWorldName)
_, secondsUntilNextOpen = ()
(, secondsUntilNextOpen, )
.(secondsUntilNextOpen + )
(, worldName)
(, worldName)
.()
dungeonFound
()
_, secondsUntilNextOpen = ()
(, secondsUntilNextOpen, )
.(secondsUntilNextOpen + )
()
_, secondsUntilNextOpen = ()
.(secondsUntilNextOpen + )
.()
player.CharacterAdded:(
(newCharacter)
character = newCharacter
hrp = newCharacter:()
)
()
selectedEnemyFoundTime .() - selectedEnemyFoundTime >
killedNPCs = {}
nearestEnemy =
shortestDistance = .huge
playerPosition = hrp.Position
_, enemy (enemiesFolder:())
enemy:() enemy:()
healthBar = enemy:()
healthBar healthBar:() healthBar.Main:()
title = healthBar.Main.Title
title title:() title.ContentText == selectedMobName killedNPCs[enemy.Name]
enemyPosition = enemy.HumanoidRootPart.Position
distance = (playerPosition - enemyPosition).Magnitude
distance < shortestDistance
shortestDistance = distance
nearestEnemy = enemy
nearestEnemy
selectedEnemyFoundTime = .()
nearestEnemy
()
roomLabel = player.PlayerGui player.PlayerGui:() player.PlayerGui.Hud:() player.PlayerGui.Hud.UpContanier:()
roomLabel
text = roomLabel.Text
current, total = text:()
current total (current == total)
()
_, enemy (enemiesFolder:())
enemy:() enemy:() dungeonkill[enemy.Name] (enemy)
size = enemy.HumanoidRootPart.Size
mobType =
#selectedMobTypes >
size == .(, , ) .(selectedMobTypes, )
enemy
size == .(, , ) .(selectedMobTypes, )
enemy
enemy
()
castleBossPriorityEnabled
biggestEnemy =
biggestSize = .(,,)
_, enemy (enemiesFolder:())
enemy:() enemy:() castlekill[enemy.Name] (enemy)
size = enemy.HumanoidRootPart.Size
size.Magnitude > biggestSize.Magnitude
biggestSize = size
biggestEnemy = enemy
biggestEnemy
biggestEnemy
_, enemy (enemiesFolder:())
enemy:() enemy:() castlekill[enemy.Name]
(enemy)
enemy
()
nearestEnemy, shortestDistance = , .huge
playerPosition = hrp.Position
_, enemy (enemiesFolder:())
enemy:() enemy:() killedNPCs[enemy.Name]
distance = (playerPosition - enemy:().Position).Magnitude
distance < shortestDistance
shortestDistance = distance
nearestEnemy = enemy
nearestEnemy
()
lowestHPEnemy =
lowestHP = .huge
_, enemy (enemiesFolder:())
enemy:() enemy:() targetedEnemies[enemy.Name]
(enemy)
currentHP = (enemy.HealthBar.Main.Bar.Amount.ContentText:()) .huge
currentHP < lowestHP
lowestHP = currentHP
lowestHPEnemy = enemy
lowestHPEnemy
noclipConnection
()
noclipConnection
noclipConnection = :().Stepped:(()
movementMethod == character
_, part (character:())
part:() part.CanCollide
part.CanCollide =
)
()
noclipConnection
noclipConnection:()
noclipConnection =
(target)
target target:()
enemyHrp = target.HumanoidRootPart
movementMethod ==
.()
hrp.CFrame = enemyHrp.CFrame * .(, , )
.()
movementMethod ==
tweenInfo = TweenInfo.(mainTweenSpeed, .EasingStyle.Linear)
tween = TweenService:(hrp, tweenInfo, { = enemyHrp.CFrame * .(, , )})
tween:()
tween.Completed:()
movementMethod ==
()
humanoid = hrp.Parent:()
humanoid
humanoid:((enemyHrp.CFrame * .(, , )).Position)
reached =
conn
conn = humanoid.MoveToFinished:((success)
reached =
)
startTime = ()
reached () - startTime <
.()
conn conn:()
()
player = :().LocalPlayer
hud = player.PlayerGui:()
hud
upContainer = hud:()
upContainer
room = upContainer:()
room
text = room.Text
floor, maxFloor = text:()
maxFloor (maxFloor) ==
()
.PlaceId == ()
()
.PlaceId ~=
bossRoomWaited =
teleportEnabled
() castleFarmEnabled
() bossRoomWaited
Fluent:({
Title = ,
Content = .. DungeonDelay2 .. ,
Duration =
})
.(DungeonDelay2)
bossRoomWaited =
()
bossRoomWaited =
target = ()
target target.Parent
()
enemyPos = target.HumanoidRootPart.Position
enemyCFrame = target.HumanoidRootPart.CFrame
targetCFrame = enemyCFrame * .(, , )
dungeonFarmMethod ==
tweenInfo = TweenInfo.(
dungeonTweenSpeed,
.EasingStyle.Linear,
.EasingDirection.Out
)
tween = TweenService:(hrp, tweenInfo, { = targetCFrame})
tween:()
tween.Completed:()
.()
hrp.CFrame = targetCFrame
.()
.()
(target.Name, )
.()
target.Parent (target)
.()
dungeonkill[target.Name] =
DungeonDelay DungeonDelay >
.(DungeonDelay)
serverFolder = .__Main.__Enemies.Server
serverFolder #serverFolder:() >
randomIndex = .(, #serverFolder:())
serverPart = serverFolder:()[randomIndex]
serverPart
(, serverPart.Name)
()
hrp.CFrame = serverPart.CFrame * .(, , )
.()
(serverPart.Name, )
.()
()
.()
()
.()
.()
()
hudGui = player.PlayerGui:() player.PlayerGui.Hud:()
hudGui hudGui:()
roomText = hudGui.Room.Text
floorNumber = (roomText:())
floorNumber
()
castleFarmEnabled
currentFloor = ()
currentFloor >= targetFloor
(, targetFloor, )
castleFarmEnabled =
()
:():(, .Players.LocalPlayer)
Fluent:({
Title = ,
Content = .. targetFloor .. ,
Duration =
})
.(()
.()
castleReturnEnabled .PlaceId ==
cf = ()
cf player.Character player.Character:()
player.Character.HumanoidRootPart.CFrame = cf
Fluent:({
Title = ,
Content = ,
Duration =
})
)
.()
()
previousFloor = ()
previousFloor ==
()
(, previousFloor)
castleFarmEnabled
currentFloor = ()
currentFloor > previousFloor
(, previousFloor, , currentFloor, )
roomName = .. currentFloor
portal =
:() .__Main:()
.__Main.__World:(roomName)
.__Main.__World[roomName]:()
portal portal:()
(, roomName, )
()
hrp.CFrame = portal.CFrame * .(, , )
.()
:().LocalPlayer:(, )
.()
:().LocalPlayer:(, )
()
_, enemy (enemiesFolder:())
enemy:() enemy:() (enemy)
() castleFarmEnabled
.()
()
castlekill = {}
previousFloor = currentFloor
(, roomName, )
mainRootPart = :() .__Main:()
.__Main.__World:(roomName)
.__Main.__World[roomName]:()
.__Main.__World[roomName].Buildings:()
.__Main.__World[roomName].Buildings.MainRoot:()
mainRootPart mainRootPart:()
()
()
hrp.CFrame = mainRootPart.CFrame * .(, , )
.()
(mainRootPart.Name, )
.()
()
_, enemy (enemiesFolder:())
enemy:() enemy:() (enemy)
() castleFarmEnabled
.()
()
castlekill = {}
previousFloor = currentFloor
(, roomName)
currentFloor < previousFloor
(
,
previousFloor,
,
currentFloor,
)
previousFloor = currentFloor
.()
()
.PlaceId ~=
.(checkFloorAndExit)
.(checkFloorChangeAndTeleport)
castleFarmEnabled
() teleportEnabled
()
target = ()
target target.Parent (target)
()
enemyPos = target.HumanoidRootPart.Position
enemyLook = target.HumanoidRootPart.CFrame.LookVector
teleportPos = enemyPos - (enemyLook * )
targetCFrame = .(teleportPos, enemyPos)
castleFarmMethod ==
tweenInfo = TweenInfo.(
castleTweenSpeed,
.EasingStyle.Linear,
.EasingDirection.Out
)
tween = TweenService:(hrp, tweenInfo, { = targetCFrame})
tween:()
tween.Completed:()
hrp.CFrame = targetCFrame
.()
(target.Name, )
.()
target.Parent (target)
.()
castlekill[target.Name] =
CastleDelay CastleDelay >
.(CastleDelay)
serverFolder = .__Main.__Enemies.Server
serverFolder #serverFolder:() >
randomIndex = .(, #serverFolder:())
serverPart = serverFolder:()[randomIndex]
serverPart
(, serverPart.Name)
()
humanoidRootPart.CFrame = serverPart.CFrame * .(, , )
.()
(serverPart.Name, )
.()
()
.()
currentFloor = ()
roomName = .. (currentFloor)
mainRootPart = :() .__Main:()
.__Main.__World:(roomName)
.__Main.__World[roomName]:()
.__Main.__World[roomName].Buildings:()
.__Main.__World[roomName].Buildings.MainRoot:()
mainRootPart mainRootPart:()
(, roomName)
()
humanoidRootPart.CFrame = mainRootPart.CFrame
.()
(mainRootPart.Name, )
.()
()
.()
.()
(worldName)
spawnName = villageSpawns[worldName]
spawnName
spawnsFolder = :() .__Extra:()
spawnsFolder
spawnPart = spawnsFolder:(spawnName)
spawnPart spawnPart:()
()
hrp.CFrame = spawnPart.CFrame
.()
(cframe)
{
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
}
(tbl)
.(
tbl.x,
tbl.y,
tbl.z,
tbl.lookVectorX,
tbl.lookVectorY,
tbl.lookVectorZ,
tbl.upVectorX,
tbl.upVectorY,
tbl.upVectorZ
)
()
lastDungeonNotifyTime =
lastCastleNotifyTime =
lastTeleportTime =
notifyInterval =
teleportCooldown =
currentTime = ()
teleportingEnabled
isDungeonNow, secondsUntilNextDungeon = ()
isDungeonNow (currentTime - lastTeleportTime) >= teleportCooldown
.()
lastTeleportTime = currentTime
isDungeonNow (currentTime - lastDungeonNotifyTime) >= notifyInterval
teleportingEnabled castleFarmEnabled
Fluent:({
Title = ,
Content = .. .(secondsUntilNextDungeon) .. ,
Duration =
})
lastDungeonNotifyTime = currentTime
castleFarmEnabled
isCastleNow, secondsUntilNextCastle = ()
isCastleNow
.PlaceId == (currentTime - lastTeleportTime) >= teleportCooldown
args = {
[] = {
[] = {
[] = checkpointsEnabled selectedCheckpoint ~= ,
[] = ,
[] =
},
[] = orosbucocugu
}
}
checkpointsEnabled selectedCheckpoint ~=
args[][][] = selectedCheckpoint
:().BridgeNet2.dataRemoteEvent:((args))
lastTeleportTime = currentTime
(currentTime - lastCastleNotifyTime) >= notifyInterval
lastCastleNotifyTime = currentTime
.()
()
teleportEnabled
target = ()
target target.Parent
()
(target)
.()
(target.Name, )
.()
teleportEnabled target.Parent (target)
.()
killedNPCs[target.Name] =
.()
()
lastResetTime = .()
teleportEnabled
target =
.selectedMobs #.selectedMobs >
.currentMobIndex = .currentMobIndex
currentMobType = .selectedMobs[.currentMobIndex]
shortestDistance = .huge
playerPosition = hrp.Position
_, enemy (enemiesFolder:())
enemy:() enemy:()
healthBar = enemy:()
healthBar healthBar:() healthBar.Main:()
healthBar.Main.Title.Text == currentMobType killedNPCs[enemy.Name] (enemy)
size = enemy.HumanoidRootPart.Size
isCorrectSize =
#selectedMobTypes >
isCorrectSize =
size == .(, , ) .(selectedMobTypes, )
isCorrectSize =
size == .(, , ) .(selectedMobTypes, )
isCorrectSize =
isCorrectSize
distance = (playerPosition - enemy.HumanoidRootPart.Position).Magnitude
distance < shortestDistance
shortestDistance = distance
target = enemy
target
.currentMobIndex = (.currentMobIndex % #.selectedMobs) +
target .() - lastResetTime >
killedNPCs = {}
lastResetTime = .()
()
target target.Parent (target)
()
(target)
.()
(target.Name, )
.()
target.Parent (target)
.()
killedNPCs[target.Name] =
.mobKillCounts = .mobKillCounts {}
mobName =
target:()
target.HealthBar:()
target.HealthBar.Main:()
mobName = target.HealthBar.Main.Title.Text
.mobKillCounts[mobName] = (.mobKillCounts[mobName] ) +
(, mobName, , .mobKillCounts[mobName])
.()
(targetCFrame)
hrp
tweenInfo = TweenInfo.(mainTweenSpeed, .EasingStyle.Linear)
tween = TweenService:(hrp, tweenInfo, { = targetCFrame})
tween:()
tween.Completed:()
()
lastResetTime = .()
autoFarmV2Enabled
teleportEnabled
target =
farmingStyle ==
target = ()
farmingStyle ==
nearestDistance = .huge
playerPosition = hrp.Position
_, enemy (enemiesFolder:())
enemy:() enemy:() targetedEnemies[enemy.Name] (enemy)
size = enemy.HumanoidRootPart.Size
isCorrectSize =
#selectedMobTypes >
isCorrectSize =
size == .(, , ) .(selectedMobTypes, )
isCorrectSize =
size == .(, , ) .(selectedMobTypes, )
isCorrectSize =
isCorrectSize
distance = (playerPosition - enemy.HumanoidRootPart.Position).Magnitude
distance < nearestDistance
nearestDistance = distance
target = enemy
farmingStyle ==
highestHP =
_, enemy (enemiesFolder:())
enemy:() enemy:() targetedEnemies[enemy.Name] (enemy)
size = enemy.HumanoidRootPart.Size
isCorrectSize =
#selectedMobTypes >
isCorrectSize =
size == .(, , ) .(selectedMobTypes, )
isCorrectSize =
size == .(, , ) .(selectedMobTypes, )
isCorrectSize =
isCorrectSize
currentHP = (enemy.HealthBar.Main.Bar.Amount.ContentText:())
currentHP > highestHP
highestHP = currentHP
target = enemy
farmingStyle ==
target = ()
target .() - lastResetTime >
targetedEnemies = {}
lastResetTime = .()
()
target target.Parent (target)
()
(target, )
.()
(target.Name, )
.()
target.Parent (target)
.()
targetedEnemies[target.Name] =
.()
()
Player_HumanoidRootPart = LocalPlayer.Character LocalPlayer.Character:()
Player_HumanoidRootPart
nearestPlayer =
nearestDistance = .huge
_, NPC (.Workspace.__Main.__Enemies.Client:())
NPC NPC:()
healthBar = NPC:()
healthBar healthBar.Main healthBar.Main.Bar healthBar.Main.Bar.Amount
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:GetAttribLoads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted. From: github.com, raw.githubusercontent.com, i.imgur.com, www.roblox.com, perfectusmim1.github.io, discord.com.
This script was originally written around May 2025 for Arise Crossover. Due to changes and updates in the game, some features may no longer work as intended. This is not intentional and is purely a result of the game evolving over time. I am sharing this script fully open-source so others can review the code, learn from it, or reuse parts that may still be useful. It is not a highly professional or heavily optimized script, and there may be performance or structural limitations. The purpose of this release is purely to provide value—whether by offering reference logic, UI structure, or ideas that someone else might find helpful. Use it as a learning resource or a base, not as a guaranteed working solution. Thanks, and goodbye.