Keyless

Key Required
Multifunction Script
Lua Script•675 lines (21172 chars)
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")
local VirtualInputManager = game:GetService("VirtualInputManager")
local GuiService = game:GetService("GuiService")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
local SystemGui = PlayerGui:WaitForChild("SystemGUI")
local EventHandler = SystemGui:WaitForChild("EventHandler")
local Inventory = SystemGui.MenuObject:WaitForChild("Inventory")
local Slots = Inventory:WaitForChild("Slots")
local BagValue = SystemGui:WaitForChild("Bag")
local ShopGui = SystemGui:WaitForChild("ShopGUI")
local RequestAttack = ReplicatedStorage:WaitForChild("RemoteObject"):WaitForChild("RequestAttack")
local SellRemote = EventHandler:WaitForChild("onDragToSell")
local SellCountRemote = ReplicatedStorage:WaitForChild("D8ClientFramework"):WaitForChild("RemoteObjects"):WaitForChild("RemoteEvent")
local TargetSelector = require(
ReplicatedStorage
.D8ClientFramework
.Services
.TargetSelectorService
.Client_TargetSelectorService
)
local ItemList = require(ReplicatedStorage.D8ClientFramework.Services.ItemObjectService.Modules.ItemList)
local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
LocalPlayer.CharacterAdded:Connect(function(NewCharacter)
Character = NewCharacter
end)
local TargetEnabled = false
local ShortcutEnabled = false
local PickupEnabled = false
local ShortcutRunning = false
local CurrentTargetData
local CurrentTargetName = "None"
local PickupCooldown = 0
local SellSelection = {}
local AllItemNames = {}
local SellLoopEnabled = false
local SellCycleRunning = false
local LastSoldCount = 0
local SellStatusText = "Paused"
local SlotsPerBag = 36
local BagTimeout = 1.5
local SellCheckDelay = 0.2
local SlotLoopDelay = 0.03
local SellCycleDelay = 1
local MaxListRows = 220
local function Normalize(Value)
return string.lower((Value or ""):gsub("^%s+", ""):gsub("%s+$", ""))
end
local function PressG()
VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.G, false, game)
task.wait()
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.G, false, game)
end
for Index, UiName in ipairs({ "AutomationStatusUI", "AutoSellListUI", "AutoSellBlacklistUI" }) do
local Old = PlayerGui:FindFirstChild(UiName)
if Old then
Old:Destroy()
end
end
local AutomationUi = Instance.new("ScreenGui")
AutomationUi.Name = "AutomationStatusUI"
AutomationUi.ResetOnSpawn = false
AutomationUi.Parent = PlayerGui
local AutoFrame = Instance.new("Frame")
AutoFrame.Size = UDim2.fromOffset(340, 140)
AutoFrame.Position = UDim2.new(0, 20, 0, 120)
AutoFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
AutoFrame.BackgroundTransparency = 0.2
AutoFrame.BorderSizePixel = 0
AutoFrame.Active = true
AutoFrame.Draggable = true
AutoFrame.Parent = AutomationUi
local AutoTitle = Instance.new("TextLabel")
AutoTitle.Size = UDim2.new(1, -10, 0, 24)
AutoTitle.Position = UDim2.fromOffset(5, 5)
AutoTitle.BackgroundTransparency = 1
AutoTitle.Font = Enum.Font.GothamBold
AutoTitle.TextSize = 14
AutoTitle.TextXAlignment = Enum.TextXAlignment.Left
AutoTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
AutoTitle.Text = "Automation Status"
AutoTitle.Parent = AutoFrame
local TargetLabel = Instance.new("TextLabel")
TargetLabel.Size = UDim2.new(1, -10, 0, 24)
TargetLabel.Position = UDim2.fromOffset(5, 32)
TargetLabel.BackgroundTransparency = 1
TargetLabel.Font = Enum.Font.Gotham
TargetLabel.TextSize = 13
TargetLabel.TextXAlignment = Enum.TextXAlignment.Left
TargetLabel.Parent = AutoFrame
local ShortcutLabel = Instance.new("TextLabel")
ShortcutLabel.Size = UDim2.new(1, -10, 0, 24)
ShortcutLabel.Position = UDim2.fromOffset(5, 56)
ShortcutLabel.BackgroundTransparency = 1
ShortcutLabel.Font = Enum.Font.Gotham
ShortcutLabel.TextSize = 13
ShortcutLabel.TextXAlignment = Enum.TextXAlignment.Left
ShortcutLabel.Parent = AutoFrame
local PickupLabel = Instance.new("TextLabel")
PickupLabel.Size = UDim2.new(1, -10, 0, 24)
PickupLabel.Position = UDim2.fromOffset(5, 80)
PickupLabel.BackgroundTransparency = 1
PickupLabel.Font = Enum.Font.Gotham
PickupLabel.TextSize = 13
PickupLabel.TextXAlignment = Enum.TextXAlignment.Left
PickupLabel.Parent = AutoFrame
local AutoHint = Instance.new("TextLabel")
AutoHint.Size = UDim2.new(1, -10, 0, 16)
AutoHint.Position = UDim2.fromOffset(5, 112)
AutoHint.BackgroundTransparency = 1
AutoHint.Font = Enum.Font.Gotham
AutoHint.TextSize = 11
AutoHint.TextXAlignment = Enum.TextXAlignment.Left
AutoHint.TextColor3 = Color3.fromRGB(180, 180, 180)
AutoHint.Text = "Toggle: [E] Target [T] Shortcuts [Y] Pickup"
AutoHint.Parent = AutoFrame
local SellUi = Instance.new("ScreenGui")
SellUi.Name = "AutoSellListUI"
SellUi.ResetOnSpawn = false
SellUi.Parent = PlayerGui
local SellFrame = Instance.new("Frame")
SellFrame.Size = UDim2.fromOffset(250, 340)
SellFrame.Position = UDim2.new(0, 370, 0, 120)
SellFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
SellFrame.BorderSizePixel = 0
SellFrame.Active = true
SellFrame.Draggable = true
SellFrame.Parent = SellUi
local SellTitle = Instance.new("TextLabel")
SellTitle.Size = UDim2.new(1, -10, 0, 24)
SellTitle.Position = UDim2.fromOffset(5, 4)
SellTitle.BackgroundTransparency = 1
SellTitle.TextXAlignment = Enum.TextXAlignment.Left
SellTitle.Font = Enum.Font.GothamBold
SellTitle.TextSize = 13
SellTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
SellTitle.Text = "Auto Sell List"
SellTitle.Parent = SellFrame
local SellStatusLabel = Instance.new("TextLabel")
SellStatusLabel.Size = UDim2.new(1, -10, 0, 18)
SellStatusLabel.Position = UDim2.fromOffset(5, 28)
SellStatusLabel.BackgroundTransparency = 1
SellStatusLabel.TextXAlignment = Enum.TextXAlignment.Left
SellStatusLabel.Font = Enum.Font.Gotham
SellStatusLabel.TextSize = 11
SellStatusLabel.TextColor3 = Color3.fromRGB(210, 210, 210)
SellStatusLabel.Parent = SellFrame
local SellToggleButton = Instance.new("TextButton")
SellToggleButton.Size = UDim2.fromOffset(95, 22)
SellToggleButton.Position = UDim2.fromOffset(5, 50)
SellToggleButton.Font = Enum.Font.GothamBold
SellToggleButton.TextSize = 11
SellToggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
SellToggleButton.BorderSizePixel = 0
SellToggleButton.Parent = SellFrame
local SellClearButton = Instance.new("TextButton")
SellClearButton.Size = UDim2.fromOffset(95, 22)
SellClearButton.Position = UDim2.fromOffset(105, 50)
SellClearButton.Font = Enum.Font.GothamBold
SellClearButton.TextSize = 11
SellClearButton.Text = "Clear Sell List"
SellClearButton.TextColor3 = Color3.fromRGB(255, 255, 255)
SellClearButton.BackgroundColor3 = Color3.fromRGB(110, 60, 60)
SellClearButton.BorderSizePixel = 0
SellClearButton.Parent = SellFrame
local SearchBox = Instance.new("TextBox")
SearchBox.Size = UDim2.new(1, -10, 0, 24)
SearchBox.Position = UDim2.fromOffset(5, 78)
SearchBox.Font = Enum.Font.Gotham
SearchBox.TextSize = 11
SearchBox.TextColor3 = Color3.fromRGB(255, 255, 255)
SearchBox.PlaceholderColor3 = Color3.fromRGB(180, 180, 180)
SearchBox.PlaceholderText = "Search item name..."
SearchBox.Text = ""
SearchBox.ClearTextOnFocus = false
SearchBox.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
SearchBox.BorderSizePixel = 0
SearchBox.Parent = SellFrame
local SellInfoLabel = Instance.new("TextLabel")
SellInfoLabel.Size = UDim2.new(1, -10, 0, 16)
SellInfoLabel.Position = UDim2.fromOffset(5, 104)
SellInfoLabel.BackgroundTransparency = 1
SellInfoLabel.TextXAlignment = Enum.TextXAlignment.Left
SellInfoLabel.Font = Enum.Font.Gotham
SellInfoLabel.TextSize = 10
SellInfoLabel.TextColor3 = Color3.fromRGB(180, 180, 180)
SellInfoLabel.Parent = SellFrame
local ItemListFrame = Instance.new("ScrollingFrame")
ItemListFrame.Size = UDim2.new(1, -10, 1, -126)
ItemListFrame.Position = UDim2.fromOffset(5, 122)
ItemListFrame.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
ItemListFrame.BorderSizePixel = 0
ItemListFrame.ScrollBarThickness = 6
ItemListFrame.CanvasSize = UDim2.fromOffset(0, 0)
ItemListFrame.Parent = SellFrame
local ItemListLayout = Instance.new("UIListLayout")
ItemListLayout.Padding = UDim.new(0, 2)
ItemListLayout.Parent = ItemListFrame
ItemListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
ItemListFrame.CanvasSize = UDim2.fromOffset(0, ItemListLayout.AbsoluteContentSize.Y + 6)
end)
local function UpdateAutomationUi()
TargetLabel.Text = ("Auto Target [E]: %s | Target: %s"):format(TargetEnabled and "ON" or "OFF", CurrentTargetName)
TargetLabel.TextColor3 = TargetEnabled and Color3.fromRGB(85, 255, 85) or Color3.fromRGB(255, 85, 85)
ShortcutLabel.Text = ("Shortcut Loop [T]: %s | %s"):format(ShortcutEnabled and "ON" or "OFF", ShortcutRunning and "Running" or "Idle")
ShortcutLabel.TextColor3 = ShortcutEnabled and Color3.fromRGB(85, 200, 255) or Color3.fromRGB(255, 85, 85)
PickupLabel.Text = ("Auto Pickup [Y]: %s"):format(PickupEnabled and "ON" or "OFF")
PickupLabel.TextColor3 = PickupEnabled and Color3.fromRGB(255, 220, 85) or Color3.fromRGB(255, 85, 85)
end
local function GetSellSelectionCount()
local Count = 0
for Key in pairs(SellSelection) do
Count += 1
end
return Count
end
local function UpdateSellUiStatus(Note)
if Note then
SellStatusText = Note
end
SellStatusLabel.Text = ("Auto Sell: %s | Sold last cycle: %d | %s"):format(SellLoopEnabled and "ON" or "OFF", LastSoldCount, SellStatusText)
SellToggleButton.Text = SellLoopEnabled and "Pause Auto Sell" or "Resume Auto Sell"
SellToggleButton.BackgroundColor3 = SellLoopEnabled and Color3.fromRGB(60, 120, 60) or Color3.fromRGB(130, 70, 70)
end
local function RenderSellList()
for Index, Child in ipairs(ItemListFrame:GetChildren()) do
if Child:IsA("TextButton") or Child:IsA("TextLabel") then
Child:Destroy()
end
end
local Query = Normalize(SearchBox.Text)
local Matched = 0
local Shown = 0
for Index, ItemName in ipairs(AllItemNames) do
local Key = Normalize(ItemName)
if Query == "" or string.find(Key, Query, 1, true) then
Matched += 1
if Shown < MaxListRows then
Shown += 1
local Row = Instance.new("TextButton")
Row.Size = UDim2.new(1, -6, 0, 22)
Row.Position = UDim2.fromOffset(3, 0)
Row.Font = Enum.Font.Gotham
Row.TextSize = 12
Row.TextXAlignment = Enum.TextXAlignment.Left
Row.TextColor3 = Color3.fromRGB(255, 255, 255)
Row.BorderSizePixel = 0
Row.AutoButtonColor = false
Row.Text = (SellSelection[Key] and "[x] " or "[ ] ") .. ItemName
Row.BackgroundColor3 = SellSelection[Key] and Color3.fromRGB(40, 95, 40) or Color3.fromRGB(45, 45, 45)
Row.Parent = ItemListFrame
Row.MouseButton1Click:Connect(function()
if SellSelection[Key] then
SellSelection[Key] = nil
else
SellSelection[Key] = true
end
RenderSellList()
end)
end
end
end
if Matched > MaxListRows then
local More = Instance.new("TextLabel")
More.Size = UDim2.new(1, -6, 0, 20)
More.Position = UDim2.fromOffset(3, 0)
More.BackgroundTransparency = 1
More.TextXAlignment = Enum.TextXAlignment.Left
More.Font = Enum.Font.Gotham
More.TextSize = 11
More.TextColor3 = Color3.fromRGB(180, 180, 180)
More.Text = ("Refine search (%d results, showing %d)"):format(Matched, MaxListRows)
More.Parent = ItemListFrame
end
SellInfoLabel.Text = ("Selected to sell: %d | Matches: %d | Source items: %d"):format(GetSellSelectionCount(), Matched, #AllItemNames)
end
do
local Seen = {}
local function AddName(Name)
if type(Name) ~= "string" then return end
local Raw = (Name:gsub("^%s+", ""):gsub("%s+$", ""))
if Raw == "" then return end
local Key = Normalize(Raw)
if Seen[Key] then return end
Seen[Key] = true
table.insert(AllItemNames, Raw)
end
local Visited = {}
local function Walk(Node)
if type(Node) ~= "table" or Visited[Node] then return end
Visited[Node] = true
if type(Node.Name) == "string" then
AddName(Node.Name)
end
for Key, Value in pairs(Node) do
if type(Value) == "table" then
if type(Value.Name) == "string" then
AddName(Value.Name)
elseif type(Key) == "string" and (Value.Class ~= nil or Value.Type ~= nil or Value.ID ~= nil or Value.LvReq ~= nil or Value.Grade ~= nil) then
AddName(Key)
end
Walk(Value)
elseif Key == "Name" and type(Value) == "string" then
AddName(Value)
end
end
end
Walk(ItemList)
table.sort(AllItemNames, function(A, B)
return Normalize(A) < Normalize(B)
end)
end
SellToggleButton.MouseButton1Click:Connect(function()
SellLoopEnabled = not SellLoopEnabled
UpdateSellUiStatus(SellLoopEnabled and "Running" or "Paused")
end)
SellClearButton.MouseButton1Click:Connect(function()
table.clear(SellSelection)
RenderSellList()
UpdateSellUiStatus("Sell list cleared")
end)
SearchBox:GetPropertyChangedSignal("Text"):Connect(RenderSellList)
local function IsEnemyDead(Enemy, EnemyHumanoid, DataValue)
if not Enemy or not Enemy.Parent then return true end
if Enemy:GetAttribute("IsDead") then return true end
if EnemyHumanoid and (EnemyHumanoid.Health <= 0 or EnemyHumanoid:GetState() == Enum.HumanoidStateType.Dead) then return true end
if DataValue and DataValue:GetAttribute("IsDead") then return true end
return false
end
local function ClearTarget()
local HadTarget = CurrentTargetData ~= nil or CurrentTargetName ~= "None"
CurrentTargetData = nil
CurrentTargetName = "None"
if HadTarget and TargetSelector.CancelTargetSelection then
TargetSelector:CancelTargetSelection()
end
if HadTarget then
UpdateAutomationUi()
end
end
local function FindRenderFromData(DataValue)
if not DataValue then return nil end
local Cam = Workspace.CurrentCamera
if not Cam then return nil end
for Index, Enemy in ipairs(Cam:GetChildren()) do
if Enemy:IsA("Model") then
local Data = Enemy:FindFirstChild("Data")
if Data and Data.Value == DataValue then
return Enemy
end
end
end
return nil
end
local function RunShortcutCycle()
for Index = 1, 15 do
if not ShortcutEnabled then break end
EventHandler.onShortCut:FireServer(tostring(Index))
task.wait(0.1)
end
end
local function UpdateAutoTarget()
if not TargetEnabled then
ClearTarget()
return
end
if not Character or not Character.Parent then
ClearTarget()
return
end
local MyRoot = Character:FindFirstChild("HumanoidRootPart")
local MyHumanoid = Character:FindFirstChildOfClass("Humanoid")
if not MyRoot or not MyHumanoid or MyHumanoid.Health <= 0 then
ClearTarget()
return
end
if not TargetSelector.PlayerDataTarget or not TargetSelector.PlayerAttacking then
return
end
if CurrentTargetData then
local CurrentRender = FindRenderFromData(CurrentTargetData)
if not CurrentRender then
ClearTarget()
else
local CurrentHumanoid = CurrentRender:FindFirstChildOfClass("Humanoid")
if CurrentRender:GetAttribute("NameHidden") or CurrentRender:FindFirstChild("NPC") then
ClearTarget()
elseif IsEnemyDead(CurrentRender, CurrentHumanoid, CurrentTargetData) then
ClearTarget()
end
end
end
local Cam = Workspace.CurrentCamera
if not Cam then return end
local BestEnemy = nil
local BestData = nil
local BestDistance = 500
for Index, Enemy in ipairs(Cam:GetChildren()) do
if not Enemy:IsA("Model") then continue end
if string.find(string.lower(Enemy.Name), "owner", 1, true) then continue end
if Enemy:GetAttribute("NameHidden") then continue end
if Enemy:FindFirstChild("NPC") then continue end
local Data = Enemy:FindFirstChild("Data")
local EnemyRoot = Enemy:FindFirstChild("HumanoidRootPart") or Enemy:FindFirstChild("Torso")
local EnemyHumanoid = Enemy:FindFirstChildOfClass("Humanoid")
local DataValue = Data and Data.Value or nil
if not Data or not EnemyRoot or not EnemyHumanoid or not DataValue then continue end
if IsEnemyDead(Enemy, EnemyHumanoid, DataValue) then continue end
local Distance = (MyRoot.Position - EnemyRoot.Position).Magnitude
if Distance < BestDistance then
BestDistance = Distance
BestEnemy = Enemy
BestData = DataValue
end
end
if not BestEnemy or not BestData then
ClearTarget()
return
end
if CurrentTargetData == BestData then
return
end
CurrentTargetData = BestData
CurrentTargetName = BestEnemy.Name
UpdateAutomationUi()
TargetSelector:ApplyTargetSelection(BestEnemy, "Monster", BestData)
TargetSelector:ConfirmTargetSelection(BestEnemy, "Monster", BestData)
RequestAttack:FireServer({ { BestData, 0 } })
end
local function UpdateAutoPickup(Delta)
if not PickupEnabled then return end
PickupCooldown += Delta
if PickupCooldown < 1 then return end
PickupCooldown = 0
PressG()
EventHandler.onLootAllClicked:FireServer()
end
local function ClickGuiButton(Button)
local Inset = GuiService:GetGuiInset()
local Center = Button.AbsolutePosition + (Button.AbsoluteSize / 2) + Inset
VirtualInputManager:SendMouseMoveEvent(Center.X, Center.Y, game)
RunService.Heartbeat:Wait()
VirtualInputManager:SendMouseButtonEvent(Center.X, Center.Y, 0, true, game, 1)
RunService.Heartbeat:Wait()
VirtualInputManager:SendMouseButtonEvent(Center.X, Center.Y, 0, false, game, 1)
end
local function PressBagButton(Button)
if not Button or not Button.Visible then return end
pcall(function() firesignal(Button.Activated) end)
pcall(function() firesignal(Button.MouseButton1Down) end)
pcall(function() firesignal(Button.MouseButton1Click) end)
pcall(function() firesignal(Button.MouseButton1Up) end)
ClickGuiButton(Button)
pcall(function() Button:Activate() end)
end
local function SwitchToBag(BagIndex)
if BagValue.Value == BagIndex then return true end
local BagButton = Inventory:FindFirstChild("Bag" .. tostring(BagIndex))
if not BagButton then return false end
PressBagButton(BagButton)
local StartTime = tick()
while tick() - StartTime < BagTimeout do
if BagValue.Value == BagIndex then
return true
end
RunService.Heartbeat:Wait()
end
return false
end
local function IsSelectedForSell(ObjectValue)
local NameKey = Normalize(ObjectValue:GetAttribute("Name"))
if NameKey == "" then return false end
return SellSelection[NameKey] == true
end
local function TrySellSlot(SlotGui, BagIndex, SlotNumber)
local ObjectValue = SlotGui:FindFirstChild("Object")
if not ObjectValue then return false end
if not IsSelectedForSell(ObjectValue) then return false end
local BeforeName = ObjectValue:GetAttribute("Name")
local BeforeCount = tonumber(ObjectValue:GetAttribute("Count")) or 1
local GlobalSlot = ((BagIndex - 1) * SlotsPerBag) + SlotNumber
local function FireSell(SlotIndex)
SellRemote:FireServer(SlotIndex)
local CountNow = tonumber(ObjectValue:GetAttribute("Count"))
if CountNow and CountNow > 1 then
SellCountRemote:FireServer(tostring(math.floor(CountNow)))
end
end
FireSell(GlobalSlot)
task.wait(SellCheckDelay)
local AfterName = ObjectValue:GetAttribute("Name")
local AfterCount = tonumber(ObjectValue:GetAttribute("Count")) or 0
if AfterName ~= BeforeName or AfterCount < BeforeCount then
return true
end
FireSell(SlotNumber)
task.wait(SellCheckDelay)
AfterName = ObjectValue:GetAttribute("Name")
AfterCount = tonumber(ObjectValue:GetAttribute("Count")) or 0
return AfterName ~= BeforeName or AfterCount < BeforeCount
end
local function SellCurrentBag(BagIndex)
local SoldCount = 0
for SlotNumber = 1, SlotsPerBag do
if not SellLoopEnabled then
break
end
local SlotGui = Slots:FindFirstChild(tostring(SlotNumber))
if SlotGui and TrySellSlot(SlotGui, BagIndex, SlotNumber) then
SoldCount += 1
end
task.wait(SlotLoopDelay)
end
return SoldCount
end
UserInputService.InputBegan:Connect(function(Input, GameProcessed)
if GameProcessed then return end
if Input.KeyCode == Enum.KeyCode.E then
TargetEnabled = not TargetEnabled
if not TargetEnabled then
ClearTarget()
end
UpdateAutomationUi()
elseif Input.KeyCode == Enum.KeyCode.T then
ShortcutEnabled = not ShortcutEnabled
UpdateAutomationUi()
elseif Input.KeyCode == Enum.KeyCode.Y then
PickupEnabled = not PickupEnabled
if not PickupEnabled then
PickupCooldown = 0
end
UpdateAutomationUi()
end
end)
RunService.RenderStepped:Connect(function(Delta)
UpdateAutoTarget()
UpdateAutoPickup(Delta)
if ShortcutEnabled and not ShortcutRunning then
ShortcutRunning = true
UpdateAutomationUi()
task.spawn(function()
RunShortcutCycle()
ShortcutRunning = false
UpdateAutomationUi()
end)
end
end)
task.spawn(function()
while task.wait(SellCycleDelay) do
if not SellLoopEnabled or SellCycleRunning then
continue
end
if not ShopGui.Visible then
LastSoldCount = 0
UpdateSellUiStatus("Shop not open")
continue
end
SellCycleRunning = true
local TotalSold = 0
for Bag = 1, 3 do
if not SellLoopEnabled then
break
end
if SwitchToBag(Bag) then
TotalSold += SellCurrentBag(Bag)
end
task.wait(0.1)
end
if SellLoopEnabled then
LastSoldCount = TotalSold
UpdateSellUiStatus("Running")
else
UpdateSellUiStatus("Paused")
end
SellCycleRunning = false
end
end)
UpdateAutomationUi()
RenderSellList()
UpdateSellUiStatus("Paused")Features & Information
Auto sell (you need a shop ui open and the bag ui)
Auto Skill
Auto Target
Auto Pickup

sometimes you will be kicked from the game for using this, maybe you should add some part to target bosses and auto res* to them for farming, or even make the T shortcut only turn on when you have a target