--This watermark is used to delete the file if its cached, remove it to make the file persist after vape updates. local run = function(func) func() end local cloneref = cloneref or function(obj) return obj end local vapeEvents = setmetatable({}, { __index = function(self, index) self[index] = Instance.new('BindableEvent') return self[index] end }) local playersService = cloneref(game:GetService('Players')) local replicatedStorage = cloneref(game:GetService('ReplicatedStorage')) local runService = cloneref(game:GetService('RunService')) local inputService = cloneref(game:GetService('UserInputService')) local tweenService = cloneref(game:GetService('TweenService')) local httpService = cloneref(game:GetService('HttpService')) local textChatService = cloneref(game:GetService('TextChatService')) local collectionService = cloneref(game:GetService('CollectionService')) local contextActionService = cloneref(game:GetService('ContextActionService')) local guiService = cloneref(game:GetService('GuiService')) local coreGui = cloneref(game:GetService('CoreGui')) local starterGui = cloneref(game:GetService('StarterGui')) local isnetworkowner = identifyexecutor and table.find({'AWP', 'Nihon'}, ({identifyexecutor()})[1]) and isnetworkowner or function() return true end local gameCamera = workspace.CurrentCamera local lplr = playersService.LocalPlayer local assetfunction = getcustomasset local vape = shared.vape local entitylib = vape.Libraries.entity local targetinfo = vape.Libraries.targetinfo local sessioninfo = vape.Libraries.sessioninfo local uipallet = vape.Libraries.uipallet local tween = vape.Libraries.tween local color = vape.Libraries.color local whitelist = vape.Libraries.whitelist local prediction = vape.Libraries.prediction local getfontsize = vape.Libraries.getfontsize local getcustomasset = vape.Libraries.getcustomasset local store = { attackReach = 0, attackReachUpdate = tick(), damageBlockFail = tick(), hand = {}, inventory = { inventory = { items = {}, armor = {} }, hotbar = {} }, inventories = {}, matchState = 0, queueType = 'bedwars_test', tools = {} } local Reach = {} local HitBoxes = {} local InfiniteFly = {} local TrapDisabler local AntiFallPart local bedwars, remotes, sides, oldinvrender, oldSwing = {}, {}, {} local function addBlur(parent) local blur = Instance.new('ImageLabel') blur.Name = 'Blur' blur.Size = UDim2.new(1, 89, 1, 52) blur.Position = UDim2.fromOffset(-48, -31) blur.BackgroundTransparency = 1 blur.Image = getcustomasset('newvape/assets/new/blur.png') blur.ScaleType = Enum.ScaleType.Slice blur.SliceCenter = Rect.new(52, 31, 261, 502) blur.Parent = parent return blur end local function collection(tags, module, customadd, customremove) tags = typeof(tags) ~= 'table' and {tags} or tags local objs, connections = {}, {} for _, tag in tags do table.insert(connections, collectionService:GetInstanceAddedSignal(tag):Connect(function(v) if customadd then customadd(objs, v, tag) return end table.insert(objs, v) end)) table.insert(connections, collectionService:GetInstanceRemovedSignal(tag):Connect(function(v) if customremove then customremove(objs, v, tag) return end v = table.find(objs, v) if v then table.remove(objs, v) end end)) for _, v in collectionService:GetTagged(tag) do if customadd then customadd(objs, v, tag) continue end table.insert(objs, v) end end local cleanFunc = function(self) for _, v in connections do v:Disconnect() end table.clear(connections) table.clear(objs) table.clear(self) end if module then module:Clean(cleanFunc) end return objs, cleanFunc end local function getBestArmor(slot) local closest, mag = nil, 0 for _, item in store.inventory.inventory.items do local meta = item and bedwars.ItemMeta[item.itemType] or {} if meta.armor and meta.armor.slot == slot then local newmag = (meta.armor.damageReductionMultiplier or 0) if newmag > mag then closest, mag = item, newmag end end end return closest end local function getBow() local bestBow, bestBowSlot, bestBowDamage = nil, nil, 0 for slot, item in store.inventory.inventory.items do local bowMeta = bedwars.ItemMeta[item.itemType].projectileSource if bowMeta and table.find(bowMeta.ammoItemTypes, 'arrow') then local bowDamage = bedwars.ProjectileMeta[bowMeta.projectileType('arrow')].combat.damage or 0 if bowDamage > bestBowDamage then bestBow, bestBowSlot, bestBowDamage = item, slot, bowDamage end end end return bestBow, bestBowSlot end local function getItem(itemName, inv) for slot, item in (inv or store.inventory.inventory.items) do if item.itemType == itemName then return item, slot end end return nil end local function getRoactRender(func) return debug.getupvalue(debug.getupvalue(debug.getupvalue(func, 3).render, 2).render, 1) end local function getSword() local bestSword, bestSwordSlot, bestSwordDamage = nil, nil, 0 for slot, item in store.inventory.inventory.items do local swordMeta = bedwars.ItemMeta[item.itemType].sword if swordMeta then local swordDamage = swordMeta.damage or 0 if swordDamage > bestSwordDamage then bestSword, bestSwordSlot, bestSwordDamage = item, slot, swordDamage end end end return bestSword, bestSwordSlot end local function getTool(breakType) local bestTool, bestToolSlot, bestToolDamage = nil, nil, 0 for slot, item in store.inventory.inventory.items do local toolMeta = bedwars.ItemMeta[item.itemType].breakBlock if toolMeta then local toolDamage = toolMeta[breakType] or 0 if toolDamage > bestToolDamage then bestTool, bestToolSlot, bestToolDamage = item, slot, toolDamage end end end return bestTool, bestToolSlot end local function getWool() for _, wool in (inv or store.inventory.inventory.items) do if wool.itemType:find('wool') then return wool and wool.itemType, wool and wool.amount end end end local function getStrength(plr) if not plr.Player then return 0 end local strength = 0 for _, v in (store.inventories[plr.Player] or {items = {}}).items do local itemmeta = bedwars.ItemMeta[v.itemType] if itemmeta and itemmeta.sword and itemmeta.sword.damage > strength then strength = itemmeta.sword.damage end end return strength end local function getPlacedBlock(pos) if not pos then return end local roundedPosition = bedwars.BlockController:getBlockPosition(pos) return bedwars.BlockController:getStore():getBlockAt(roundedPosition), roundedPosition end local function getBlocksInPoints(s, e) local blocks, list = bedwars.BlockController:getStore(), {} for x = s.X, e.X do for y = s.Y, e.Y do for z = s.Z, e.Z do local vec = Vector3.new(x, y, z) if blocks:getBlockAt(vec) then table.insert(list, vec * 3) end end end end return list end local function getNearGround(range) range = Vector3.new(3, 3, 3) * (range or 10) local localPosition, mag, closest = entitylib.character.RootPart.Position, 60 local blocks = getBlocksInPoints(bedwars.BlockController:getBlockPosition(localPosition - range), bedwars.BlockController:getBlockPosition(localPosition + range)) for _, v in blocks do if not getPlacedBlock(v + Vector3.new(0, 3, 0)) then local newmag = (localPosition - v).Magnitude if newmag < mag then mag, closest = newmag, v + Vector3.new(0, 3, 0) end end end table.clear(blocks) return closest end local function getShieldAttribute(char) local returned = 0 for name, val in char:GetAttributes() do if name:find('Shield') and type(val) == 'number' and val > 0 then returned += val end end return returned end local function getSpeed() local multi, increase, modifiers = 0, true, bedwars.SprintController:getMovementStatusModifier():getModifiers() for v in modifiers do local val = v.constantSpeedMultiplier and v.constantSpeedMultiplier or 0 if val and val > math.max(multi, 1) then increase = false multi = val - (0.06 * math.round(val)) end end for v in modifiers do multi += math.max((v.moveSpeedMultiplier or 0) - 1, 0) end if multi > 0 and increase then multi += 0.16 + (0.02 * math.round(multi)) end return 20 * (multi + 1) end local function getTableSize(tab) local ind = 0 for _ in tab do ind += 1 end return ind end local function hotbarSwitch(slot) if slot and store.inventory.hotbarSlot ~= slot then bedwars.Store:dispatch({ type = 'InventorySelectHotbarSlot', slot = slot }) vapeEvents.InventoryChanged.Event:Wait() return true end return false end local function isFriend(plr, recolor) if vape.Categories.Friends.Options['Use friends'].Enabled then local friend = table.find(vape.Categories.Friends.ListEnabled, plr.Name) and true if recolor then friend = friend and vape.Categories.Friends.Options['Recolor visuals'].Enabled end return friend end return nil end local function isTarget(plr) return table.find(vape.Categories.Targets.ListEnabled, plr.Name) and true end local function notif(...) return vape:CreateNotification(...) end local function removeTags(str) str = str:gsub('', '\n') return (str:gsub('<[^<>]->', '')) end local function roundPos(vec) return Vector3.new(math.round(vec.X / 3) * 3, math.round(vec.Y / 3) * 3, math.round(vec.Z / 3) * 3) end local function switchItem(tool, delayTime) delayTime = delayTime or 0.05 local check = lplr.Character and lplr.Character:FindFirstChild('HandInvItem') or nil if check and check.Value ~= tool and tool.Parent ~= nil then task.spawn(function() bedwars.Client:Get(remotes.EquipItem):CallServerAsync({hand = tool}) end) check.Value = tool if delayTime > 0 then task.wait(delayTime) end return true end end local function waitForChildOfType(obj, name, timeout, prop) local check, returned = tick() + timeout repeat returned = prop and obj[name] or obj:FindFirstChildOfClass(name) if returned and returned.Name ~= 'UpperTorso' or check < tick() then break end task.wait() until false return returned end local frictionTable, oldfrict = {}, {} local frictionConnection local frictionState local function modifyVelocity(v) if v:IsA('BasePart') and v.Name ~= 'HumanoidRootPart' and not oldfrict[v] then oldfrict[v] = v.CustomPhysicalProperties or 'none' v.CustomPhysicalProperties = PhysicalProperties.new(0.0001, 0.2, 0.5, 1, 1) end end local function updateVelocity(force) local newState = getTableSize(frictionTable) > 0 if frictionState ~= newState or force then if frictionConnection then frictionConnection:Disconnect() end if newState then if entitylib.isAlive then for _, v in entitylib.character.Character:GetDescendants() do modifyVelocity(v) end frictionConnection = entitylib.character.Character.DescendantAdded:Connect(modifyVelocity) end else for i, v in oldfrict do i.CustomPhysicalProperties = v ~= 'none' and v or nil end table.clear(oldfrict) end end frictionState = newState end local kitorder = { hannah = 5, spirit_assassin = 4, dasher = 3, jade = 2, regent = 1 } local sortmethods = { Damage = function(a, b) return a.Entity.Character:GetAttribute('LastDamageTakenTime') < b.Entity.Character:GetAttribute('LastDamageTakenTime') end, Threat = function(a, b) return getStrength(a.Entity) > getStrength(b.Entity) end, Kit = function(a, b) return (a.Entity.Player and kitorder[a.Entity.Player:GetAttribute('PlayingAsKit')] or 0) > (b.Entity.Player and kitorder[b.Entity.Player:GetAttribute('PlayingAsKit')] or 0) end, Health = function(a, b) return a.Entity.Health < b.Entity.Health end, Angle = function(a, b) local selfrootpos = entitylib.character.RootPart.Position local localfacing = entitylib.character.RootPart.CFrame.LookVector * Vector3.new(1, 0, 1) local angle = math.acos(localfacing:Dot(((a.Entity.RootPart.Position - selfrootpos) * Vector3.new(1, 0, 1)).Unit)) local angle2 = math.acos(localfacing:Dot(((b.Entity.RootPart.Position - selfrootpos) * Vector3.new(1, 0, 1)).Unit)) return angle < angle2 end } run(function() local oldstart = entitylib.start local function customEntity(ent) if ent:HasTag('inventory-entity') and not ent:HasTag('Monster') then return end entitylib.addEntity(ent, nil, ent:HasTag('Drone') and function(self) local droneplr = playersService:GetPlayerByUserId(self.Character:GetAttribute('PlayerUserId')) return not droneplr or lplr:GetAttribute('Team') ~= droneplr:GetAttribute('Team') end or function(self) return lplr:GetAttribute('Team') ~= self.Character:GetAttribute('Team') end) end entitylib.start = function() oldstart() if entitylib.Running then for _, ent in collectionService:GetTagged('entity') do customEntity(ent) end table.insert(entitylib.Connections, collectionService:GetInstanceAddedSignal('entity'):Connect(customEntity)) table.insert(entitylib.Connections, collectionService:GetInstanceRemovedSignal('entity'):Connect(function(ent) entitylib.removeEntity(ent) end)) end end entitylib.addPlayer = function(plr) if plr.Character then entitylib.refreshEntity(plr.Character, plr) end entitylib.PlayerConnections[plr] = { plr.CharacterAdded:Connect(function(char) entitylib.refreshEntity(char, plr) end), plr.CharacterRemoving:Connect(function(char) entitylib.removeEntity(char, plr == lplr) end), plr:GetAttributeChangedSignal('Team'):Connect(function() for _, v in entitylib.List do if v.Targetable ~= entitylib.targetCheck(v) then entitylib.refreshEntity(v.Character, v.Player) end end if plr == lplr then entitylib.start() else entitylib.refreshEntity(plr.Character, plr) end end) } end entitylib.addEntity = function(char, plr, teamfunc) if not char then return end entitylib.EntityThreads[char] = task.spawn(function() local hum, humrootpart, head if plr then hum = waitForChildOfType(char, 'Humanoid', 10) humrootpart = hum and waitForChildOfType(hum, 'RootPart', workspace.StreamingEnabled and 9e9 or 10, true) head = char:WaitForChild('Head', 10) or humrootpart else hum = {HipHeight = 0.5} humrootpart = waitForChildOfType(char, 'PrimaryPart', 10, true) head = humrootpart end local updateobjects = plr and plr ~= lplr and { char:WaitForChild('ArmorInvItem_0', 5), char:WaitForChild('ArmorInvItem_1', 5), char:WaitForChild('ArmorInvItem_2', 5), char:WaitForChild('HandInvItem', 5) } or {} if hum and humrootpart then local entity = { Connections = {}, Character = char, Health = (char:GetAttribute('Health') or 100) + getShieldAttribute(char), Head = head, Humanoid = hum, HumanoidRootPart = humrootpart, HipHeight = hum.HipHeight + (humrootpart.Size.Y / 2) + (hum.RigType == Enum.HumanoidRigType.R6 and 2 or 0), Jumps = 0, JumpTick = tick(), Jumping = false, LandTick = tick(), MaxHealth = char:GetAttribute('MaxHealth') or 100, NPC = plr == nil, Player = plr, RootPart = humrootpart, TeamCheck = teamfunc } if plr == lplr then entity.AirTime = tick() entitylib.character = entity entitylib.isAlive = true entitylib.Events.LocalAdded:Fire(entity) table.insert(entitylib.Connections, char.AttributeChanged:Connect(function(attr) vapeEvents.AttributeChanged:Fire(attr) end)) else entity.Targetable = entitylib.targetCheck(entity) for _, v in entitylib.getUpdateConnections(entity) do table.insert(entity.Connections, v:Connect(function() entity.Health = (char:GetAttribute('Health') or 100) + getShieldAttribute(char) entity.MaxHealth = char:GetAttribute('MaxHealth') or 100 entitylib.Events.EntityUpdated:Fire(entity) end)) end for _, v in updateobjects do table.insert(entity.Connections, v:GetPropertyChangedSignal('Value'):Connect(function() task.delay(0.1, function() if bedwars.getInventory then store.inventories[plr] = bedwars.getInventory(plr) entitylib.Events.EntityUpdated:Fire(entity) end end) end)) end if plr then local anim = char:FindFirstChild('Animate') if anim then pcall(function() anim = anim.jump:FindFirstChildWhichIsA('Animation').AnimationId table.insert(entity.Connections, hum.Animator.AnimationPlayed:Connect(function(playedanim) if playedanim.Animation.AnimationId == anim then entity.JumpTick = tick() entity.Jumps += 1 entity.LandTick = tick() + 1 entity.Jumping = entity.Jumps > 1 end end)) end) end task.delay(0.1, function() if bedwars.getInventory then store.inventories[plr] = bedwars.getInventory(plr) end end) end table.insert(entitylib.List, entity) entitylib.Events.EntityAdded:Fire(entity) end table.insert(entity.Connections, char.ChildRemoved:Connect(function(part) if part == humrootpart or part == hum or part == head then if part == humrootpart and hum.RootPart then humrootpart = hum.RootPart entity.RootPart = hum.RootPart entity.HumanoidRootPart = hum.RootPart return end entitylib.removeEntity(char, plr == lplr) end end)) end entitylib.EntityThreads[char] = nil end) end entitylib.getUpdateConnections = function(ent) local char = ent.Character local tab = { char:GetAttributeChangedSignal('Health'), char:GetAttributeChangedSignal('MaxHealth'), { Connect = function() ent.Friend = ent.Player and isFriend(ent.Player) or nil ent.Target = ent.Player and isTarget(ent.Player) or nil return {Disconnect = function() end} end } } if ent.Player then table.insert(tab, ent.Player:GetAttributeChangedSignal('PlayingAsKit')) end for name, val in char:GetAttributes() do if name:find('Shield') and type(val) == 'number' then table.insert(tab, char:GetAttributeChangedSignal(name)) end end return tab end entitylib.targetCheck = function(ent) if ent.TeamCheck then return ent:TeamCheck() end if ent.NPC then return true end if isFriend(ent.Player) then return false end if not select(2, whitelist:get(ent.Player)) then return false end return lplr:GetAttribute('Team') ~= ent.Player:GetAttribute('Team') end vape:Clean(entitylib.Events.LocalAdded:Connect(updateVelocity)) end) entitylib.start() run(function() local KnitInit, Knit repeat KnitInit, Knit = pcall(function() return debug.getupvalue(require(lplr.PlayerScripts.TS.knit).setup, 9) end) if KnitInit then break end task.wait() until KnitInit if not debug.getupvalue(Knit.Start, 1) then repeat task.wait() until debug.getupvalue(Knit.Start, 1) end local Flamework = require(replicatedStorage['rbxts_include']['node_modules']['@flamework'].core.out).Flamework local InventoryUtil = require(replicatedStorage.TS.inventory['inventory-util']).InventoryUtil local Client = require(replicatedStorage.TS.remotes).default.Client local OldGet, OldBreak = Client.Get bedwars = setmetatable({ AbilityController = Flamework.resolveDependency('@easy-games/game-core:client/controllers/ability/ability-controller@AbilityController'), AnimationType = require(replicatedStorage.TS.animation['animation-type']).AnimationType, AnimationUtil = require(replicatedStorage['rbxts_include']['node_modules']['@easy-games']['game-core'].out['shared'].util['animation-util']).AnimationUtil, AppController = require(replicatedStorage['rbxts_include']['node_modules']['@easy-games']['game-core'].out.client.controllers['app-controller']).AppController, BedBreakEffectMeta = require(replicatedStorage.TS.locker['bed-break-effect']['bed-break-effect-meta']).BedBreakEffectMeta, BedwarsKitMeta = require(replicatedStorage.TS.games.bedwars.kit['bedwars-kit-meta']).BedwarsKitMeta, BlockBreaker = Knit.Controllers.BlockBreakController.blockBreaker, BlockController = require(replicatedStorage['rbxts_include']['node_modules']['@easy-games']['block-engine'].out).BlockEngine, BlockEngine = require(lplr.PlayerScripts.TS.lib['block-engine']['client-block-engine']).ClientBlockEngine, BlockPlacer = require(replicatedStorage['rbxts_include']['node_modules']['@easy-games']['block-engine'].out.client.placement['block-placer']).BlockPlacer, BowConstantsTable = debug.getupvalue(Knit.Controllers.ProjectileController.enableBeam, 8), ClickHold = require(replicatedStorage['rbxts_include']['node_modules']['@easy-games']['game-core'].out.client.ui.lib.util['click-hold']).ClickHold, Client = Client, ClientConstructor = require(replicatedStorage['rbxts_include']['node_modules']['@rbxts'].net.out.client), ClientDamageBlock = require(replicatedStorage['rbxts_include']['node_modules']['@easy-games']['block-engine'].out.shared.remotes).BlockEngineRemotes.Client, CombatConstant = require(replicatedStorage.TS.combat['combat-constant']).CombatConstant, DamageIndicator = Knit.Controllers.DamageIndicatorController.spawnDamageIndicator, EmoteType = require(replicatedStorage.TS.locker.emote['emote-type']).EmoteType, GameAnimationUtil = require(replicatedStorage.TS.animation['animation-util']).GameAnimationUtil, getIcon = function(item, showinv) local itemmeta = bedwars.ItemMeta[item.itemType] return itemmeta and showinv and itemmeta.image or '' end, getInventory = function(plr) local suc, res = pcall(function() return InventoryUtil.getInventory(plr) end) return suc and res or { items = {}, armor = {} } end, HudAliveCount = require(lplr.PlayerScripts.TS.controllers.global['top-bar'].ui.game['hud-alive-player-counts']).HudAlivePlayerCounts, ItemMeta = debug.getupvalue(require(replicatedStorage.TS.item['item-meta']).getItemMeta, 1), KillFeedController = Flamework.resolveDependency('client/controllers/game/kill-feed/kill-feed-controller@KillFeedController'), Knit = Knit, KnockbackUtil = require(replicatedStorage.TS.damage['knockback-util']).KnockbackUtil, MageKitUtil = require(replicatedStorage.TS.games.bedwars.kit.kits.mage['mage-kit-util']).MageKitUtil, NametagController = Knit.Controllers.NametagController, PartyController = Flamework.resolveDependency('@easy-games/lobby:client/controllers/party-controller@PartyController'), ProjectileMeta = require(replicatedStorage.TS.projectile['projectile-meta']).ProjectileMeta, QueryUtil = require(replicatedStorage['rbxts_include']['node_modules']['@easy-games']['game-core'].out).GameQueryUtil, QueueCard = require(lplr.PlayerScripts.TS.controllers.global.queue.ui['queue-card']).QueueCard, QueueMeta = require(replicatedStorage.TS.game['queue-meta']).QueueMeta, Roact = require(replicatedStorage['rbxts_include']['node_modules']['@rbxts']['roact'].src), RuntimeLib = require(replicatedStorage['rbxts_include'].RuntimeLib), SoundList = require(replicatedStorage.TS.sound['game-sound']).GameSound, SoundManager = require(replicatedStorage['rbxts_include']['node_modules']['@easy-games']['game-core'].out).SoundManager, Store = require(lplr.PlayerScripts.TS.ui.store).ClientStore, TeamUpgradeMeta = debug.getupvalue(require(replicatedStorage.TS.games.bedwars['team-upgrade']['team-upgrade-meta']).getTeamUpgradeMetaForQueue, 6), UILayers = require(replicatedStorage['rbxts_include']['node_modules']['@easy-games']['game-core'].out).UILayers, VisualizerUtils = require(lplr.PlayerScripts.TS.lib.visualizer['visualizer-utils']).VisualizerUtils, WeldTable = require(replicatedStorage.TS.util['weld-util']).WeldUtil, WinEffectMeta = require(replicatedStorage.TS.locker['win-effect']['win-effect-meta']).WinEffectMeta, ZapNetworking = require(lplr.PlayerScripts.TS.lib.network) }, { __index = function(self, ind) rawset(self, ind, Knit.Controllers[ind]) return rawget(self, ind) end }) local remoteNames = { AfkStatus = debug.getproto(Knit.Controllers.AfkController.KnitStart, 1), AttackEntity = Knit.Controllers.SwordController.sendServerRequest, BeePickup = Knit.Controllers.BeeNetController.trigger, CannonAim = debug.getproto(Knit.Controllers.CannonController.startAiming, 5), CannonLaunch = Knit.Controllers.CannonHandController.launchSelf, ConsumeBattery = debug.getproto(Knit.Controllers.BatteryController.onKitLocalActivated, 1), ConsumeItem = debug.getproto(Knit.Controllers.ConsumeController.onEnable, 1), ConsumeSoul = Knit.Controllers.GrimReaperController.consumeSoul, ConsumeTreeOrb = debug.getproto(Knit.Controllers.EldertreeController.createTreeOrbInteraction, 1), DepositPinata = debug.getproto(debug.getproto(Knit.Controllers.PiggyBankController.KnitStart, 2), 5), DragonBreath = debug.getproto(Knit.Controllers.VoidDragonController.onKitLocalActivated, 5), DragonEndFly = debug.getproto(Knit.Controllers.VoidDragonController.flapWings, 1), DragonFly = Knit.Controllers.VoidDragonController.flapWings, DropItem = Knit.Controllers.ItemDropController.dropItemInHand, EquipItem = debug.getproto(require(replicatedStorage.TS.entity.entities['inventory-entity']).InventoryEntity.equipItem, 4), FireProjectile = debug.getupvalue(Knit.Controllers.ProjectileController.launchProjectileWithValues, 2), GroundHit = Knit.Controllers.FallDamageController.KnitStart, GuitarHeal = Knit.Controllers.GuitarController.performHeal, HannahKill = debug.getproto(Knit.Controllers.HannahController.registerExecuteInteractions, 1), HarvestCrop = debug.getproto(debug.getproto(Knit.Controllers.CropController.KnitStart, 4), 1), KaliyahPunch = debug.getproto(Knit.Controllers.DragonSlayerController.onKitLocalActivated, 1), MageSelect = debug.getproto(Knit.Controllers.MageController.registerTomeInteraction, 1), MinerDig = debug.getproto(Knit.Controllers.MinerController.setupMinerPrompts, 1), PickupItem = Knit.Controllers.ItemDropController.checkForPickup, PickupMetal = debug.getproto(Knit.Controllers.HiddenMetalController.onKitLocalActivated, 4), ReportPlayer = require(lplr.PlayerScripts.TS.controllers.global.report['report-controller']).default.reportPlayer, ResetCharacter = debug.getproto(Knit.Controllers.ResetController.createBindable, 1), SpawnRaven = debug.getproto(Knit.Controllers.RavenController.KnitStart, 1), SummonerClawAttack = Knit.Controllers.SummonerClawHandController.attack, WarlockTarget = debug.getproto(Knit.Controllers.WarlockStaffController.KnitStart, 2) } local function dumpRemote(tab) local ind for i, v in tab do if v == 'Client' then ind = i break end end return ind and tab[ind + 1] or '' end for i, v in remoteNames do local remote = dumpRemote(debug.getconstants(v)) if remote == '' then notif('Vape', 'Failed to grab remote ('..i..')', 10, 'alert') end remotes[i] = remote end OldBreak = bedwars.BlockController.isBlockBreakable Client.Get = function(self, remoteName) local call = OldGet(self, remoteName) if remoteName == remotes.AttackEntity then return { instance = call.instance, SendToServer = function(_, attackTable, ...) local suc, plr = pcall(function() return playersService:GetPlayerFromCharacter(attackTable.entityInstance) end) local selfpos = attackTable.validate.selfPosition.value local targetpos = attackTable.validate.targetPosition.value store.attackReach = ((selfpos - targetpos).Magnitude * 100) // 1 / 100 store.attackReachUpdate = tick() + 1 if Reach.Enabled or HitBoxes.Enabled then attackTable.validate.raycast = attackTable.validate.raycast or {} attackTable.validate.selfPosition.value += CFrame.lookAt(selfpos, targetpos).LookVector * math.max((selfpos - targetpos).Magnitude - 14.399, 0) end if suc and plr then if not select(2, whitelist:get(plr)) then return end end return call:SendToServer(attackTable, ...) end } elseif remoteName == 'StepOnSnapTrap' and TrapDisabler.Enabled then return {SendToServer = function() end} end return call end bedwars.BlockController.isBlockBreakable = function(self, breakTable, plr) local obj = bedwars.BlockController:getStore():getBlockAt(breakTable.blockPosition) if obj and obj.Name == 'bed' then for _, plr in playersService:GetPlayers() do if obj:GetAttribute('Team'..(plr:GetAttribute('Team') or 0)..'NoBreak') and not select(2, whitelist:get(plr)) then return false end end end return OldBreak(self, breakTable, plr) end local cache, blockhealthbar = {}, {blockHealth = -1, breakingBlockPosition = Vector3.zero} store.blockPlacer = bedwars.BlockPlacer.new(bedwars.BlockEngine, 'wool_white') local function getBlockHealth(block, blockpos) local blockdata = bedwars.BlockController:getStore():getBlockData(blockpos) return (blockdata and (blockdata:GetAttribute('1') or blockdata:GetAttribute('Health')) or block:GetAttribute('Health')) end local function getBlockHits(block, blockpos) if not block then return 0 end local breaktype = bedwars.ItemMeta[block.Name].block.breakType local tool = store.tools[breaktype] tool = tool and bedwars.ItemMeta[tool.itemType].breakBlock[breaktype] or 2 return getBlockHealth(block, bedwars.BlockController:getBlockPosition(blockpos)) / tool end --[[ Pathfinding using a luau version of dijkstra's algorithm Source: https://stackoverflow.com/questions/39355587/speeding-up-dijkstras-algorithm-to-solve-a-3d-maze ]] local function calculatePath(target, blockpos) if cache[blockpos] then return unpack(cache[blockpos]) end local visited, unvisited, distances, air, path = {}, {{0, blockpos}}, {[blockpos] = 0}, {}, {} for _ = 1, 10000 do local _, node = next(unvisited) if not node then break end table.remove(unvisited, 1) visited[node[2]] = true for _, side in sides do side = node[2] + side if visited[side] then continue end local block = getPlacedBlock(side) if not block or block:GetAttribute('NoBreak') or block == target then if not block then air[node[2]] = true end continue end local curdist = getBlockHits(block, side) + node[1] if curdist < (distances[side] or math.huge) then table.insert(unvisited, {curdist, side}) distances[side] = curdist path[side] = node[2] end end end local pos, cost = nil, math.huge for node in air do if distances[node] < cost then pos, cost = node, distances[node] end end if pos then cache[blockpos] = { pos, cost, path } return pos, cost, path end end bedwars.placeBlock = function(pos, item) if getItem(item) then store.blockPlacer.blockType = item return store.blockPlacer:placeBlock(bedwars.BlockController:getBlockPosition(pos)) end end bedwars.breakBlock = function(block, effects, anim, customHealthbar) if lplr:GetAttribute('DenyBlockBreak') or not entitylib.isAlive or InfiniteFly.Enabled then return end local handler = bedwars.BlockController:getHandlerRegistry():getHandler(block.Name) local cost, pos, target, path = math.huge for _, v in (handler and handler:getContainedPositions(block) or {block.Position / 3}) do local dpos, dcost, dpath = calculatePath(block, v * 3) if dpos and dcost < cost then cost, pos, target, path = dcost, dpos, v * 3, dpath end end if pos then if (entitylib.character.RootPart.Position - pos).Magnitude > 30 then return end local dblock, dpos = getPlacedBlock(pos) if not dblock then return end if (workspace:GetServerTimeNow() - bedwars.SwordController.lastAttack) > 0.4 then local breaktype = bedwars.ItemMeta[dblock.Name].block.breakType local tool = store.tools[breaktype] if tool then switchItem(tool.tool) end end if blockhealthbar.blockHealth == -1 or dpos ~= blockhealthbar.breakingBlockPosition then blockhealthbar.blockHealth = getBlockHealth(dblock, dpos) blockhealthbar.breakingBlockPosition = dpos end bedwars.ClientDamageBlock:Get('DamageBlock'):CallServerAsync({ blockRef = {blockPosition = dpos}, hitPosition = pos, hitNormal = Vector3.FromNormalId(Enum.NormalId.Top) }):andThen(function(result) if result then if result == 'cancelled' then store.damageBlockFail = tick() + 1 return end if effects then local blockdmg = (blockhealthbar.blockHealth - (result == 'destroyed' and 0 or getBlockHealth(dblock, dpos))) customHealthbar = customHealthbar or bedwars.BlockBreaker.updateHealthbar customHealthbar(bedwars.BlockBreaker, {blockPosition = dpos}, blockhealthbar.blockHealth, dblock:GetAttribute('MaxHealth'), blockdmg, dblock) blockhealthbar.blockHealth = math.max(blockhealthbar.blockHealth - blockdmg, 0) if blockhealthbar.blockHealth <= 0 then bedwars.BlockBreaker.breakEffect:playBreak(dblock.Name, dpos, lplr) bedwars.BlockBreaker.healthbarMaid:DoCleaning() blockhealthbar.breakingBlockPosition = Vector3.zero else bedwars.BlockBreaker.breakEffect:playHit(dblock.Name, dpos, lplr) end end if anim then local animation = bedwars.AnimationUtil:playAnimation(lplr, bedwars.BlockController:getAnimationController():getAssetId(1)) bedwars.ViewmodelController:playAnimation(15) task.wait(0.3) animation:Stop() animation:Destroy() end end end) if effects then return pos, path, target end end end for _, v in Enum.NormalId:GetEnumItems() do table.insert(sides, Vector3.FromNormalId(v) * 3) end local function updateStore(new, old) if new.Bedwars ~= old.Bedwars then store.equippedKit = new.Bedwars.kit ~= 'none' and new.Bedwars.kit or '' end if new.Game ~= old.Game then store.matchState = new.Game.matchState store.queueType = new.Game.queueType or 'bedwars_test' end if new.Inventory ~= old.Inventory then local newinv = (new.Inventory and new.Inventory.observedInventory or {inventory = {}}) local oldinv = (old.Inventory and old.Inventory.observedInventory or {inventory = {}}) store.inventory = newinv if newinv ~= oldinv then vapeEvents.InventoryChanged:Fire() end if newinv.inventory.items ~= oldinv.inventory.items then vapeEvents.InventoryAmountChanged:Fire() store.tools.sword = getSword() for _, v in {'stone', 'wood', 'wool'} do store.tools[v] = getTool(v) end end if newinv.inventory.hand ~= oldinv.inventory.hand then local currentHand, toolType = new.Inventory.observedInventory.inventory.hand, '' if currentHand then local handData = bedwars.ItemMeta[currentHand.itemType] toolType = handData.sword and 'sword' or handData.block and 'block' or currentHand.itemType:find('bow') and 'bow' end store.hand = { tool = currentHand and currentHand.tool, amount = currentHand and currentHand.amount or 0, toolType = toolType } end end end local storeChanged = bedwars.Store.changed:connect(updateStore) updateStore(bedwars.Store:getState(), {}) for _, event in {'MatchEndEvent', 'EntityDeathEvent', 'BedwarsBedBreak', 'BalloonPopped', 'AngelProgress', 'GrapplingHookFunctions'} do if not vape.Connections then return end bedwars.Client:WaitFor(event):andThen(function(connection) vape:Clean(connection:Connect(function(...) vapeEvents[event]:Fire(...) end)) end) end vape:Clean(bedwars.ZapNetworking.EntityDamageEventZap.On(function(...) vapeEvents.EntityDamageEvent:Fire({ entityInstance = ..., damage = select(2, ...), damageType = select(3, ...), fromPosition = select(4, ...), fromEntity = select(5, ...), knockbackMultiplier = select(6, ...), knockbackId = select(7, ...), disableDamageHighlight = select(13, ...) }) end)) for _, event in {'PlaceBlockEvent', 'BreakBlockEvent'} do vape:Clean(bedwars.ZapNetworking[event..'Zap'].On(function(...) local data = { blockRef = { blockPosition = ..., }, player = select(5, ...) } for i, v in cache do if ((data.blockRef.blockPosition * 3) - v[1]).Magnitude <= 30 then table.clear(v[3]) table.clear(v) cache[i] = nil end end vapeEvents[event]:Fire(data) end)) end store.blocks = collection('block', gui) store.shop = collection({'BedwarsItemShop', 'TeamUpgradeShopkeeper'}, gui, function(tab, obj) table.insert(tab, { Id = obj.Name, RootPart = obj, Shop = obj:HasTag('BedwarsItemShop'), Upgrades = obj:HasTag('TeamUpgradeShopkeeper') }) end) store.enchant = collection({'enchant-table', 'broken-enchant-table'}, gui, nil, function(tab, obj, tag) if obj:HasTag('enchant-table') and tag == 'broken-enchant-table' then return end obj = table.find(tab, obj) if obj then table.remove(tab, obj) end end) local kills = sessioninfo:AddItem('Kills') local beds = sessioninfo:AddItem('Beds') local wins = sessioninfo:AddItem('Wins') local games = sessioninfo:AddItem('Games') local mapname = 'Unknown' sessioninfo:AddItem('Map', 0, function() return mapname end, false) task.delay(1, function() games:Increment() end) task.spawn(function() pcall(function() repeat task.wait() until store.matchState ~= 0 or vape.Loaded == nil if vape.Loaded == nil then return end mapname = workspace:WaitForChild('Map', 5):WaitForChild('Worlds', 5):GetChildren()[1].Name mapname = string.gsub(string.split(mapname, '_')[2] or mapname, '-', '') or 'Blank' end) end) vape:Clean(vapeEvents.BedwarsBedBreak.Event:Connect(function(bedTable) if bedTable.player and bedTable.player.UserId == lplr.UserId then beds:Increment() end end)) vape:Clean(vapeEvents.MatchEndEvent.Event:Connect(function(winTable) if (bedwars.Store:getState().Game.myTeam or {}).id == winTable.winningTeamId or lplr.Neutral then wins:Increment() end end)) vape:Clean(vapeEvents.EntityDeathEvent.Event:Connect(function(deathTable) local killer = playersService:GetPlayerFromCharacter(deathTable.fromEntity) local killed = playersService:GetPlayerFromCharacter(deathTable.entityInstance) if not killed or not killer then return end if killed ~= lplr and killer == lplr then kills:Increment() end end)) task.spawn(function() repeat if entitylib.isAlive then entitylib.character.AirTime = entitylib.character.Humanoid.FloorMaterial ~= Enum.Material.Air and tick() or entitylib.character.AirTime end for _, v in entitylib.List do v.LandTick = math.abs(v.RootPart.Velocity.Y) < 0.1 and v.LandTick or tick() if (tick() - v.LandTick) > 0.2 and v.Jumps ~= 0 then v.Jumps = 0 v.Jumping = false end end task.wait() until vape.Loaded == nil end) pcall(function() if getthreadidentity and setthreadidentity then local old = getthreadidentity() setthreadidentity(2) bedwars.Shop = require(replicatedStorage.TS.games.bedwars.shop['bedwars-shop']).BedwarsShop bedwars.ShopItems = debug.getupvalue(debug.getupvalue(bedwars.Shop.getShopItem, 1), 2) bedwars.Shop.getShopItem('iron_sword', lplr) setthreadidentity(old) store.shopLoaded = true else task.spawn(function() repeat task.wait(0.1) until vape.Loaded == nil or bedwars.AppController:isAppOpen('BedwarsItemShopApp') bedwars.Shop = require(replicatedStorage.TS.games.bedwars.shop['bedwars-shop']).BedwarsShop bedwars.ShopItems = debug.getupvalue(debug.getupvalue(bedwars.Shop.getShopItem, 1), 2) store.shopLoaded = true end) end end) vape:Clean(function() Client.Get = OldGet bedwars.BlockController.isBlockBreakable = OldBreak store.blockPlacer:disable() for _, v in vapeEvents do v:Destroy() end for _, v in cache do table.clear(v[3]) table.clear(v) end table.clear(store.blockPlacer) table.clear(vapeEvents) table.clear(bedwars) table.clear(store) table.clear(cache) table.clear(sides) table.clear(remotes) storeChanged:disconnect() storeChanged = nil end) end) for _, v in {'AntiRagdoll', 'TriggerBot', 'SilentAim', 'AutoRejoin', 'Rejoin', 'Disabler', 'Timer', 'ServerHop', 'MouseTP', 'MurderMystery'} do vape:Remove(v) end run(function() local AimAssist local Targets local Sort local AimSpeed local Distance local AngleSlider local StrafeIncrease local KillauraTarget local ClickAim AimAssist = vape.Categories.Combat:CreateModule({ Name = 'AimAssist', Function = function(callback) if callback then AimAssist:Clean(runService.Heartbeat:Connect(function(dt) if entitylib.isAlive and store.hand.toolType == 'sword' and ((not ClickAim.Enabled) or (tick() - bedwars.SwordController.lastSwing) < 0.4) then local ent = not KillauraTarget.Enabled and entitylib.EntityPosition({ Range = Distance.Value, Part = 'RootPart', Wallcheck = Targets.Walls.Enabled, Players = Targets.Players.Enabled, NPCs = Targets.NPCs.Enabled, Sort = sortmethods[Sort.Value] }) or store.KillauraTarget if ent then local delta = (ent.RootPart.Position - entitylib.character.RootPart.Position) local localfacing = entitylib.character.RootPart.CFrame.LookVector * Vector3.new(1, 0, 1) local angle = math.acos(localfacing:Dot((delta * Vector3.new(1, 0, 1)).Unit)) if angle >= (math.rad(AngleSlider.Value) / 2) then return end targetinfo.Targets[ent] = tick() + 1 gameCamera.CFrame = gameCamera.CFrame:Lerp(CFrame.lookAt(gameCamera.CFrame.p, ent.RootPart.Position), (AimSpeed.Value + (StrafeIncrease.Enabled and (inputService:IsKeyDown(Enum.KeyCode.A) or inputService:IsKeyDown(Enum.KeyCode.D)) and 10 or 0)) * dt) end end end)) end end, Tooltip = 'Smoothly aims to closest valid target with sword' }) Targets = AimAssist:CreateTargets({ Players = true, Walls = true }) local methods = {'Damage', 'Distance'} for i in sortmethods do if not table.find(methods, i) then table.insert(methods, i) end end Sort = AimAssist:CreateDropdown({ Name = 'Target Mode', List = methods }) AimSpeed = AimAssist:CreateSlider({ Name = 'Aim Speed', Min = 1, Max = 20, Default = 6 }) Distance = AimAssist:CreateSlider({ Name = 'Distance', Min = 1, Max = 30, Default = 30, Suffx = function(val) return val == 1 and 'stud' or 'studs' end }) AngleSlider = AimAssist:CreateSlider({ Name = 'Max angle', Min = 1, Max = 360, Default = 70 }) ClickAim = AimAssist:CreateToggle({ Name = 'Click Aim', Default = true }) KillauraTarget = AimAssist:CreateToggle({ Name = 'Use killaura target' }) StrafeIncrease = AimAssist:CreateToggle({Name = 'Strafe increase'}) end) run(function() local AutoClicker local CPS local BlockCPS = {} local Thread local function AutoClick() if Thread then task.cancel(Thread) end Thread = task.delay(1 / 7, function() repeat if not bedwars.AppController:isLayerOpen(bedwars.UILayers.MAIN) then local blockPlacer = bedwars.BlockPlacementController.blockPlacer if store.hand.toolType == 'block' and blockPlacer then if (workspace:GetServerTimeNow() - bedwars.BlockCpsController.lastPlaceTimestamp) >= ((1 / 12) * 0.5) then local mouseinfo = blockPlacer.clientManager:getBlockSelector():getMouseInfo(0) if mouseinfo and mouseinfo.placementPosition == mouseinfo.placementPosition then task.spawn(blockPlacer.placeBlock, blockPlacer, mouseinfo.placementPosition) end end elseif store.hand.toolType == 'sword' then bedwars.SwordController:swingSwordAtMouse() end end task.wait(1 / (store.hand.toolType == 'block' and BlockCPS or CPS).GetRandomValue()) until not AutoClicker.Enabled end) end AutoClicker = vape.Categories.Combat:CreateModule({ Name = 'AutoClicker', Function = function(callback) if callback then AutoClicker:Clean(inputService.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then AutoClick() end end)) AutoClicker:Clean(inputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 and Thread then task.cancel(Thread) Thread = nil end end)) if inputService.TouchEnabled then pcall(function() AutoClicker:Clean(lplr.PlayerGui.MobileUI['2'].MouseButton1Down:Connect(AutoClick)) AutoClicker:Clean(lplr.PlayerGui.MobileUI['2'].MouseButton1Up:Connect(function() if Thread then task.cancel(Thread) Thread = nil end end)) end) end else if Thread then task.cancel(Thread) Thread = nil end end end, Tooltip = 'Hold attack button to automatically click' }) CPS = AutoClicker:CreateTwoSlider({ Name = 'CPS', Min = 1, Max = 9, DefaultMin = 7, DefaultMax = 7 }) AutoClicker:CreateToggle({ Name = 'Place Blocks', Default = true, Function = function(callback) if BlockCPS.Object then BlockCPS.Object.Visible = callback end end }) BlockCPS = AutoClicker:CreateTwoSlider({ Name = 'Block CPS', Min = 1, Max = 12, DefaultMin = 12, DefaultMax = 12, Darker = true }) end) run(function() local old vape.Categories.Combat:CreateModule({ Name = 'NoClickDelay', Function = function(callback) if callback then old = bedwars.SwordController.isClickingTooFast bedwars.SwordController.isClickingTooFast = function(self) self.lastSwing = os.clock() return false end else bedwars.SwordController.isClickingTooFast = old end end, Tooltip = 'Remove the CPS cap' }) end) run(function() local Value Reach = vape.Categories.Combat:CreateModule({ Name = 'Reach', Function = function(callback) bedwars.CombatConstant.RAYCAST_SWORD_CHARACTER_DISTANCE = callback and Value.Value + 2 or 14.4 end, Tooltip = 'Extends attack reach' }) Value = Reach:CreateSlider({ Name = 'Range', Min = 0, Max = 18, Default = 18, Function = function(val) if Reach.Enabled then bedwars.CombatConstant.RAYCAST_SWORD_CHARACTER_DISTANCE = val + 2 end end, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) end) run(function() local Sprint local old Sprint = vape.Categories.Combat:CreateModule({ Name = 'Sprint', Function = function(callback) if callback then if inputService.TouchEnabled then pcall(function() lplr.PlayerGui.MobileUI['4'].Visible = false end) end old = bedwars.SprintController.stopSprinting bedwars.SprintController.stopSprinting = function(...) local call = old(...) bedwars.SprintController:startSprinting() return call end Sprint:Clean(entitylib.Events.LocalAdded:Connect(function() task.delay(0.1, function() bedwars.SprintController:stopSprinting() end) end)) bedwars.SprintController:stopSprinting() else if inputService.TouchEnabled then pcall(function() lplr.PlayerGui.MobileUI['4'].Visible = true end) end bedwars.SprintController.stopSprinting = old bedwars.SprintController:stopSprinting() end end, Tooltip = 'Sets your sprinting to true.' }) end) run(function() local TriggerBot local CPS local rayParams = RaycastParams.new() TriggerBot = vape.Categories.Combat:CreateModule({ Name = 'TriggerBot', Function = function(callback) if callback then repeat local doAttack if not bedwars.AppController:isLayerOpen(bedwars.UILayers.MAIN) then if entitylib.isAlive and store.hand.toolType == 'sword' and bedwars.DaoController.chargingMaid == nil then local attackRange = bedwars.ItemMeta[store.hand.tool.Name].sword.attackRange rayParams.FilterDescendantsInstances = {lplr.Character} local unit = lplr:GetMouse().UnitRay local localPos = entitylib.character.RootPart.Position local rayRange = (attackRange or 14.4) local ray = bedwars.QueryUtil:raycast(unit.Origin, unit.Direction * 200, rayParams) if ray and (localPos - ray.Instance.Position).Magnitude <= rayRange then local limit = (attackRange) for _, ent in entitylib.List do doAttack = ent.Targetable and ray.Instance:IsDescendantOf(ent.Character) and (localPos - ent.RootPart.Position).Magnitude <= rayRange if doAttack then break end end end doAttack = doAttack or bedwars.SwordController:getTargetInRegion(attackRange or 3.8 * 3, 0) if doAttack then bedwars.SwordController:swingSwordAtMouse() end end end task.wait(doAttack and 1 / CPS.GetRandomValue() or 0.016) until not TriggerBot.Enabled end end, Tooltip = 'Automatically swings when hovering over a entity' }) CPS = TriggerBot:CreateTwoSlider({ Name = 'CPS', Min = 1, Max = 9, DefaultMin = 7, DefaultMax = 7 }) end) run(function() local Velocity local Horizontal local Vertical local Chance local TargetCheck local rand, old = Random.new() Velocity = vape.Categories.Combat:CreateModule({ Name = 'Velocity', Function = function(callback) if callback then old = bedwars.KnockbackUtil.applyKnockback bedwars.KnockbackUtil.applyKnockback = function(root, mass, dir, knockback, ...) if rand:NextNumber(0, 100) > Chance.Value then return end local check = (not TargetCheck.Enabled) or entitylib.EntityPosition({ Range = 50, Part = 'RootPart', Players = true }) if check then knockback = knockback or {} if Horizontal.Value == 0 and Vertical.Value == 0 then return end knockback.horizontal = (knockback.horizontal or 1) * (Horizontal.Value / 100) knockback.vertical = (knockback.vertical or 1) * (Vertical.Value / 100) end return old(root, mass, dir, knockback, ...) end else bedwars.KnockbackUtil.applyKnockback = old end end, Tooltip = 'Reduces knockback taken' }) Horizontal = Velocity:CreateSlider({ Name = 'Horizontal', Min = 0, Max = 100, Default = 0, Suffix = '%' }) Vertical = Velocity:CreateSlider({ Name = 'Vertical', Min = 0, Max = 100, Default = 0, Suffix = '%' }) Chance = Velocity:CreateSlider({ Name = 'Chance', Min = 0, Max = 100, Default = 100, Suffix = '%' }) TargetCheck = Velocity:CreateToggle({Name = 'Only when targeting'}) end) local AntiFallDirection run(function() local AntiFall local Mode local Material local Color local rayCheck = RaycastParams.new() rayCheck.RespectCanCollide = true local function getLowGround() local mag = math.huge for _, pos in bedwars.BlockController:getStore():getAllBlockPositions() do pos = pos * 3 if pos.Y < mag and not getPlacedBlock(pos + Vector3.new(0, 3, 0)) then mag = pos.Y end end return mag end AntiFall = vape.Categories.Blatant:CreateModule({ Name = 'AntiFall', Function = function(callback) if callback then repeat task.wait() until store.matchState ~= 0 or (not AntiFall.Enabled) if not AntiFall.Enabled then return end local pos, debounce = getLowGround(), tick() if pos ~= math.huge then AntiFallPart = Instance.new('Part') AntiFallPart.Size = Vector3.new(10000, 1, 10000) AntiFallPart.Transparency = 1 - Color.Opacity AntiFallPart.Material = Enum.Material[Material.Value] AntiFallPart.Color = Color3.fromHSV(Color.Hue, Color.Sat, Color.Value) AntiFallPart.Position = Vector3.new(0, pos - 2, 0) AntiFallPart.CanCollide = Mode.Value == 'Collide' AntiFallPart.Anchored = true AntiFallPart.CanQuery = false AntiFallPart.Parent = workspace AntiFall:Clean(AntiFallPart) AntiFall:Clean(AntiFallPart.Touched:Connect(function(touched) if touched.Parent == lplr.Character and entitylib.isAlive and debounce < tick() then debounce = tick() + 0.1 if Mode.Value == 'Normal' then local top = getNearGround() if top then local lastTeleport = lplr:GetAttribute('LastTeleported') local connection connection = runService.PreSimulation:Connect(function() if vape.Modules.Fly.Enabled or vape.Modules.InfiniteFly.Enabled or vape.Modules.LongJump.Enabled then connection:Disconnect() AntiFallDirection = nil return end if entitylib.isAlive and lplr:GetAttribute('LastTeleported') == lastTeleport then local delta = ((top - entitylib.character.RootPart.Position) * Vector3.new(1, 0, 1)) local root = entitylib.character.RootPart AntiFallDirection = delta.Unit == delta.Unit and delta.Unit or Vector3.zero root.Velocity *= Vector3.new(1, 0, 1) rayCheck.FilterDescendantsInstances = {gameCamera, lplr.Character} rayCheck.CollisionGroup = root.CollisionGroup local ray = workspace:Raycast(root.Position, AntiFallDirection, rayCheck) if ray then for _ = 1, 10 do local dpos = roundPos(ray.Position + ray.Normal * 1.5) + Vector3.new(0, 3, 0) if not getPlacedBlock(dpos) then top = Vector3.new(top.X, pos.Y, top.Z) break end end end root.CFrame += Vector3.new(0, top.Y - root.Position.Y, 0) if not frictionTable.Speed then root.AssemblyLinearVelocity = (AntiFallDirection * getSpeed()) + Vector3.new(0, root.AssemblyLinearVelocity.Y, 0) end if delta.Magnitude < 1 then connection:Disconnect() AntiFallDirection = nil end else connection:Disconnect() AntiFallDirection = nil end end) AntiFall:Clean(connection) end elseif Mode.Value == 'Velocity' then entitylib.character.RootPart.Velocity = Vector3.new(entitylib.character.RootPart.Velocity.X, 100, entitylib.character.RootPart.Velocity.Z) end end end)) end else AntiFallDirection = nil end end, Tooltip = 'Help\'s you with your Parkinson\'s\nPrevents you from falling into the void.' }) Mode = AntiFall:CreateDropdown({ Name = 'Move Mode', List = {'Normal', 'Collide', 'Velocity'}, Function = function(val) if AntiFallPart then AntiFallPart.CanCollide = val == 'Collide' end end, Tooltip = 'Normal - Smoothly moves you towards the nearest safe point\nVelocity - Launches you upward after touching\nCollide - Allows you to walk on the part' }) local materials = {'ForceField'} for _, v in Enum.Material:GetEnumItems() do if v.Name ~= 'ForceField' then table.insert(materials, v.Name) end end Material = AntiFall:CreateDropdown({ Name = 'Material', List = materials, Function = function(val) if AntiFallPart then AntiFallPart.Material = Enum.Material[val] end end }) Color = AntiFall:CreateColorSlider({ Name = 'Color', DefaultOpacity = 0.5, Function = function(h, s, v, o) if AntiFallPart then AntiFallPart.Color = Color3.fromHSV(h, s, v) AntiFallPart.Transparency = 1 - o end end }) end) run(function() local FastBreak local Time FastBreak = vape.Categories.Blatant:CreateModule({ Name = 'FastBreak', Function = function(callback) if callback then repeat bedwars.BlockBreakController.blockBreaker:setCooldown(Time.Value) task.wait(0.1) until not FastBreak.Enabled else bedwars.BlockBreakController.blockBreaker:setCooldown(0.3) end end, Tooltip = 'Decreases block hit cooldown' }) Time = FastBreak:CreateSlider({ Name = 'Break speed', Min = 0, Max = 0.3, Default = 0.25, Decimal = 100, Suffix = 'seconds' }) end) local Fly local LongJump run(function() local Value local VerticalValue local WallCheck local PopBalloons local TP local rayCheck = RaycastParams.new() rayCheck.RespectCanCollide = true local up, down, old = 0, 0 Fly = vape.Categories.Blatant:CreateModule({ Name = 'Fly', Function = function(callback) frictionTable.Fly = callback or nil updateVelocity() if callback then up, down, old = 0, 0, bedwars.BalloonController.deflateBalloon bedwars.BalloonController.deflateBalloon = function() end local tpTick, tpToggle, oldy = tick(), true if lplr.Character and (lplr.Character:GetAttribute('InflatedBalloons') or 0) == 0 and getItem('balloon') then bedwars.BalloonController:inflateBalloon() end Fly:Clean(vapeEvents.AttributeChanged.Event:Connect(function(changed) if changed == 'InflatedBalloons' and (lplr.Character:GetAttribute('InflatedBalloons') or 0) == 0 and getItem('balloon') then bedwars.BalloonController:inflateBalloon() end end)) Fly:Clean(runService.PreSimulation:Connect(function(dt) if entitylib.isAlive and not InfiniteFly.Enabled and isnetworkowner(entitylib.character.RootPart) then local flyAllowed = (lplr.Character:GetAttribute('InflatedBalloons') and lplr.Character:GetAttribute('InflatedBalloons') > 0) or store.matchState == 2 local mass = (1.5 + (flyAllowed and 6 or 0) * (tick() % 0.4 < 0.2 and -1 or 1)) + ((up + down) * VerticalValue.Value) local root, moveDirection = entitylib.character.RootPart, entitylib.character.Humanoid.MoveDirection local velo = getSpeed() local destination = (moveDirection * math.max(Value.Value - velo, 0) * dt) rayCheck.FilterDescendantsInstances = {lplr.Character, gameCamera, AntiFallPart} rayCheck.CollisionGroup = root.CollisionGroup if WallCheck.Enabled then local ray = workspace:Raycast(root.Position, destination, rayCheck) if ray then destination = ((ray.Position + ray.Normal) - root.Position) end end if not flyAllowed then if tpToggle then local airleft = (tick() - entitylib.character.AirTime) if airleft > 2 then if not oldy then local ray = workspace:Raycast(root.Position, Vector3.new(0, -1000, 0), rayCheck) if ray and TP.Enabled then tpToggle = false oldy = root.Position.Y tpTick = tick() + 0.11 root.CFrame = CFrame.lookAlong(Vector3.new(root.Position.X, ray.Position.Y + entitylib.character.HipHeight, root.Position.Z), root.CFrame.LookVector) end end end else if oldy then if tpTick < tick() then local newpos = Vector3.new(root.Position.X, oldy, root.Position.Z) root.CFrame = CFrame.lookAlong(newpos, root.CFrame.LookVector) tpToggle = true oldy = nil else mass = 0 end end end end root.CFrame += destination root.AssemblyLinearVelocity = (moveDirection * velo) + Vector3.new(0, mass, 0) end end)) Fly:Clean(inputService.InputBegan:Connect(function(input) if not inputService:GetFocusedTextBox() then if input.KeyCode == Enum.KeyCode.Space or input.KeyCode == Enum.KeyCode.ButtonA then up = 1 elseif input.KeyCode == Enum.KeyCode.LeftShift or input.KeyCode == Enum.KeyCode.ButtonL2 then down = -1 end end end)) Fly:Clean(inputService.InputEnded:Connect(function(input) if input.KeyCode == Enum.KeyCode.Space or input.KeyCode == Enum.KeyCode.ButtonA then up = 0 elseif input.KeyCode == Enum.KeyCode.LeftShift or input.KeyCode == Enum.KeyCode.ButtonL2 then down = 0 end end)) if inputService.TouchEnabled then pcall(function() local jumpButton = lplr.PlayerGui.TouchGui.TouchControlFrame.JumpButton Fly:Clean(jumpButton:GetPropertyChangedSignal('ImageRectOffset'):Connect(function() up = jumpButton.ImageRectOffset.X == 146 and 1 or 0 end)) end) end else bedwars.BalloonController.deflateBalloon = old if PopBalloons.Enabled and entitylib.isAlive and (lplr.Character:GetAttribute('InflatedBalloons') or 0) > 0 then for _ = 1, 3 do bedwars.BalloonController:deflateBalloon() end end end end, ExtraText = function() return 'Heatseeker' end, Tooltip = 'Makes you go zoom.' }) Value = Fly:CreateSlider({ Name = 'Speed', Min = 1, Max = 23, Default = 23, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) VerticalValue = Fly:CreateSlider({ Name = 'Vertical Speed', Min = 1, Max = 150, Default = 50, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) WallCheck = Fly:CreateToggle({ Name = 'Wall Check', Default = true }) PopBalloons = Fly:CreateToggle({ Name = 'Pop Balloons', Default = true }) TP = Fly:CreateToggle({ Name = 'TP Down', Default = true }) end) run(function() local Mode local Expand local objects, set = {} local function createHitbox(ent) if ent.Targetable and ent.Player then local hitbox = Instance.new('Part') hitbox.Size = Vector3.new(3, 6, 3) + Vector3.one * (Expand.Value / 5) hitbox.Position = ent.RootPart.Position hitbox.CanCollide = false hitbox.Massless = true hitbox.Transparency = 1 hitbox.Parent = ent.Character local weld = Instance.new('Motor6D') weld.Part0 = hitbox weld.Part1 = ent.RootPart weld.Parent = hitbox objects[ent] = hitbox end end HitBoxes = vape.Categories.Blatant:CreateModule({ Name = 'HitBoxes', Function = function(callback) if callback then if Mode.Value == 'Sword' then debug.setconstant(bedwars.SwordController.swingSwordInRegion, 6, (Expand.Value / 3)) set = true else HitBoxes:Clean(entitylib.Events.EntityAdded:Connect(createHitbox)) HitBoxes:Clean(entitylib.Events.EntityRemoving:Connect(function(ent) if objects[ent] then objects[ent]:Destroy() objects[ent] = nil end end)) for _, ent in entitylib.List do createHitbox(ent) end end else if set then debug.setconstant(bedwars.SwordController.swingSwordInRegion, 6, 3.8) set = nil end for _, part in objects do part:Destroy() end table.clear(objects) end end, Tooltip = 'Expands attack hitbox' }) Mode = HitBoxes:CreateDropdown({ Name = 'Mode', List = {'Sword', 'Player'}, Function = function() if HitBoxes.Enabled then HitBoxes:Toggle() HitBoxes:Toggle() end end, Tooltip = 'Sword - Increases the range around you to hit entities\nPlayer - Increases the players hitbox' }) Expand = HitBoxes:CreateSlider({ Name = 'Expand amount', Min = 0, Max = 14.4, Default = 14.4, Decimal = 10, Function = function(val) if HitBoxes.Enabled then if Mode.Value == 'Sword' then debug.setconstant(bedwars.SwordController.swingSwordInRegion, 6, (val / 3)) else for _, part in objects do part.Size = Vector3.new(3, 6, 3) + Vector3.one * (val / 5) end end end end, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) end) run(function() vape.Categories.Blatant:CreateModule({ Name = 'KeepSprint', Function = function(callback) debug.setconstant(bedwars.SprintController.startSprinting, 5, callback and 'blockSprinting' or 'blockSprint') bedwars.SprintController:stopSprinting() end, Tooltip = 'Lets you sprint with a speed potion.' }) end) local Attacking run(function() local Killaura local Targets local Sort local SwingRange local AttackRange local ChargeTime local UpdateRate local AngleSlider local MaxTargets local Mouse local Swing local GUI local BoxSwingColor local BoxAttackColor local ParticleTexture local ParticleColor1 local ParticleColor2 local ParticleSize local Face local Animation local AnimationMode local AnimationSpeed local AnimationTween local Limit local LegitAura local Particles, Boxes = {}, {} local anims, AnimDelay, AnimTween, armC0 = vape.Libraries.auraanims, tick() local AttackRemote = {FireServer = function() end} task.spawn(function() AttackRemote = bedwars.Client:Get(remotes.AttackEntity).instance end) local function getAttackData() if Mouse.Enabled then if not inputService:IsMouseButtonPressed(0) then return false end end if GUI.Enabled then if bedwars.AppController:isLayerOpen(bedwars.UILayers.MAIN) then return false end end local sword = Limit.Enabled and store.hand or store.tools.sword if not sword or not sword.tool then return false end local meta = bedwars.ItemMeta[sword.tool.Name] if Limit.Enabled then if store.hand.toolType ~= 'sword' or bedwars.DaoController.chargingMaid then return false end end if LegitAura.Enabled then if (tick() - bedwars.SwordController.lastSwing) > 0.2 then return false end end return sword, meta end Killaura = vape.Categories.Blatant:CreateModule({ Name = 'Killaura', Function = function(callback) if callback then if inputService.TouchEnabled then pcall(function() lplr.PlayerGui.MobileUI['2'].Visible = Limit.Enabled end) end if Animation.Enabled and not (identifyexecutor and table.find({'Argon', 'Delta'}, ({identifyexecutor()})[1])) then local fake = { Controllers = { ViewmodelController = { isVisible = function() return not Attacking end, playAnimation = function(...) if not Attacking then bedwars.ViewmodelController:playAnimation(select(2, ...)) end end } } } debug.setupvalue(oldSwing or bedwars.SwordController.playSwordEffect, 6, fake) debug.setupvalue(bedwars.ScytheController.playLocalAnimation, 3, fake) task.spawn(function() local started = false repeat if Attacking then if not armC0 then armC0 = gameCamera.Viewmodel.RightHand.RightWrist.C0 end local first = not started started = true if AnimationMode.Value == 'Random' then anims.Random = {{CFrame = CFrame.Angles(math.rad(math.random(1, 360)), math.rad(math.random(1, 360)), math.rad(math.random(1, 360))), Time = 0.12}} end for _, v in anims[AnimationMode.Value] do AnimTween = tweenService:Create(gameCamera.Viewmodel.RightHand.RightWrist, TweenInfo.new(first and (AnimationTween.Enabled and 0.001 or 0.1) or v.Time / AnimationSpeed.Value, Enum.EasingStyle.Linear), { C0 = armC0 * v.CFrame }) AnimTween:Play() AnimTween.Completed:Wait() first = false if (not Killaura.Enabled) or (not Attacking) then break end end elseif started then started = false AnimTween = tweenService:Create(gameCamera.Viewmodel.RightHand.RightWrist, TweenInfo.new(AnimationTween.Enabled and 0.001 or 0.3, Enum.EasingStyle.Exponential), { C0 = armC0 }) AnimTween:Play() end if not started then task.wait(1 / UpdateRate.Value) end until (not Killaura.Enabled) or (not Animation.Enabled) end) end repeat local attacked, sword, meta = {}, getAttackData() Attacking = false store.KillauraTarget = nil if sword then local plrs = entitylib.AllPosition({ Range = SwingRange.Value, Wallcheck = Targets.Walls.Enabled or nil, Part = 'RootPart', Players = Targets.Players.Enabled, NPCs = Targets.NPCs.Enabled, Limit = MaxTargets.Value, Sort = sortmethods[Sort.Value] }) if #plrs > 0 then switchItem(sword.tool, 0) local selfpos = entitylib.character.RootPart.Position local localfacing = entitylib.character.RootPart.CFrame.LookVector * Vector3.new(1, 0, 1) for _, v in plrs do local delta = (v.RootPart.Position - selfpos) local angle = math.acos(localfacing:Dot((delta * Vector3.new(1, 0, 1)).Unit)) if angle > (math.rad(AngleSlider.Value) / 2) then continue end table.insert(attacked, { Entity = v, Check = delta.Magnitude > AttackRange.Value and BoxSwingColor or BoxAttackColor }) targetinfo.Targets[v] = tick() + 1 if not Attacking then Attacking = true store.KillauraTarget = v if not Swing.Enabled and AnimDelay < tick() and not LegitAura.Enabled then AnimDelay = tick() + (meta.sword.respectAttackSpeedForEffects and meta.sword.attackSpeed or 0.11) bedwars.SwordController:playSwordEffect(meta, false) if meta.displayName:find(' Scythe') then bedwars.ScytheController:playLocalAnimation() end if vape.ThreadFix then setthreadidentity(8) end end end if delta.Magnitude > AttackRange.Value then continue end local actualRoot = v.Character.PrimaryPart if actualRoot then local dir = CFrame.lookAt(selfpos, actualRoot.Position).LookVector local pos = selfpos + dir * math.max(delta.Magnitude - 14.399, 0) bedwars.SwordController.lastAttack = workspace:GetServerTimeNow() store.attackReach = (delta.Magnitude * 100) // 1 / 100 store.attackReachUpdate = tick() + 1 AttackRemote:FireServer({ weapon = sword.tool, chargedAttack = {chargeRatio = 0}, entityInstance = v.Character, validate = { raycast = { cameraPosition = {value = pos}, cursorDirection = {value = dir} }, targetPosition = {value = actualRoot.Position}, selfPosition = {value = pos} } }) end end end end for i, v in Boxes do v.Adornee = attacked[i] and attacked[i].Entity.RootPart or nil if v.Adornee then v.Color3 = Color3.fromHSV(attacked[i].Check.Hue, attacked[i].Check.Sat, attacked[i].Check.Value) v.Transparency = 1 - attacked[i].Check.Opacity end end for i, v in Particles do v.Position = attacked[i] and attacked[i].Entity.RootPart.Position or Vector3.new(9e9, 9e9, 9e9) v.Parent = attacked[i] and gameCamera or nil end if Face.Enabled and attacked[1] then local vec = attacked[1].Entity.RootPart.Position * Vector3.new(1, 0, 1) entitylib.character.RootPart.CFrame = CFrame.lookAt(entitylib.character.RootPart.Position, Vector3.new(vec.X, entitylib.character.RootPart.Position.Y + 0.001, vec.Z)) end task.wait(#attacked > 0 and #attacked * 0.02 or 1 / UpdateRate.Value) until not Killaura.Enabled else store.KillauraTarget = nil for _, v in Boxes do v.Adornee = nil end for _, v in Particles do v.Parent = nil end if inputService.TouchEnabled then pcall(function() lplr.PlayerGui.MobileUI['2'].Visible = true end) end debug.setupvalue(oldSwing or bedwars.SwordController.playSwordEffect, 6, bedwars.Knit) debug.setupvalue(bedwars.ScytheController.playLocalAnimation, 3, bedwars.Knit) Attacking = false if armC0 then AnimTween = tweenService:Create(gameCamera.Viewmodel.RightHand.RightWrist, TweenInfo.new(AnimationTween.Enabled and 0.001 or 0.3, Enum.EasingStyle.Exponential), { C0 = armC0 }) AnimTween:Play() end end end, Tooltip = 'Attack players around you\nwithout aiming at them.' }) Targets = Killaura:CreateTargets({ Players = true, NPCs = true }) local methods = {'Damage', 'Distance'} for i in sortmethods do if not table.find(methods, i) then table.insert(methods, i) end end SwingRange = Killaura:CreateSlider({ Name = 'Swing range', Min = 1, Max = 28, Default = 28, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) AttackRange = Killaura:CreateSlider({ Name = 'Attack range', Min = 1, Max = 28, Default = 28, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) AngleSlider = Killaura:CreateSlider({ Name = 'Max angle', Min = 1, Max = 360, Default = 360 }) UpdateRate = Killaura:CreateSlider({ Name = 'Update rate', Min = 1, Max = 120, Default = 60, Suffix = 'hz' }) MaxTargets = Killaura:CreateSlider({ Name = 'Max targets', Min = 1, Max = 5, Default = 5 }) Sort = Killaura:CreateDropdown({ Name = 'Target Mode', List = methods }) Mouse = Killaura:CreateToggle({Name = 'Require mouse down'}) Swing = Killaura:CreateToggle({Name = 'No Swing'}) GUI = Killaura:CreateToggle({Name = 'GUI check'}) Killaura:CreateToggle({ Name = 'Show target', Function = function(callback) BoxSwingColor.Object.Visible = callback BoxAttackColor.Object.Visible = callback if callback then for i = 1, 10 do local box = Instance.new('BoxHandleAdornment') box.Adornee = nil box.AlwaysOnTop = true box.Size = Vector3.new(3, 5, 3) box.CFrame = CFrame.new(0, -0.5, 0) box.ZIndex = 0 box.Parent = vape.gui Boxes[i] = box end else for _, v in Boxes do v:Destroy() end table.clear(Boxes) end end }) BoxSwingColor = Killaura:CreateColorSlider({ Name = 'Target Color', Darker = true, DefaultHue = 0.6, DefaultOpacity = 0.5, Visible = false }) BoxAttackColor = Killaura:CreateColorSlider({ Name = 'Attack Color', Darker = true, DefaultOpacity = 0.5, Visible = false }) Killaura:CreateToggle({ Name = 'Target particles', Function = function(callback) ParticleTexture.Object.Visible = callback ParticleColor1.Object.Visible = callback ParticleColor2.Object.Visible = callback ParticleSize.Object.Visible = callback if callback then for i = 1, 10 do local part = Instance.new('Part') part.Size = Vector3.new(2, 4, 2) part.Anchored = true part.CanCollide = false part.Transparency = 1 part.CanQuery = false part.Parent = Killaura.Enabled and gameCamera or nil local particles = Instance.new('ParticleEmitter') particles.Brightness = 1.5 particles.Size = NumberSequence.new(ParticleSize.Value) particles.Shape = Enum.ParticleEmitterShape.Sphere particles.Texture = ParticleTexture.Value particles.Transparency = NumberSequence.new(0) particles.Lifetime = NumberRange.new(0.4) particles.Speed = NumberRange.new(16) particles.Rate = 128 particles.Drag = 16 particles.ShapePartial = 1 particles.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(ParticleColor1.Hue, ParticleColor1.Sat, ParticleColor1.Value)), ColorSequenceKeypoint.new(1, Color3.fromHSV(ParticleColor2.Hue, ParticleColor2.Sat, ParticleColor2.Value)) }) particles.Parent = part Particles[i] = part end else for _, v in Particles do v:Destroy() end table.clear(Particles) end end }) ParticleTexture = Killaura:CreateTextBox({ Name = 'Texture', Default = 'rbxassetid://14736249347', Function = function() for _, v in Particles do v.ParticleEmitter.Texture = ParticleTexture.Value end end, Darker = true, Visible = false }) ParticleColor1 = Killaura:CreateColorSlider({ Name = 'Color Begin', Function = function(hue, sat, val) for _, v in Particles do v.ParticleEmitter.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(hue, sat, val)), ColorSequenceKeypoint.new(1, Color3.fromHSV(ParticleColor2.Hue, ParticleColor2.Sat, ParticleColor2.Value)) }) end end, Darker = true, Visible = false }) ParticleColor2 = Killaura:CreateColorSlider({ Name = 'Color End', Function = function(hue, sat, val) for _, v in Particles do v.ParticleEmitter.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(ParticleColor1.Hue, ParticleColor1.Sat, ParticleColor1.Value)), ColorSequenceKeypoint.new(1, Color3.fromHSV(hue, sat, val)) }) end end, Darker = true, Visible = false }) ParticleSize = Killaura:CreateSlider({ Name = 'Size', Min = 0, Max = 1, Default = 0.2, Decimal = 100, Function = function(val) for _, v in Particles do v.ParticleEmitter.Size = NumberSequence.new(val) end end, Darker = true, Visible = false }) Face = Killaura:CreateToggle({Name = 'Face target'}) Animation = Killaura:CreateToggle({ Name = 'Custom Animation', Function = function(callback) AnimationMode.Object.Visible = callback AnimationTween.Object.Visible = callback AnimationSpeed.Object.Visible = callback if Killaura.Enabled then Killaura:Toggle() Killaura:Toggle() end end }) local animnames = {} for i in anims do table.insert(animnames, i) end AnimationMode = Killaura:CreateDropdown({ Name = 'Animation Mode', List = animnames, Darker = true, Visible = false }) AnimationSpeed = Killaura:CreateSlider({ Name = 'Animation Speed', Min = 0, Max = 2, Default = 1, Decimal = 10, Darker = true, Visible = false }) AnimationTween = Killaura:CreateToggle({ Name = 'No Tween', Darker = true, Visible = false }) Limit = Killaura:CreateToggle({ Name = 'Limit to items', Function = function(callback) if inputService.TouchEnabled and Killaura.Enabled then pcall(function() lplr.PlayerGui.MobileUI['2'].Visible = callback end) end end, Tooltip = 'Only attacks when the sword is held' }) LegitAura = Killaura:CreateToggle({ Name = 'Swing only', Tooltip = 'Only attacks while swinging manually' }) end) run(function() local Value local CameraDir local start local JumpTick, JumpSpeed, Direction = tick(), 0 local projectileRemote = {InvokeServer = function() end} task.spawn(function() projectileRemote = bedwars.Client:Get(remotes.FireProjectile).instance end) local function launchProjectile(item, pos, proj, speed, dir) if not pos then return end pos = pos - dir * 0.1 local shootPosition = (CFrame.lookAlong(pos, Vector3.new(0, -speed, 0)) * CFrame.new(Vector3.new(-bedwars.BowConstantsTable.RelX, -bedwars.BowConstantsTable.RelY, -bedwars.BowConstantsTable.RelZ))) switchItem(item.tool, 0) task.wait(0.1) bedwars.ProjectileController:createLocalProjectile(bedwars.ProjectileMeta[proj], proj, proj, shootPosition.Position, '', shootPosition.LookVector * speed, {drawDurationSeconds = 1}) if projectileRemote:InvokeServer(item.tool, proj, proj, shootPosition.Position, pos, shootPosition.LookVector * speed, httpService:GenerateGUID(true), {drawDurationSeconds = 1}, workspace:GetServerTimeNow() - 0.045) then local shoot = bedwars.ItemMeta[item.itemType].projectileSource.launchSound shoot = shoot and shoot[math.random(1, #shoot)] or nil if shoot then bedwars.SoundManager:playSound(shoot) end end end local LongJumpMethods = { cannon = function(_, pos, dir) pos = pos - Vector3.new(0, (entitylib.character.HipHeight + (entitylib.character.RootPart.Size.Y / 2)) - 3, 0) local rounded = Vector3.new(math.round(pos.X / 3) * 3, math.round(pos.Y / 3) * 3, math.round(pos.Z / 3) * 3) bedwars.placeBlock(rounded, 'cannon', false) task.delay(0, function() local block, blockpos = getPlacedBlock(rounded) if block and block.Name == 'cannon' and (entitylib.character.RootPart.Position - block.Position).Magnitude < 20 then local breaktype = bedwars.ItemMeta[block.Name].block.breakType local tool = store.tools[breaktype] if tool then switchItem(tool.tool) end bedwars.Client:Get(remotes.CannonAim):SendToServer({ cannonBlockPos = blockpos, lookVector = dir }) local broken = 0.1 if bedwars.BlockController:calculateBlockDamage(lplr, {blockPosition = blockpos}) < block:GetAttribute('Health') then broken = 0.4 bedwars.breakBlock(block, true, true) end task.delay(broken, function() for _ = 1, 3 do local call = bedwars.Client:Get(remotes.CannonLaunch):CallServer({cannonBlockPos = blockpos}) if call then bedwars.breakBlock(block, true, true) JumpSpeed = 5.25 * Value.Value JumpTick = tick() + 2.3 Direction = Vector3.new(dir.X, 0, dir.Z).Unit break end task.wait(0.1) end end) end end) end, cat = function(_, _, dir) LongJump:Clean(vapeEvents.CatPounce.Event:Connect(function() JumpSpeed = 4 * Value.Value JumpTick = tick() + 2.5 Direction = Vector3.new(dir.X, 0, dir.Z).Unit entitylib.character.RootPart.Velocity = Vector3.zero end)) if not bedwars.AbilityController:canUseAbility('CAT_POUNCE') then repeat task.wait() until bedwars.AbilityController:canUseAbility('CAT_POUNCE') or not LongJump.Enabled end if bedwars.AbilityController:canUseAbility('CAT_POUNCE') and LongJump.Enabled then bedwars.AbilityController:useAbility('CAT_POUNCE') end end, fireball = function(item, pos, dir) launchProjectile(item, pos, 'fireball', 60, dir) end, grappling_hook = function(item, pos, dir) launchProjectile(item, pos, 'grappling_hook_projectile', 140, dir) end, jade_hammer = function(item, _, dir) if not bedwars.AbilityController:canUseAbility(item.itemType..'_jump') then repeat task.wait() until bedwars.AbilityController:canUseAbility(item.itemType..'_jump') or not LongJump.Enabled end if bedwars.AbilityController:canUseAbility(item.itemType..'_jump') and LongJump.Enabled then bedwars.AbilityController:useAbility(item.itemType..'_jump') JumpSpeed = 1.4 * Value.Value JumpTick = tick() + 2.5 Direction = Vector3.new(dir.X, 0, dir.Z).Unit end end, tnt = function(item, pos, dir) pos = pos - Vector3.new(0, (entitylib.character.HipHeight + (entitylib.character.RootPart.Size.Y / 2)) - 3, 0) local rounded = Vector3.new(math.round(pos.X / 3) * 3, math.round(pos.Y / 3) * 3, math.round(pos.Z / 3) * 3) start = Vector3.new(rounded.X, start.Y, rounded.Z) + (dir * (item.itemType == 'pirate_gunpowder_barrel' and 2.6 or 0.2)) bedwars.placeBlock(rounded, item.itemType, false) end, wood_dao = function(item, pos, dir) if (lplr.Character:GetAttribute('CanDashNext') or 0) > workspace:GetServerTimeNow() or not bedwars.AbilityController:canUseAbility('dash') then repeat task.wait() until (lplr.Character:GetAttribute('CanDashNext') or 0) < workspace:GetServerTimeNow() and bedwars.AbilityController:canUseAbility('dash') or not LongJump.Enabled end if LongJump.Enabled then bedwars.SwordController.lastAttack = workspace:GetServerTimeNow() switchItem(item.tool, 0.1) replicatedStorage['events-@easy-games/game-core:shared/game-core-networking@getEvents.Events'].useAbility:FireServer('dash', { direction = dir, origin = pos, weapon = item.itemType }) JumpSpeed = 4.5 * Value.Value JumpTick = tick() + 2.4 Direction = Vector3.new(dir.X, 0, dir.Z).Unit end end } for _, v in {'stone_dao', 'iron_dao', 'diamond_dao', 'emerald_dao'} do LongJumpMethods[v] = LongJumpMethods.wood_dao end LongJumpMethods.void_axe = LongJumpMethods.jade_hammer LongJumpMethods.siege_tnt = LongJumpMethods.tnt LongJumpMethods.pirate_gunpowder_barrel = LongJumpMethods.tnt LongJump = vape.Categories.Blatant:CreateModule({ Name = 'LongJump', Function = function(callback) frictionTable.LongJump = callback or nil updateVelocity() if callback then LongJump:Clean(vapeEvents.EntityDamageEvent.Event:Connect(function(damageTable) if damageTable.entityInstance == lplr.Character and damageTable.fromEntity == lplr.Character and (not damageTable.knockbackMultiplier or not damageTable.knockbackMultiplier.disabled) then local knockbackBoost = bedwars.KnockbackUtil.calculateKnockbackVelocity(Vector3.one, 1, { vertical = 0, horizontal = (damageTable.knockbackMultiplier and damageTable.knockbackMultiplier.horizontal or 1) }).Magnitude * 1.1 if knockbackBoost >= JumpSpeed then local pos = damageTable.fromPosition and Vector3.new(damageTable.fromPosition.X, damageTable.fromPosition.Y, damageTable.fromPosition.Z) or damageTable.fromEntity and damageTable.fromEntity.PrimaryPart.Position if not pos then return end local vec = (entitylib.character.RootPart.Position - pos) JumpSpeed = knockbackBoost JumpTick = tick() + 2.5 Direction = Vector3.new(vec.X, 0, vec.Z).Unit end end end)) LongJump:Clean(vapeEvents.GrapplingHookFunctions.Event:Connect(function(dataTable) if dataTable.hookFunction == 'PLAYER_IN_TRANSIT' then local vec = entitylib.character.RootPart.CFrame.LookVector JumpSpeed = 2.5 * Value.Value JumpTick = tick() + 2.5 Direction = Vector3.new(vec.X, 0, vec.Z).Unit end end)) start = entitylib.isAlive and entitylib.character.RootPart.Position or nil LongJump:Clean(runService.PreSimulation:Connect(function(dt) local root = entitylib.isAlive and entitylib.character.RootPart or nil if root and isnetworkowner(root) then if JumpTick > tick() then root.AssemblyLinearVelocity = Direction * (getSpeed() + ((JumpTick - tick()) > 1.1 and JumpSpeed or 0)) + Vector3.new(0, root.AssemblyLinearVelocity.Y, 0) if entitylib.character.Humanoid.FloorMaterial == Enum.Material.Air and not start then root.AssemblyLinearVelocity += Vector3.new(0, dt * (workspace.Gravity - 23), 0) else root.AssemblyLinearVelocity = Vector3.new(root.AssemblyLinearVelocity.X, 15, root.AssemblyLinearVelocity.Z) end start = nil else if start then root.CFrame = CFrame.lookAlong(start, root.CFrame.LookVector) end root.AssemblyLinearVelocity = Vector3.zero JumpSpeed = 0 end else start = nil end end)) if store.hand and LongJumpMethods[store.hand.tool.Name] then task.spawn(LongJumpMethods[store.hand.tool.Name], getItem(store.hand.tool.Name), start, (CameraDir.Enabled and gameCamera or entitylib.character.RootPart).CFrame.LookVector) return end for i, v in LongJumpMethods do local item = getItem(i) if item or store.equippedKit == i then task.spawn(v, item, start, (CameraDir.Enabled and gameCamera or entitylib.character.RootPart).CFrame.LookVector) break end end else JumpTick = tick() Direction = nil JumpSpeed = 0 end end, ExtraText = function() return 'Heatseeker' end, Tooltip = 'Lets you jump farther' }) Value = LongJump:CreateSlider({ Name = 'Speed', Min = 1, Max = 37, Default = 37, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) CameraDir = LongJump:CreateToggle({ Name = 'Camera Direction' }) end) run(function() local NoFall local Mode local rayParams = RaycastParams.new() local groundHit task.spawn(function() groundHit = bedwars.Client:Get(remotes.GroundHit).instance end) NoFall = vape.Categories.Blatant:CreateModule({ Name = 'NoFall', Function = function(callback) if callback then local tracked = 0 if Mode.Value == 'Gravity' then local extraGravity = 0 NoFall:Clean(runService.PreSimulation:Connect(function(dt) if entitylib.isAlive then local root = entitylib.character.RootPart if root.AssemblyLinearVelocity.Y < -85 then rayParams.FilterDescendantsInstances = {lplr.Character, gameCamera} rayParams.CollisionGroup = root.CollisionGroup local rootSize = root.Size.Y / 2 + entitylib.character.HipHeight local ray = workspace:Blockcast(root.CFrame, Vector3.new(3, 3, 3), Vector3.new(0, (tracked * 0.1) - rootSize, 0), rayParams) if not ray then root.AssemblyLinearVelocity = Vector3.new(root.AssemblyLinearVelocity.X, -86, root.AssemblyLinearVelocity.Z) root.CFrame += Vector3.new(0, extraGravity * dt, 0) extraGravity += -workspace.Gravity * dt end else extraGravity = 0 end end end)) else repeat if entitylib.isAlive then local root = entitylib.character.RootPart tracked = entitylib.character.Humanoid.FloorMaterial == Enum.Material.Air and math.min(tracked, root.AssemblyLinearVelocity.Y) or 0 if tracked < -85 then if Mode.Value == 'Packet' then groundHit:FireServer(nil, Vector3.new(0, tracked, 0), workspace:GetServerTimeNow()) else rayParams.FilterDescendantsInstances = {lplr.Character, gameCamera} rayParams.CollisionGroup = root.CollisionGroup local rootSize = root.Size.Y / 2 + entitylib.character.HipHeight if Mode.Value == 'Teleport' then local ray = workspace:Blockcast(root.CFrame, Vector3.new(3, 3, 3), Vector3.new(0, -1000, 0), rayParams) if ray then root.CFrame -= Vector3.new(0, root.Position.Y - (ray.Position.Y + rootSize), 0) end else local ray = workspace:Blockcast(root.CFrame, Vector3.new(3, 3, 3), Vector3.new(0, (tracked * 0.1) - rootSize, 0), rayParams) if ray then tracked = 0 root.AssemblyLinearVelocity = Vector3.new(root.AssemblyLinearVelocity.X, -80, root.AssemblyLinearVelocity.Z) end end end end end task.wait(0.03) until not NoFall.Enabled end end end, Tooltip = 'Prevents taking fall damage.' }) Mode = NoFall:CreateDropdown({ Name = 'Mode', List = {'Packet', 'Gravity', 'Teleport', 'Bounce'}, Function = function() if NoFall.Enabled then NoFall:Toggle() NoFall:Toggle() end end }) end) run(function() local old vape.Categories.Blatant:CreateModule({ Name = 'NoSlowdown', Function = function(callback) local modifier = bedwars.SprintController:getMovementStatusModifier() if callback then old = modifier.addModifier modifier.addModifier = function(self, tab) if tab.moveSpeedMultiplier then tab.moveSpeedMultiplier = math.max(tab.moveSpeedMultiplier, 1) end return old(self, tab) end for i in modifier.modifiers do if (i.moveSpeedMultiplier or 1) < 1 then modifier:removeModifier(i) end end else modifier.addModifier = old old = nil end end, Tooltip = 'Prevents slowing down when using items.' }) end) run(function() local TargetPart local Targets local FOV local OtherProjectiles local rayCheck = RaycastParams.new() rayCheck.FilterType = Enum.RaycastFilterType.Include rayCheck.FilterDescendantsInstances = {workspace:FindFirstChild('Map')} local old local ProjectileAimbot = vape.Categories.Blatant:CreateModule({ Name = 'ProjectileAimbot', Function = function(callback) if callback then old = bedwars.ProjectileController.calculateImportantLaunchValues bedwars.ProjectileController.calculateImportantLaunchValues = function(...) local self, projmeta, worldmeta, origin, shootpos = ... local plr = entitylib.EntityMouse({ Part = 'RootPart', Range = FOV.Value, Players = Targets.Players.Enabled, NPCs = Targets.NPCs.Enabled, Wallcheck = Targets.Walls.Enabled, Origin = entitylib.isAlive and (shootpos or entitylib.character.RootPart.Position) or Vector3.zero }) if plr then local pos = shootpos or self:getLaunchPosition(origin) if not pos then return old(...) end if (not OtherProjectiles.Enabled) and not projmeta.projectile:find('arrow') then return old(...) end local meta = projmeta:getProjectileMeta() local lifetime = (worldmeta and meta.predictionLifetimeSec or meta.lifetimeSec or 3) local gravity = (meta.gravitationalAcceleration or 196.2) * projmeta.gravityMultiplier local projSpeed = (meta.launchVelocity or 100) local offsetpos = pos + (projmeta.projectile == 'owl_projectile' and Vector3.zero or projmeta.fromPositionOffset) local balloons = plr.Character:GetAttribute('InflatedBalloons') local playerGravity = workspace.Gravity if balloons and balloons > 0 then playerGravity = (workspace.Gravity * (1 - ((balloons >= 4 and 1.2 or balloons >= 3 and 1 or 0.975)))) end if plr.Character.PrimaryPart:FindFirstChild('rbxassetid://8200754399') then playerGravity = 6 end if plr.Player:GetAttribute('IsOwlTarget') then for _, owl in collectionService:GetTagged('Owl') do if owl:GetAttribute('Target') == plr.Player.UserId and owl:GetAttribute('Status') == 2 then playerGravity = 0 end end end local newlook = CFrame.new(offsetpos, plr[TargetPart.Value].Position) * CFrame.new(projmeta.projectile == 'owl_projectile' and Vector3.zero or Vector3.new(bedwars.BowConstantsTable.RelX, bedwars.BowConstantsTable.RelY, bedwars.BowConstantsTable.RelZ)) local calc = prediction.SolveTrajectory(newlook.p, projSpeed, gravity, plr[TargetPart.Value].Position, projmeta.projectile == 'telepearl' and Vector3.zero or plr[TargetPart.Value].Velocity, playerGravity, plr.HipHeight, plr.Jumping and 42.6 or nil, rayCheck) if calc then targetinfo.Targets[plr] = tick() + 1 return { initialVelocity = CFrame.new(newlook.Position, calc).LookVector * projSpeed, positionFrom = offsetpos, deltaT = lifetime, gravitationalAcceleration = gravity, drawDurationSeconds = 5 } end end return old(...) end else bedwars.ProjectileController.calculateImportantLaunchValues = old end end, Tooltip = 'Silently adjusts your aim towards the enemy' }) Targets = ProjectileAimbot:CreateTargets({ Players = true, Walls = true }) TargetPart = ProjectileAimbot:CreateDropdown({ Name = 'Part', List = {'RootPart', 'Head'} }) FOV = ProjectileAimbot:CreateSlider({ Name = 'FOV', Min = 1, Max = 1000, Default = 1000 }) OtherProjectiles = ProjectileAimbot:CreateToggle({ Name = 'Other Projectiles', Default = true }) end) run(function() local ProjectileAura local Targets local Range local List local rayCheck = RaycastParams.new() rayCheck.FilterType = Enum.RaycastFilterType.Include local projectileRemote = {InvokeServer = function() end} local FireDelays = {} task.spawn(function() projectileRemote = bedwars.Client:Get(remotes.FireProjectile).instance end) local function getAmmo(check) for _, item in store.inventory.inventory.items do if check.ammoItemTypes and table.find(check.ammoItemTypes, item.itemType) then return item.itemType end end end local function getProjectiles() local items = {} for _, item in store.inventory.inventory.items do local proj = bedwars.ItemMeta[item.itemType].projectileSource local ammo = proj and getAmmo(proj) if ammo and table.find(List.ListEnabled, ammo) then table.insert(items, { item, ammo, proj.projectileType(ammo), proj }) end end return items end ProjectileAura = vape.Categories.Blatant:CreateModule({ Name = 'ProjectileAura', Function = function(callback) if callback then repeat if (workspace:GetServerTimeNow() - bedwars.SwordController.lastAttack) > 0.5 then local ent = entitylib.EntityPosition({ Part = 'RootPart', Range = Range.Value, Players = Targets.Players.Enabled, NPCs = Targets.NPCs.Enabled, Wallcheck = Targets.Walls.Enabled }) if ent then local pos = entitylib.character.RootPart.Position for _, data in getProjectiles() do local item, ammo, projectile, itemMeta = unpack(data) if (FireDelays[item.itemType] or 0) < tick() then rayCheck.FilterDescendantsInstances = {workspace.Map} local meta = bedwars.ProjectileMeta[projectile] local projSpeed, gravity = meta.launchVelocity, meta.gravitationalAcceleration or 196.2 local calc = prediction.SolveTrajectory(pos, projSpeed, gravity, ent.RootPart.Position, ent.RootPart.Velocity, workspace.Gravity, ent.HipHeight, ent.Jumping and 42.6 or nil, rayCheck) if calc then targetinfo.Targets[ent] = tick() + 1 local switched = switchItem(item.tool) task.spawn(function() local dir, id = CFrame.lookAt(pos, calc).LookVector, httpService:GenerateGUID(true) local shootPosition = (CFrame.new(pos, calc) * CFrame.new(Vector3.new(-bedwars.BowConstantsTable.RelX, -bedwars.BowConstantsTable.RelY, -bedwars.BowConstantsTable.RelZ))).Position bedwars.ProjectileController:createLocalProjectile(meta, ammo, projectile, shootPosition, id, dir * projSpeed, {drawDurationSeconds = 1}) local res = projectileRemote:InvokeServer(item.tool, ammo, projectile, shootPosition, pos, dir * projSpeed, id, {drawDurationSeconds = 1, shotId = httpService:GenerateGUID(false)}, workspace:GetServerTimeNow() - 0.045) if not res then FireDelays[item.itemType] = tick() else local shoot = itemMeta.launchSound shoot = shoot and shoot[math.random(1, #shoot)] or nil if shoot then bedwars.SoundManager:playSound(shoot) end end end) FireDelays[item.itemType] = tick() + itemMeta.fireDelaySec if switched then task.wait(0.05) end end end end end end task.wait(0.1) until not ProjectileAura.Enabled end end, Tooltip = 'Shoots people around you' }) Targets = ProjectileAura:CreateTargets({ Players = true, Walls = true }) List = ProjectileAura:CreateTextList({ Name = 'Projectiles', Default = {'arrow', 'snowball'} }) Range = ProjectileAura:CreateSlider({ Name = 'Range', Min = 1, Max = 50, Default = 50, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) end) run(function() local Speed local Value local WallCheck local AutoJump local AlwaysJump local rayCheck = RaycastParams.new() rayCheck.RespectCanCollide = true Speed = vape.Categories.Blatant:CreateModule({ Name = 'Speed', Function = function(callback) frictionTable.Speed = callback or nil updateVelocity() pcall(function() debug.setconstant(bedwars.WindWalkerController.updateSpeed, 7, callback and 'constantSpeedMultiplier' or 'moveSpeedMultiplier') end) if callback then Speed:Clean(runService.PreSimulation:Connect(function(dt) bedwars.StatefulEntityKnockbackController.lastImpulseTime = callback and math.huge or time() if entitylib.isAlive and not Fly.Enabled and not InfiniteFly.Enabled and not LongJump.Enabled and isnetworkowner(entitylib.character.RootPart) then local state = entitylib.character.Humanoid:GetState() if state == Enum.HumanoidStateType.Climbing then return end local root, velo = entitylib.character.RootPart, getSpeed() local moveDirection = AntiFallDirection or entitylib.character.Humanoid.MoveDirection local destination = (moveDirection * math.max(Value.Value - velo, 0) * dt) if WallCheck.Enabled then rayCheck.FilterDescendantsInstances = {lplr.Character, gameCamera} rayCheck.CollisionGroup = root.CollisionGroup local ray = workspace:Raycast(root.Position, destination, rayCheck) if ray then destination = ((ray.Position + ray.Normal) - root.Position) end end root.CFrame += destination root.AssemblyLinearVelocity = (moveDirection * velo) + Vector3.new(0, root.AssemblyLinearVelocity.Y, 0) if AutoJump.Enabled and (state == Enum.HumanoidStateType.Running or state == Enum.HumanoidStateType.Landed) and moveDirection ~= Vector3.zero and (Attacking or AlwaysJump.Enabled) then entitylib.character.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping) end end end)) end end, ExtraText = function() return 'Heatseeker' end, Tooltip = 'Increases your movement with various methods.' }) Value = Speed:CreateSlider({ Name = 'Speed', Min = 1, Max = 23, Default = 23, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) WallCheck = Speed:CreateToggle({ Name = 'Wall Check', Default = true }) AutoJump = Speed:CreateToggle({ Name = 'AutoJump', Function = function(callback) AlwaysJump.Object.Visible = callback end }) AlwaysJump = Speed:CreateToggle({ Name = 'Always Jump', Visible = false, Darker = true }) end) run(function() local BedESP local Reference = {} local Folder = Instance.new('Folder') Folder.Parent = vape.gui local function Added(bed) if not BedESP.Enabled then return end local BedFolder = Instance.new('Folder') BedFolder.Parent = Folder Reference[bed] = BedFolder local parts = bed:GetChildren() table.sort(parts, function(a, b) return a.Name > b.Name end) for _, part in parts do if part:IsA('BasePart') and part.Name ~= 'Blanket' then local handle = Instance.new('BoxHandleAdornment') handle.Size = part.Size + Vector3.new(.01, .01, .01) handle.AlwaysOnTop = true handle.ZIndex = 2 handle.Visible = true handle.Adornee = part handle.Color3 = part.Color if part.Name == 'Legs' then handle.Color3 = Color3.fromRGB(167, 112, 64) handle.Size = part.Size + Vector3.new(.01, -1, .01) handle.CFrame = CFrame.new(0, -0.4, 0) handle.ZIndex = 0 end handle.Parent = BedFolder end end table.clear(parts) end BedESP = vape.Categories.Render:CreateModule({ Name = 'BedESP', Function = function(callback) if callback then BedESP:Clean(collectionService:GetInstanceAddedSignal('bed'):Connect(function(bed) task.delay(0.2, Added, bed) end)) BedESP:Clean(collectionService:GetInstanceRemovedSignal('bed'):Connect(function(bed) if Reference[bed] then Reference[bed]:Destroy() Reference[bed] = nil end end)) for _, bed in collectionService:GetTagged('bed') do Added(bed) end else Folder:ClearAllChildren() table.clear(Reference) end end, Tooltip = 'Render Beds through walls' }) end) run(function() local Health Health = vape.Categories.Render:CreateModule({ Name = 'Health', Function = function(callback) if callback then local label = Instance.new('TextLabel') label.Size = UDim2.fromOffset(100, 20) label.Position = UDim2.new(0.5, 6, 0.5, 30) label.BackgroundTransparency = 1 label.AnchorPoint = Vector2.new(0.5, 0) label.Text = entitylib.isAlive and math.round(lplr.Character:GetAttribute('Health'))..' ❤️' or '' label.TextColor3 = entitylib.isAlive and Color3.fromHSV((lplr.Character:GetAttribute('Health') / lplr.Character:GetAttribute('MaxHealth')) / 2.8, 0.86, 1) or Color3.new() label.TextSize = 18 label.Font = Enum.Font.Arial label.Parent = vape.gui Health:Clean(label) Health:Clean(vapeEvents.AttributeChanged.Event:Connect(function() label.Text = entitylib.isAlive and math.round(lplr.Character:GetAttribute('Health'))..' ❤️' or '' label.TextColor3 = entitylib.isAlive and Color3.fromHSV((lplr.Character:GetAttribute('Health') / lplr.Character:GetAttribute('MaxHealth')) / 2.8, 0.86, 1) or Color3.new() end)) end end, Tooltip = 'Displays your health in the center of your screen.' }) end) run(function() local KitESP local Background local Color = {} local Reference = {} local Folder = Instance.new('Folder') Folder.Parent = vape.gui local ESPKits = { alchemist = {'alchemist_ingedients', 'wild_flower'}, beekeeper = {'bee', 'bee'}, bigman = {'treeOrb', 'natures_essence_1'}, ghost_catcher = {'ghost', 'ghost_orb'}, metal_detector = {'hidden-metal', 'iron'}, sheep_herder = {'SheepModel', 'purple_hay_bale'}, sorcerer = {'alchemy_crystal', 'wild_flower'}, star_collector = {'stars', 'crit_star'} } local function Added(v, icon) local billboard = Instance.new('BillboardGui') billboard.Parent = Folder billboard.Name = icon billboard.StudsOffsetWorldSpace = Vector3.new(0, 3, 0) billboard.Size = UDim2.fromOffset(36, 36) billboard.AlwaysOnTop = true billboard.ClipsDescendants = false billboard.Adornee = v local blur = addBlur(billboard) blur.Visible = Background.Enabled local image = Instance.new('ImageLabel') image.Size = UDim2.fromOffset(36, 36) image.Position = UDim2.fromScale(0.5, 0.5) image.AnchorPoint = Vector2.new(0.5, 0.5) image.BackgroundColor3 = Color3.fromHSV(Color.Hue, Color.Sat, Color.Value) image.BackgroundTransparency = 1 - (Background.Enabled and Color.Opacity or 0) image.BorderSizePixel = 0 image.Image = bedwars.getIcon({itemType = icon}, true) image.Parent = billboard local uicorner = Instance.new('UICorner') uicorner.CornerRadius = UDim.new(0, 4) uicorner.Parent = image Reference[v] = billboard end local function addKit(tag, icon) KitESP:Clean(collectionService:GetInstanceAddedSignal(tag):Connect(function(v) Added(v.PrimaryPart, icon) end)) KitESP:Clean(collectionService:GetInstanceRemovedSignal(tag):Connect(function(v) if Reference[v.PrimaryPart] then Reference[v.PrimaryPart]:Destroy() Reference[v.PrimaryPart] = nil end end)) for _, v in collectionService:GetTagged(tag) do Added(v.PrimaryPart, icon) end end KitESP = vape.Categories.Render:CreateModule({ Name = 'KitESP', Function = function(callback) if callback then repeat task.wait() until store.equippedKit ~= '' or (not KitESP.Enabled) local kit = KitESP.Enabled and ESPKits[store.equippedKit] or nil if kit then addKit(kit[1], kit[2]) end else Folder:ClearAllChildren() table.clear(Reference) end end, Tooltip = 'ESP for certain kit related objects' }) Background = KitESP:CreateToggle({ Name = 'Background', Function = function(callback) if Color.Object then Color.Object.Visible = callback end for _, v in Reference do v.ImageLabel.BackgroundTransparency = 1 - (callback and Color.Opacity or 0) v.Blur.Visible = callback end end, Default = true }) Color = KitESP:CreateColorSlider({ Name = 'Background Color', DefaultValue = 0, DefaultOpacity = 0.5, Function = function(hue, sat, val, opacity) for _, v in Reference do v.ImageLabel.BackgroundColor3 = Color3.fromHSV(hue, sat, val) v.ImageLabel.BackgroundTransparency = 1 - opacity end end, Darker = true }) end) run(function() local NameTags local Targets local Color local Background local DisplayName local Health local Distance local Equipment local DrawingToggle local Scale local FontOption local Teammates local DistanceCheck local DistanceLimit local Strings, Sizes, Reference = {}, {}, {} local Folder = Instance.new('Folder') Folder.Parent = vape.gui local methodused local Added = { Normal = function(ent) if not Targets.Players.Enabled and ent.Player then return end if not Targets.NPCs.Enabled and ent.NPC then return end if Teammates.Enabled and (not ent.Targetable) and (not ent.Friend) then return end local nametag = Instance.new('TextLabel') Strings[ent] = ent.Player and whitelist:tag(ent.Player, true, true)..(DisplayName.Enabled and ent.Player.DisplayName or ent.Player.Name) or ent.Character.Name if Health.Enabled then local healthColor = Color3.fromHSV(math.clamp(ent.Health / ent.MaxHealth, 0, 1) / 2.5, 0.89, 0.75) Strings[ent] = Strings[ent]..' '..math.round(ent.Health)..'' end if Distance.Enabled then Strings[ent] = '[%s] '..Strings[ent] end if Equipment.Enabled then for i, v in {'Hand', 'Helmet', 'Chestplate', 'Boots', 'Kit'} do local Icon = Instance.new('ImageLabel') Icon.Name = v Icon.Size = UDim2.fromOffset(30, 30) Icon.Position = UDim2.fromOffset(-60 + (i * 30), -30) Icon.BackgroundTransparency = 1 Icon.Image = '' Icon.Parent = nametag end end nametag.TextSize = 14 * Scale.Value nametag.FontFace = FontOption.Value local size = getfontsize(removeTags(Strings[ent]), nametag.TextSize, nametag.FontFace, Vector2.new(100000, 100000)) nametag.Name = ent.Player and ent.Player.Name or ent.Character.Name nametag.Size = UDim2.fromOffset(size.X + 8, size.Y + 7) nametag.AnchorPoint = Vector2.new(0.5, 1) nametag.BackgroundColor3 = Color3.new() nametag.BackgroundTransparency = Background.Value nametag.BorderSizePixel = 0 nametag.Visible = false nametag.Text = Strings[ent] nametag.TextColor3 = entitylib.getEntityColor(ent) or Color3.fromHSV(Color.Hue, Color.Sat, Color.Value) nametag.RichText = true nametag.Parent = Folder Reference[ent] = nametag end, Drawing = function(ent) if not Targets.Players.Enabled and ent.Player then return end if not Targets.NPCs.Enabled and ent.NPC then return end if Teammates.Enabled and (not ent.Targetable) and (not ent.Friend) then return end local nametag = {} nametag.BG = Drawing.new('Square') nametag.BG.Filled = true nametag.BG.Transparency = 1 - Background.Value nametag.BG.Color = Color3.new() nametag.BG.ZIndex = 1 nametag.Text = Drawing.new('Text') nametag.Text.Size = 15 * Scale.Value nametag.Text.Font = 0 nametag.Text.ZIndex = 2 Strings[ent] = ent.Player and whitelist:tag(ent.Player, true)..(DisplayName.Enabled and ent.Player.DisplayName or ent.Player.Name) or ent.Character.Name if Health.Enabled then Strings[ent] = Strings[ent]..' '..math.round(ent.Health) end if Distance.Enabled then Strings[ent] = '[%s] '..Strings[ent] end nametag.Text.Text = Strings[ent] nametag.Text.Color = entitylib.getEntityColor(ent) or Color3.fromHSV(Color.Hue, Color.Sat, Color.Value) nametag.BG.Size = Vector2.new(nametag.Text.TextBounds.X + 8, nametag.Text.TextBounds.Y + 7) Reference[ent] = nametag end } local Removed = { Normal = function(ent) local v = Reference[ent] if v then Reference[ent] = nil Strings[ent] = nil Sizes[ent] = nil v:Destroy() end end, Drawing = function(ent) local v = Reference[ent] if v then Reference[ent] = nil Strings[ent] = nil Sizes[ent] = nil for _, obj in v do pcall(function() obj.Visible = false obj:Remove() end) end end end } local Updated = { Normal = function(ent) local nametag = Reference[ent] if nametag then Sizes[ent] = nil Strings[ent] = ent.Player and whitelist:tag(ent.Player, true, true)..(DisplayName.Enabled and ent.Player.DisplayName or ent.Player.Name) or ent.Character.Name if Health.Enabled then local healthColor = Color3.fromHSV(math.clamp(ent.Health / ent.MaxHealth, 0, 1) / 2.5, 0.89, 0.75) Strings[ent] = Strings[ent]..' '..math.round(ent.Health)..'' end if Distance.Enabled then Strings[ent] = '[%s] '..Strings[ent] end if Equipment.Enabled and store.inventories[ent.Player] then local kit = ent.Player:GetAttribute('PlayingAsKit') local inventory = store.inventories[ent.Player] nametag.Hand.Image = bedwars.getIcon(inventory.hand or {itemType = ''}, true) nametag.Helmet.Image = bedwars.getIcon(inventory.armor[4] or {itemType = ''}, true) nametag.Chestplate.Image = bedwars.getIcon(inventory.armor[5] or {itemType = ''}, true) nametag.Boots.Image = bedwars.getIcon(inventory.armor[6] or {itemType = ''}, true) nametag.Kit.Image = kit and kit ~= 'none' and bedwars.BedwarsKitMeta[kit].renderImage or '' end local size = getfontsize(removeTags(Strings[ent]), nametag.TextSize, nametag.FontFace, Vector2.new(100000, 100000)) nametag.Size = UDim2.fromOffset(size.X + 8, size.Y + 7) nametag.Text = Strings[ent] end end, Drawing = function(ent) local nametag = Reference[ent] if nametag then if vape.ThreadFix then setthreadidentity(8) end Sizes[ent] = nil Strings[ent] = ent.Player and whitelist:tag(ent.Player, true)..(DisplayName.Enabled and ent.Player.DisplayName or ent.Player.Name) or ent.Character.Name if Health.Enabled then Strings[ent] = Strings[ent]..' '..math.round(ent.Health) end if Distance.Enabled then Strings[ent] = '[%s] '..Strings[ent] nametag.Text.Text = entitylib.isAlive and string.format(Strings[ent], math.floor((entitylib.character.RootPart.Position - ent.RootPart.Position).Magnitude)) or Strings[ent] else nametag.Text.Text = Strings[ent] end nametag.BG.Size = Vector2.new(nametag.Text.TextBounds.X + 8, nametag.Text.TextBounds.Y + 7) nametag.Text.Color = entitylib.getEntityColor(ent) or Color3.fromHSV(Color.Hue, Color.Sat, Color.Value) end end } local ColorFunc = { Normal = function(hue, sat, val) local color = Color3.fromHSV(hue, sat, val) for i, v in Reference do v.TextColor3 = entitylib.getEntityColor(i) or color end end, Drawing = function(hue, sat, val) local color = Color3.fromHSV(hue, sat, val) for i, v in Reference do v.Text.Color = entitylib.getEntityColor(i) or color end end } local Loop = { Normal = function() for ent, nametag in Reference do if DistanceCheck.Enabled then local distance = entitylib.isAlive and (entitylib.character.RootPart.Position - ent.RootPart.Position).Magnitude or math.huge if distance < DistanceLimit.ValueMin or distance > DistanceLimit.ValueMax then nametag.Visible = false continue end end local headPos, headVis = gameCamera:WorldToViewportPoint(ent.RootPart.Position + Vector3.new(0, ent.HipHeight + 1, 0)) nametag.Visible = headVis if not headVis then continue end if Distance.Enabled then local mag = entitylib.isAlive and math.floor((entitylib.character.RootPart.Position - ent.RootPart.Position).Magnitude) or 0 if Sizes[ent] ~= mag then nametag.Text = string.format(Strings[ent], mag) local ize = getfontsize(removeTags(nametag.Text), nametag.TextSize, nametag.FontFace, Vector2.new(100000, 100000)) nametag.Size = UDim2.fromOffset(ize.X + 8, ize.Y + 7) Sizes[ent] = mag end end nametag.Position = UDim2.fromOffset(headPos.X, headPos.Y) end end, Drawing = function() for ent, nametag in Reference do if DistanceCheck.Enabled then local distance = entitylib.isAlive and (entitylib.character.RootPart.Position - ent.RootPart.Position).Magnitude or math.huge if distance < DistanceLimit.ValueMin or distance > DistanceLimit.ValueMax then nametag.Text.Visible = false nametag.BG.Visible = false continue end end local headPos, headVis = gameCamera:WorldToViewportPoint(ent.RootPart.Position + Vector3.new(0, ent.HipHeight + 1, 0)) nametag.Text.Visible = headVis nametag.BG.Visible = headVis if not headVis then continue end if Distance.Enabled then local mag = entitylib.isAlive and math.floor((entitylib.character.RootPart.Position - ent.RootPart.Position).Magnitude) or 0 if Sizes[ent] ~= mag then nametag.Text.Text = string.format(Strings[ent], mag) nametag.BG.Size = Vector2.new(nametag.Text.TextBounds.X + 8, nametag.Text.TextBounds.Y + 7) Sizes[ent] = mag end end nametag.BG.Position = Vector2.new(headPos.X - (nametag.BG.Size.X / 2), headPos.Y - nametag.BG.Size.Y) nametag.Text.Position = nametag.BG.Position + Vector2.new(4, 3) end end } NameTags = vape.Categories.Render:CreateModule({ Name = 'NameTags', Function = function(callback) if callback then methodused = DrawingToggle.Enabled and 'Drawing' or 'Normal' if Removed[methodused] then NameTags:Clean(entitylib.Events.EntityRemoved:Connect(Removed[methodused])) end if Added[methodused] then for _, v in entitylib.List do if Reference[v] then Removed[methodused](v) end Added[methodused](v) end NameTags:Clean(entitylib.Events.EntityAdded:Connect(function(ent) if Reference[ent] then Removed[methodused](ent) end Added[methodused](ent) end)) end if Updated[methodused] then NameTags:Clean(entitylib.Events.EntityUpdated:Connect(Updated[methodused])) for _, v in entitylib.List do Updated[methodused](v) end end if ColorFunc[methodused] then NameTags:Clean(vape.Categories.Friends.ColorUpdate.Event:Connect(function() ColorFunc[methodused](Color.Hue, Color.Sat, Color.Value) end)) end if Loop[methodused] then NameTags:Clean(runService.RenderStepped:Connect(Loop[methodused])) end else if Removed[methodused] then for i in Reference do Removed[methodused](i) end end end end, Tooltip = 'Renders nametags on entities through walls.' }) Targets = NameTags:CreateTargets({ Players = true, Function = function() if NameTags.Enabled then NameTags:Toggle() NameTags:Toggle() end end }) FontOption = NameTags:CreateFont({ Name = 'Font', Blacklist = 'Arial', Function = function() if NameTags.Enabled then NameTags:Toggle() NameTags:Toggle() end end }) Color = NameTags:CreateColorSlider({ Name = 'Player Color', Function = function(hue, sat, val) if NameTags.Enabled and ColorFunc[methodused] then ColorFunc[methodused](hue, sat, val) end end }) Scale = NameTags:CreateSlider({ Name = 'Scale', Function = function() if NameTags.Enabled then NameTags:Toggle() NameTags:Toggle() end end, Default = 1, Min = 0.1, Max = 1.5, Decimal = 10 }) Background = NameTags:CreateSlider({ Name = 'Transparency', Function = function() if NameTags.Enabled then NameTags:Toggle() NameTags:Toggle() end end, Default = 0.5, Min = 0, Max = 1, Decimal = 10 }) Health = NameTags:CreateToggle({ Name = 'Health', Function = function() if NameTags.Enabled then NameTags:Toggle() NameTags:Toggle() end end }) Distance = NameTags:CreateToggle({ Name = 'Distance', Function = function() if NameTags.Enabled then NameTags:Toggle() NameTags:Toggle() end end }) Equipment = NameTags:CreateToggle({ Name = 'Equipment', Function = function() if NameTags.Enabled then NameTags:Toggle() NameTags:Toggle() end end }) DisplayName = NameTags:CreateToggle({ Name = 'Use Displayname', Function = function() if NameTags.Enabled then NameTags:Toggle() NameTags:Toggle() end end, Default = true }) Teammates = NameTags:CreateToggle({ Name = 'Priority Only', Function = function() if NameTags.Enabled then NameTags:Toggle() NameTags:Toggle() end end, Default = true }) DrawingToggle = NameTags:CreateToggle({ Name = 'Drawing', Function = function() if NameTags.Enabled then NameTags:Toggle() NameTags:Toggle() end end, }) DistanceCheck = NameTags:CreateToggle({ Name = 'Distance Check', Function = function(callback) DistanceLimit.Object.Visible = callback end }) DistanceLimit = NameTags:CreateTwoSlider({ Name = 'Player Distance', Min = 0, Max = 256, DefaultMin = 0, DefaultMax = 64, Darker = true, Visible = false }) end) run(function() local StorageESP local List local Background local Color = {} local Reference = {} local Folder = Instance.new('Folder') Folder.Parent = vape.gui local function nearStorageItem(item) for _, v in List.ListEnabled do if item:find(v) then return v end end end local function refreshAdornee(v) local chest = v.Adornee:FindFirstChild('ChestFolderValue') chest = chest and chest.Value or nil if not chest then v.Enabled = false return end local chestitems = chest and chest:GetChildren() or {} for _, obj in v.Frame:GetChildren() do if obj:IsA('ImageLabel') and obj.Name ~= 'Blur' then obj:Destroy() end end v.Enabled = false local alreadygot = {} for _, item in chestitems do if not alreadygot[item.Name] and (table.find(List.ListEnabled, item.Name) or nearStorageItem(item.Name)) then alreadygot[item.Name] = true v.Enabled = true local blockimage = Instance.new('ImageLabel') blockimage.Size = UDim2.fromOffset(32, 32) blockimage.BackgroundTransparency = 1 blockimage.Image = bedwars.getIcon({itemType = item.Name}, true) blockimage.Parent = v.Frame end end table.clear(chestitems) end local function Added(v) local chest = v:WaitForChild('ChestFolderValue', 3) if not (chest and StorageESP.Enabled) then return end chest = chest.Value local billboard = Instance.new('BillboardGui') billboard.Parent = Folder billboard.Name = 'chest' billboard.StudsOffsetWorldSpace = Vector3.new(0, 3, 0) billboard.Size = UDim2.fromOffset(36, 36) billboard.AlwaysOnTop = true billboard.ClipsDescendants = false billboard.Adornee = v local blur = addBlur(billboard) blur.Visible = Background.Enabled local frame = Instance.new('Frame') frame.Size = UDim2.fromScale(1, 1) frame.BackgroundColor3 = Color3.fromHSV(Color.Hue, Color.Sat, Color.Value) frame.BackgroundTransparency = 1 - (Background.Enabled and Color.Opacity or 0) frame.Parent = billboard local layout = Instance.new('UIListLayout') layout.FillDirection = Enum.FillDirection.Horizontal layout.Padding = UDim.new(0, 4) layout.VerticalAlignment = Enum.VerticalAlignment.Center layout.HorizontalAlignment = Enum.HorizontalAlignment.Center layout:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() billboard.Size = UDim2.fromOffset(math.max(layout.AbsoluteContentSize.X + 4, 36), 36) end) layout.Parent = frame local corner = Instance.new('UICorner') corner.CornerRadius = UDim.new(0, 4) corner.Parent = frame Reference[v] = billboard StorageESP:Clean(chest.ChildAdded:Connect(function(item) if table.find(List.ListEnabled, item.Name) or nearStorageItem(item.Name) then refreshAdornee(billboard) end end)) StorageESP:Clean(chest.ChildRemoved:Connect(function(item) if table.find(List.ListEnabled, item.Name) or nearStorageItem(item.Name) then refreshAdornee(billboard) end end)) task.spawn(refreshAdornee, billboard) end StorageESP = vape.Categories.Render:CreateModule({ Name = 'StorageESP', Function = function(callback) if callback then StorageESP:Clean(collectionService:GetInstanceAddedSignal('chest'):Connect(Added)) for _, v in collectionService:GetTagged('chest') do task.spawn(Added, v) end else table.clear(Reference) Folder:ClearAllChildren() end end, Tooltip = 'Displays items in chests' }) List = StorageESP:CreateTextList({ Name = 'Item', Function = function() for _, v in Reference do task.spawn(refreshAdornee, v) end end }) Background = StorageESP:CreateToggle({ Name = 'Background', Function = function(callback) if Color.Object then Color.Object.Visible = callback end for _, v in Reference do v.Frame.BackgroundTransparency = 1 - (callback and Color.Opacity or 0) v.Blur.Visible = callback end end, Default = true }) Color = StorageESP:CreateColorSlider({ Name = 'Background Color', DefaultValue = 0, DefaultOpacity = 0.5, Function = function(hue, sat, val, opacity) for _, v in Reference do v.Frame.BackgroundColor3 = Color3.fromHSV(hue, sat, val) v.Frame.BackgroundTransparency = 1 - opacity end end, Darker = true }) end) run(function() local AutoBalloon AutoBalloon = vape.Categories.Utility:CreateModule({ Name = 'AutoBalloon', Function = function(callback) if callback then repeat task.wait() until store.matchState ~= 0 or (not AutoBalloon.Enabled) if not AutoBalloon.Enabled then return end local lowestpoint = math.huge for _, v in store.blocks do local point = (v.Position.Y - (v.Size.Y / 2)) - 50 if point < lowestpoint then lowestpoint = point end end repeat if entitylib.isAlive then if entitylib.character.RootPart.Position.Y < lowestpoint and (lplr.Character:GetAttribute('InflatedBalloons') or 0) < 3 then local balloon = getItem('balloon') if balloon then for _ = 1, 3 do bedwars.BalloonController:inflateBalloon() end end task.wait(0.1) end end task.wait(0.1) until not AutoBalloon.Enabled end end, Tooltip = 'Inflates when you fall into the void' }) end) run(function() local AutoKit local Legit local Toggles = {} local function kitCollection(id, func, range, specific) local objs = type(id) == 'table' and id or collection(id, AutoKit) repeat if entitylib.isAlive then local localPosition = entitylib.character.RootPart.Position for _, v in objs do if InfiniteFly.Enabled or not AutoKit.Enabled then break end local part = not v:IsA('Model') and v or v.PrimaryPart if part and (part.Position - localPosition).Magnitude <= (not Legit.Enabled and specific and math.huge or range) then func(v) end end end task.wait(0.1) until not AutoKit.Enabled end local AutoKitFunctions = { battery = function() repeat if entitylib.isAlive then local localPosition = entitylib.character.RootPart.Position for i, v in bedwars.BatteryEffectsController.liveBatteries do if (v.position - localPosition).Magnitude <= 10 then local BatteryInfo = bedwars.BatteryEffectsController:getBatteryInfo(i) if not BatteryInfo or BatteryInfo.activateTime >= workspace:GetServerTimeNow() or BatteryInfo.consumeTime + 0.1 >= workspace:GetServerTimeNow() then continue end BatteryInfo.consumeTime = workspace:GetServerTimeNow() bedwars.Client:Get(remotes.ConsumeBattery):SendToServer({batteryId = i}) end end end task.wait(0.1) until not AutoKit.Enabled end, beekeeper = function() kitCollection('bee', function(v) bedwars.Client:Get(remotes.BeePickup):SendToServer({beeId = v:GetAttribute('BeeId')}) end, 18, false) end, bigman = function() kitCollection('treeOrb', function(v) if bedwars.Client:Get(remotes.ConsumeTreeOrb):CallServer({treeOrbSecret = v:GetAttribute('TreeOrbSecret')}) then v:Destroy() end end, 12, false) end, block_kicker = function() local old = bedwars.BlockKickerKitController.getKickBlockProjectileOriginPosition bedwars.BlockKickerKitController.getKickBlockProjectileOriginPosition = function(...) local origin, dir = select(2, ...) local plr = entitylib.EntityMouse({ Part = 'RootPart', Range = 1000, Origin = origin, Players = true, Wallcheck = true }) if plr then local calc = prediction.SolveTrajectory(origin, 100, 20, plr.RootPart.Position, plr.RootPart.Velocity, workspace.Gravity, plr.HipHeight, plr.Jumping and 42.6 or nil) if calc then for i, v in debug.getstack(2) do if v == dir then debug.setstack(2, i, CFrame.lookAt(origin, calc).LookVector) end end end end return old(...) end AutoKit:Clean(function() bedwars.BlockKickerKitController.getKickBlockProjectileOriginPosition = old end) end, cat = function() local old = bedwars.CatController.leap bedwars.CatController.leap = function(...) vapeEvents.CatPounce:Fire() return old(...) end AutoKit:Clean(function() bedwars.CatController.leap = old end) end, davey = function() local old = bedwars.CannonHandController.launchSelf bedwars.CannonHandController.launchSelf = function(...) local res = {old(...)} local self, block = ... if block:GetAttribute('PlacedByUserId') == lplr.UserId and (block.Position - entitylib.character.RootPart.Position).Magnitude < 30 then task.spawn(bedwars.breakBlock, block, false, nil, true) end return unpack(res) end AutoKit:Clean(function() bedwars.CannonHandController.launchSelf = old end) end, dragon_slayer = function() kitCollection('KaliyahPunchInteraction', function(v) bedwars.DragonSlayerController:deleteEmblem(v) bedwars.DragonSlayerController:playPunchAnimation(Vector3.zero) bedwars.Client:Get(remotes.KaliyahPunch):SendToServer({ target = v }) end, 18, true) end, farmer_cletus = function() kitCollection('HarvestableCrop', function(v) if bedwars.Client:Get(remotes.HarvestCrop):CallServer({position = bedwars.BlockController:getBlockPosition(v.Position)}) then bedwars.GameAnimationUtil:playAnimation(lplr.Character, bedwars.AnimationType.PUNCH) bedwars.SoundManager:playSound(bedwars.SoundList.CROP_HARVEST) end end, 10, false) end, fisherman = function() local old = bedwars.FishingMinigameController.startMinigame bedwars.FishingMinigameController.startMinigame = function(_, _, result) result({win = true}) end AutoKit:Clean(function() bedwars.FishingMinigameController.startMinigame = old end) end, gingerbread_man = function() local old = bedwars.LaunchPadController.attemptLaunch bedwars.LaunchPadController.attemptLaunch = function(...) local res = {old(...)} local self, block = ... if (workspace:GetServerTimeNow() - self.lastLaunch) < 0.4 then if block:GetAttribute('PlacedByUserId') == lplr.UserId and (block.Position - entitylib.character.RootPart.Position).Magnitude < 30 then task.spawn(bedwars.breakBlock, block, false, nil, true) end end return unpack(res) end AutoKit:Clean(function() bedwars.LaunchPadController.attemptLaunch = old end) end, hannah = function() kitCollection('HannahExecuteInteraction', function(v) local billboard = bedwars.Client:Get(remotes.HannahKill):CallServer({ user = lplr, victimEntity = v }) and v:FindFirstChild('Hannah Execution Icon') if billboard then billboard:Destroy() end end, 30, true) end, jailor = function() kitCollection('jailor_soul', function(v) bedwars.JailorController:collectEntity(lplr, v, 'JailorSoul') end, 20, false) end, grim_reaper = function() kitCollection(bedwars.GrimReaperController.soulsByPosition, function(v) if entitylib.isAlive and lplr.Character:GetAttribute('Health') <= (lplr.Character:GetAttribute('MaxHealth') / 4) and (not lplr.Character:GetAttribute('GrimReaperChannel')) then bedwars.Client:Get(remotes.ConsumeSoul):CallServer({ secret = v:GetAttribute('GrimReaperSoulSecret') }) end end, 120, false) end, melody = function() repeat local mag, hp, ent = 30, math.huge if entitylib.isAlive then local localPosition = entitylib.character.RootPart.Position for _, v in entitylib.List do if v.Player and v.Player:GetAttribute('Team') == lplr:GetAttribute('Team') then local newmag = (localPosition - v.RootPart.Position).Magnitude if newmag <= mag and v.Health < hp and v.Health < v.MaxHealth then mag, hp, ent = newmag, v.Health, v end end end end if ent and getItem('guitar') then bedwars.Client:Get(remotes.GuitarHeal):SendToServer({ healTarget = ent.Character }) end task.wait(0.1) until not AutoKit.Enabled end, metal_detector = function() kitCollection('hidden-metal', function(v) bedwars.Client:Get(remotes.PickupMetal):SendToServer({ id = v:GetAttribute('Id') }) end, 20, false) end, miner = function() kitCollection('petrified-player', function(v) bedwars.Client:Get(remotes.MinerDig):SendToServer({ petrifyId = v:GetAttribute('PetrifyId') }) end, 6, true) end, pinata = function() kitCollection(lplr.Name..':pinata', function(v) if getItem('candy') then bedwars.Client:Get(remotes.DepositPinata):CallServer(v) end end, 6, true) end, spirit_assassin = function() kitCollection('EvelynnSoul', function(v) bedwars.SpiritAssassinController:useSpirit(lplr, v) end, 120, true) end, star_collector = function() kitCollection('stars', function(v) bedwars.StarCollectorController:collectEntity(lplr, v, v.Name) end, 20, false) end, summoner = function() repeat local plr = entitylib.EntityPosition({ Range = 31, Part = 'RootPart', Players = true, Sort = sortmethods.Health }) if plr and (not Legit.Enabled or (lplr.Character:GetAttribute('Health') or 0) > 0) then local localPosition = entitylib.character.RootPart.Position local shootDir = CFrame.lookAt(localPosition, plr.RootPart.Position).LookVector localPosition += shootDir * math.max((localPosition - plr.RootPart.Position).Magnitude - 16, 0) bedwars.Client:Get(remotes.SummonerClawAttack):SendToServer({ position = localPosition, direction = shootDir, clientTime = workspace:GetServerTimeNow() }) end task.wait(0.1) until not AutoKit.Enabled end, void_dragon = function() local oldflap = bedwars.VoidDragonController.flapWings local flapped bedwars.VoidDragonController.flapWings = function(self) if not flapped and bedwars.Client:Get(remotes.DragonFly):CallServer() then local modifier = bedwars.SprintController:getMovementStatusModifier():addModifier({ blockSprint = true, constantSpeedMultiplier = 2 }) self.SpeedMaid:GiveTask(modifier) self.SpeedMaid:GiveTask(function() flapped = false end) flapped = true end end AutoKit:Clean(function() bedwars.VoidDragonController.flapWings = oldflap end) repeat if bedwars.VoidDragonController.inDragonForm then local plr = entitylib.EntityPosition({ Range = 30, Part = 'RootPart', Players = true }) if plr then bedwars.Client:Get(remotes.DragonBreath):SendToServer({ player = lplr, targetPoint = plr.RootPart.Position }) end end task.wait(0.1) until not AutoKit.Enabled end, warlock = function() local lastTarget repeat if store.hand.tool and store.hand.tool.Name == 'warlock_staff' then local plr = entitylib.EntityPosition({ Range = 30, Part = 'RootPart', Players = true, NPCs = true }) if plr and plr.Character ~= lastTarget then if not bedwars.Client:Get(remotes.WarlockTarget):CallServer({ target = plr.Character }) then plr = nil end end lastTarget = plr and plr.Character else lastTarget = nil end task.wait(0.1) until not AutoKit.Enabled end, wizard = function() repeat local ability = lplr:GetAttribute('WizardAbility') if ability and bedwars.AbilityController:canUseAbility(ability) then local plr = entitylib.EntityPosition({ Range = 50, Part = 'RootPart', Players = true, Sort = sortmethods.Health }) if plr then bedwars.AbilityController:useAbility(ability, newproxy(true), {target = plr.RootPart.Position}) end end task.wait(0.1) until not AutoKit.Enabled end } AutoKit = vape.Categories.Utility:CreateModule({ Name = 'AutoKit', Function = function(callback) if callback then repeat task.wait() until store.equippedKit ~= '' and store.matchState ~= 0 or (not AutoKit.Enabled) if AutoKit.Enabled and AutoKitFunctions[store.equippedKit] and Toggles[store.equippedKit].Enabled then AutoKitFunctions[store.equippedKit]() end end end, Tooltip = 'Automatically uses kit abilities.' }) Legit = AutoKit:CreateToggle({Name = 'Legit Range'}) local sortTable = {} for i in AutoKitFunctions do table.insert(sortTable, i) end table.sort(sortTable, function(a, b) return bedwars.BedwarsKitMeta[a].name < bedwars.BedwarsKitMeta[b].name end) for _, v in sortTable do Toggles[v] = AutoKit:CreateToggle({ Name = bedwars.BedwarsKitMeta[v].name, Default = true }) end end) run(function() local AutoPearl local rayCheck = RaycastParams.new() rayCheck.RespectCanCollide = true local projectileRemote = {InvokeServer = function() end} task.spawn(function() projectileRemote = bedwars.Client:Get(remotes.FireProjectile).instance end) local function firePearl(pos, spot, item) switchItem(item.tool) local meta = bedwars.ProjectileMeta.telepearl local calc = prediction.SolveTrajectory(pos, meta.launchVelocity, meta.gravitationalAcceleration, spot, Vector3.zero, workspace.Gravity, 0, 0) if calc then local dir = CFrame.lookAt(pos, calc).LookVector * meta.launchVelocity bedwars.ProjectileController:createLocalProjectile(meta, 'telepearl', 'telepearl', pos, nil, dir, {drawDurationSeconds = 1}) projectileRemote:InvokeServer(item.tool, 'telepearl', 'telepearl', pos, pos, dir, httpService:GenerateGUID(true), {drawDurationSeconds = 1, shotId = httpService:GenerateGUID(false)}, workspace:GetServerTimeNow() - 0.045) end if store.hand then switchItem(store.hand.tool) end end AutoPearl = vape.Categories.Utility:CreateModule({ Name = 'AutoPearl', Function = function(callback) if callback then local check repeat if entitylib.isAlive then local root = entitylib.character.RootPart local pearl = getItem('telepearl') rayCheck.FilterDescendantsInstances = {lplr.Character, gameCamera, AntiFallPart} rayCheck.CollisionGroup = root.CollisionGroup if pearl and root.Velocity.Y < -100 and not workspace:Raycast(root.Position, Vector3.new(0, -200, 0), rayCheck) then if not check then check = true local ground = getNearGround(20) if ground then firePearl(root.Position, ground, pearl) end end else check = false end end task.wait(0.1) until not AutoPearl.Enabled end end, Tooltip = 'Automatically throws a pearl onto nearby ground after\nfalling a certain distance.' }) end) run(function() local AutoPlay local Random local function isEveryoneDead() return #bedwars.Store:getState().Party.members <= 0 end local function joinQueue() if not bedwars.Store:getState().Game.customMatch and bedwars.Store:getState().Party.leader.userId == lplr.UserId and bedwars.Store:getState().Party.queueState == 0 then if Random.Enabled then local listofmodes = {} for i, v in bedwars.QueueMeta do if not v.disabled and not v.voiceChatOnly and not v.rankCategory then table.insert(listofmodes, i) end end bedwars.QueueController:joinQueue(listofmodes[math.random(1, #listofmodes)]) else bedwars.QueueController:joinQueue(store.queueType) end end end AutoPlay = vape.Categories.Utility:CreateModule({ Name = 'AutoPlay', Function = function(callback) if callback then AutoPlay:Clean(vapeEvents.EntityDeathEvent.Event:Connect(function(deathTable) if deathTable.finalKill and deathTable.entityInstance == lplr.Character and isEveryoneDead() and store.matchState ~= 2 then joinQueue() end end)) AutoPlay:Clean(vapeEvents.MatchEndEvent.Event:Connect(joinQueue)) end end, Tooltip = 'Automatically queues after the match ends.' }) Random = AutoPlay:CreateToggle({ Name = 'Random', Tooltip = 'Chooses a random mode' }) end) run(function() local shooting, old = false local function getCrossbows() local crossbows = {} for i, v in store.inventory.hotbar do if v.item and v.item.itemType:find('crossbow') and i ~= (store.inventory.hotbarSlot + 1) then table.insert(crossbows, i - 1) end end return crossbows end vape.Categories.Utility:CreateModule({ Name = 'AutoShoot', Function = function(callback) if callback then old = bedwars.ProjectileController.createLocalProjectile bedwars.ProjectileController.createLocalProjectile = function(...) local source, data, proj = ... if source and (proj == 'arrow' or proj == 'fireball') and not shooting then task.spawn(function() local bows = getCrossbows() if #bows > 0 then shooting = true task.wait(0.15) local selected = store.inventory.hotbarSlot for _, v in getCrossbows() do if hotbarSwitch(v) then task.wait(0.05) mouse1click() task.wait(0.05) end end hotbarSwitch(selected) shooting = false end end) end return old(...) end else bedwars.ProjectileController.createLocalProjectile = old end end, Tooltip = 'Automatically crossbow macro\'s' }) end) run(function() local AutoToxic local GG local Toggles, Lists, said, dead = {}, {}, {} local function sendMessage(name, obj, default) local tab = Lists[name].ListEnabled local custommsg = #tab > 0 and tab[math.random(1, #tab)] or default if not custommsg then return end if #tab > 1 and custommsg == said[name] then repeat task.wait() custommsg = tab[math.random(1, #tab)] until custommsg ~= said[name] end said[name] = custommsg custommsg = custommsg and custommsg:gsub('', obj or '') or '' if textChatService.ChatVersion == Enum.ChatVersion.TextChatService then textChatService.ChatInputBarConfiguration.TargetTextChannel:SendAsync(custommsg) else replicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer(custommsg, 'All') end end AutoToxic = vape.Categories.Utility:CreateModule({ Name = 'AutoToxic', Function = function(callback) if callback then AutoToxic:Clean(vapeEvents.BedwarsBedBreak.Event:Connect(function(bedTable) if Toggles.BedDestroyed.Enabled and bedTable.brokenBedTeam.id == lplr:GetAttribute('Team') then sendMessage('BedDestroyed', (bedTable.player.DisplayName or bedTable.player.Name), 'how dare you >:( | ') elseif Toggles.Bed.Enabled and bedTable.player.UserId == lplr.UserId then local team = bedwars.QueueMeta[store.queueType].teams[tonumber(bedTable.brokenBedTeam.id)] sendMessage('Bed', team and team.displayName:lower() or 'white', 'nice bed lul | ') end end)) AutoToxic:Clean(vapeEvents.EntityDeathEvent.Event:Connect(function(deathTable) if deathTable.finalKill then local killer = playersService:GetPlayerFromCharacter(deathTable.fromEntity) local killed = playersService:GetPlayerFromCharacter(deathTable.entityInstance) if not killed or not killer then return end if killed == lplr then if (not dead) and killer ~= lplr and Toggles.Death.Enabled then dead = true sendMessage('Death', (killer.DisplayName or killer.Name), 'my gaming chair subscription expired :( | ') end elseif killer == lplr and Toggles.Kill.Enabled then sendMessage('Kill', (killed.DisplayName or killed.Name), 'vxp on top | ') end end end)) AutoToxic:Clean(vapeEvents.MatchEndEvent.Event:Connect(function(winstuff) if GG.Enabled then if textChatService.ChatVersion == Enum.ChatVersion.TextChatService then textChatService.ChatInputBarConfiguration.TargetTextChannel:SendAsync('gg') else replicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer('gg', 'All') end end local myTeam = bedwars.Store:getState().Game.myTeam if myTeam and myTeam.id == winstuff.winningTeamId or lplr.Neutral then if Toggles.Win.Enabled then sendMessage('Win', nil, 'yall garbage') end end end)) end end, Tooltip = 'Says a message after a certain action' }) GG = AutoToxic:CreateToggle({ Name = 'AutoGG', Default = true }) for _, v in {'Kill', 'Death', 'Bed', 'BedDestroyed', 'Win'} do Toggles[v] = AutoToxic:CreateToggle({ Name = v..' ', Function = function(callback) if Lists[v] then Lists[v].Object.Visible = callback end end }) Lists[v] = AutoToxic:CreateTextList({ Name = v, Darker = true, Visible = false }) end end) run(function() local AutoVoidDrop local OwlCheck AutoVoidDrop = vape.Categories.Utility:CreateModule({ Name = 'AutoVoidDrop', Function = function(callback) if callback then repeat task.wait() until store.matchState ~= 0 or (not AutoVoidDrop.Enabled) if not AutoVoidDrop.Enabled then return end local lowestpoint = math.huge for _, v in store.blocks do local point = (v.Position.Y - (v.Size.Y / 2)) - 50 if point < lowestpoint then lowestpoint = point end end repeat if entitylib.isAlive then local root = entitylib.character.RootPart if root.Position.Y < lowestpoint and (lplr.Character:GetAttribute('InflatedBalloons') or 0) <= 0 and not getItem('balloon') then if not OwlCheck.Enabled or not root:FindFirstChild('OwlLiftForce') then for _, item in {'iron', 'diamond', 'emerald', 'gold'} do item = getItem(item) if item then item = bedwars.Client:Get(remotes.DropItem):CallServer({ item = item.tool, amount = item.amount }) if item then item:SetAttribute('ClientDropTime', tick() + 100) end end end end end end task.wait(0.1) until not AutoVoidDrop.Enabled end end, Tooltip = 'Drops resources when you fall into the void' }) OwlCheck = AutoVoidDrop:CreateToggle({ Name = 'Owl check', Default = true, Tooltip = 'Refuses to drop items if being picked up by an owl' }) end) run(function() local MissileTP MissileTP = vape.Categories.Utility:CreateModule({ Name = 'MissileTP', Function = function(callback) if callback then MissileTP:Toggle() local plr = entitylib.EntityMouse({ Range = 1000, Players = true, Part = 'RootPart' }) if getItem('guided_missile') and plr then local projectile = bedwars.RuntimeLib.await(bedwars.GuidedProjectileController.fireGuidedProjectile:CallServerAsync('guided_missile')) if projectile then local projectilemodel = projectile.model if not projectilemodel.PrimaryPart then projectilemodel:GetPropertyChangedSignal('PrimaryPart'):Wait() end local bodyforce = Instance.new('BodyForce') bodyforce.Force = Vector3.new(0, projectilemodel.PrimaryPart.AssemblyMass * workspace.Gravity, 0) bodyforce.Name = 'AntiGravity' bodyforce.Parent = projectilemodel.PrimaryPart repeat projectile.model:SetPrimaryPartCFrame(CFrame.lookAlong(plr.RootPart.CFrame.p, gameCamera.CFrame.LookVector)) task.wait(0.1) until not projectile.model or not projectile.model.Parent else notif('MissileTP', 'Missile on cooldown.', 3) end end end end, Tooltip = 'Spawns and teleports a missile to a player\nnear your mouse.' }) end) run(function() local PickupRange local Range local Network local Lower PickupRange = vape.Categories.Utility:CreateModule({ Name = 'PickupRange', Function = function(callback) if callback then local items = collection('ItemDrop', PickupRange) repeat if entitylib.isAlive then local localPosition = entitylib.character.RootPart.Position for _, v in items do if tick() - (v:GetAttribute('ClientDropTime') or 0) < 2 then continue end if isnetworkowner(v) and Network.Enabled and entitylib.character.Humanoid.Health > 0 then v.CFrame = CFrame.new(localPosition - Vector3.new(0, 3, 0)) end if (localPosition - v.Position).Magnitude <= Range.Value then if Lower.Enabled and (localPosition.Y - v.Position.Y) < (entitylib.character.HipHeight - 1) then continue end task.spawn(function() bedwars.Client:Get(remotes.PickupItem):CallServerAsync({ itemDrop = v }):andThen(function(suc) if suc and bedwars.SoundList then bedwars.SoundManager:playSound(bedwars.SoundList.PICKUP_ITEM_DROP) local sound = bedwars.ItemMeta[v.Name].pickUpOverlaySound if sound then bedwars.SoundManager:playSound(sound, { position = v.Position, volumeMultiplier = 0.9 }) end end end) end) end end end task.wait(0.1) until not PickupRange.Enabled end end, Tooltip = 'Picks up items from a farther distance' }) Range = PickupRange:CreateSlider({ Name = 'Range', Min = 1, Max = 10, Default = 10, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) Network = PickupRange:CreateToggle({ Name = 'Network TP', Default = true }) Lower = PickupRange:CreateToggle({Name = 'Feet Check'}) end) run(function() local RavenTP RavenTP = vape.Categories.Utility:CreateModule({ Name = 'RavenTP', Function = function(callback) if callback then RavenTP:Toggle() local plr = entitylib.EntityMouse({ Range = 1000, Players = true, Part = 'RootPart' }) if getItem('raven') and plr then bedwars.Client:Get(remotes.SpawnRaven):CallServerAsync():andThen(function(projectile) if projectile then local bodyforce = Instance.new('BodyForce') bodyforce.Force = Vector3.new(0, projectile.PrimaryPart.AssemblyMass * workspace.Gravity, 0) bodyforce.Parent = projectile.PrimaryPart if plr then task.spawn(function() for _ = 1, 20 do if plr.RootPart and projectile then projectile:SetPrimaryPartCFrame(CFrame.lookAlong(plr.RootPart.Position, gameCamera.CFrame.LookVector)) end task.wait(0.05) end end) task.wait(0.3) bedwars.RavenController:detonateRaven() end end end) end end end, Tooltip = 'Spawns and teleports a raven to a player\nnear your mouse.' }) end) run(function() local Scaffold local Expand local Tower local Downwards local Diagonal local LimitItem local Mouse local adjacent, lastpos, label = {}, Vector3.zero for x = -3, 3, 3 do for y = -3, 3, 3 do for z = -3, 3, 3 do local vec = Vector3.new(x, y, z) if vec ~= Vector3.zero then table.insert(adjacent, vec) end end end end local function nearCorner(poscheck, pos) local startpos = poscheck - Vector3.new(3, 3, 3) local endpos = poscheck + Vector3.new(3, 3, 3) local check = poscheck + (pos - poscheck).Unit * 100 return Vector3.new(math.clamp(check.X, startpos.X, endpos.X), math.clamp(check.Y, startpos.Y, endpos.Y), math.clamp(check.Z, startpos.Z, endpos.Z)) end local function blockProximity(pos) local mag, returned = 60 local tab = getBlocksInPoints(bedwars.BlockController:getBlockPosition(pos - Vector3.new(21, 21, 21)), bedwars.BlockController:getBlockPosition(pos + Vector3.new(21, 21, 21))) for _, v in tab do local blockpos = nearCorner(v, pos) local newmag = (pos - blockpos).Magnitude if newmag < mag then mag, returned = newmag, blockpos end end table.clear(tab) return returned end local function checkAdjacent(pos) for _, v in adjacent do if getPlacedBlock(pos + v) then return true end end return false end local function getScaffoldBlock() if store.hand.toolType == 'block' then return store.hand.tool.Name, store.hand.amount elseif (not LimitItem.Enabled) then local wool, amount = getWool() if wool then return wool, amount else for _, item in store.inventory.inventory.items do if bedwars.ItemMeta[item.itemType].block then return item.itemType, item.amount end end end end return nil, 0 end Scaffold = vape.Categories.Utility:CreateModule({ Name = 'Scaffold', Function = function(callback) if label then label.Visible = callback end if callback then repeat if entitylib.isAlive then local wool, amount = getScaffoldBlock() if Mouse.Enabled then if not inputService:IsMouseButtonPressed(0) then wool = nil end end if label then amount = amount or 0 label.Text = amount..' (Scaffold)' label.TextColor3 = Color3.fromHSV((amount / 128) / 2.8, 0.86, 1) end if wool then local root = entitylib.character.RootPart if Tower.Enabled and inputService:IsKeyDown(Enum.KeyCode.Space) and (not inputService:GetFocusedTextBox()) then root.Velocity = Vector3.new(root.Velocity.X, 38, root.Velocity.Z) end for i = Expand.Value, 1, -1 do local currentpos = roundPos(root.Position - Vector3.new(0, entitylib.character.HipHeight + (Downwards.Enabled and inputService:IsKeyDown(Enum.KeyCode.LeftShift) and 4.5 or 1.5), 0) + entitylib.character.Humanoid.MoveDirection * (i * 3)) if Diagonal.Enabled then if math.abs(math.round(math.deg(math.atan2(-entitylib.character.Humanoid.MoveDirection.X, -entitylib.character.Humanoid.MoveDirection.Z)) / 45) * 45) % 90 == 45 then local dt = (lastpos - currentpos) if ((dt.X == 0 and dt.Z ~= 0) or (dt.X ~= 0 and dt.Z == 0)) and ((lastpos - root.Position) * Vector3.new(1, 0, 1)).Magnitude < 2.5 then currentpos = lastpos end end end local block, blockpos = getPlacedBlock(currentpos) if not block then blockpos = checkAdjacent(blockpos * 3) and blockpos * 3 or blockProximity(currentpos) if blockpos then task.spawn(bedwars.placeBlock, blockpos, wool, false) end end lastpos = currentpos end end end task.wait(0.03) until not Scaffold.Enabled else Label = nil end end, Tooltip = 'Helps you make bridges/scaffold walk.' }) Expand = Scaffold:CreateSlider({ Name = 'Expand', Min = 1, Max = 6 }) Tower = Scaffold:CreateToggle({ Name = 'Tower', Default = true }) Downwards = Scaffold:CreateToggle({ Name = 'Downwards', Default = true }) Diagonal = Scaffold:CreateToggle({ Name = 'Diagonal', Default = true }) LimitItem = Scaffold:CreateToggle({Name = 'Limit to items'}) Mouse = Scaffold:CreateToggle({Name = 'Require mouse down'}) Count = Scaffold:CreateToggle({ Name = 'Block Count', Function = function(callback) if callback then label = Instance.new('TextLabel') label.Size = UDim2.fromOffset(100, 20) label.Position = UDim2.new(0.5, 6, 0.5, 60) label.BackgroundTransparency = 1 label.AnchorPoint = Vector2.new(0.5, 0) label.Text = '0' label.TextColor3 = Color3.new(0, 1, 0) label.TextSize = 18 label.RichText = true label.Font = Enum.Font.Arial label.Visible = Scaffold.Enabled label.Parent = vape.gui else label:Destroy() label = nil end end }) end) run(function() local ShopTierBypass local tiered, nexttier = {}, {} ShopTierBypass = vape.Categories.Utility:CreateModule({ Name = 'ShopTierBypass', Function = function(callback) if callback then repeat task.wait() until store.shopLoaded or not ShopTierBypass.Enabled if ShopTierBypass.Enabled then for _, v in bedwars.Shop.ShopItems do tiered[v] = v.tiered nexttier[v] = v.nextTier v.nextTier = nil v.tiered = nil end end else for i, v in tiered do i.tiered = v end for i, v in nexttier do i.nextTier = v end table.clear(nexttier) table.clear(tiered) end end, Tooltip = 'Lets you buy things like armor early.' }) end) run(function() local StaffDetector local Mode local Clans local Party local Profile local Users local blacklistedclans = {'gg', 'gg2', 'DV', 'DV2'} local blacklisteduserids = {1502104539, 3826146717, 4531785383, 1049767300, 4926350670, 653085195, 184655415, 2752307430, 5087196317, 5744061325, 1536265275} local joined = {} local function getRole(plr, id) local suc, res = pcall(function() return plr:GetRankInGroup(id) end) if not suc then notif('StaffDetector', res, 30, 'alert') end return suc and res or 0 end local function staffFunction(plr, checktype) if not vape.Loaded then repeat task.wait() until vape.Loaded end notif('StaffDetector', 'Staff Detected ('..checktype..'): '..plr.Name..' ('..plr.UserId..')', 60, 'alert') whitelist.customtags[plr.Name] = {{text = 'GAME STAFF', color = Color3.new(1, 0, 0)}} if Party.Enabled and not checktype:find('clan') then bedwars.PartyController:leaveParty() end if Mode.Value == 'Uninject' then task.spawn(function() vape:Uninject() end) game:GetService('StarterGui'):SetCore('SendNotification', { Title = 'StaffDetector', Text = 'Staff Detected ('..checktype..')\n'..plr.Name..' ('..plr.UserId..')', Duration = 60, }) elseif Mode.Value == 'Requeue' then bedwars.QueueController:joinQueue(store.queueType) elseif Mode.Value == 'Profile' then vape.Save = function() end if vape.Profile ~= Profile.Value then vape:Load(true, Profile.Value) end elseif Mode.Value == 'AutoConfig' then local safe = {'AutoClicker', 'Reach', 'Sprint', 'HitFix', 'StaffDetector'} vape.Save = function() end for i, v in vape.Modules do if not (table.find(safe, i) or v.Category == 'Render') then if v.Enabled then v:Toggle() end v:SetBind('') end end end end local function checkFriends(list) for _, v in list do if joined[v] then return joined[v] end end return nil end local function checkJoin(plr, connection) if not plr:GetAttribute('Team') and plr:GetAttribute('Spectator') and not bedwars.Store:getState().Game.customMatch then connection:Disconnect() local tab, pages = {}, playersService:GetFriendsAsync(plr.UserId) for _ = 1, 4 do for _, v in pages:GetCurrentPage() do table.insert(tab, v.Id) end if pages.IsFinished then break end pages:AdvanceToNextPageAsync() end local friend = checkFriends(tab) if not friend then staffFunction(plr, 'impossible_join') return true else notif('StaffDetector', string.format('Spectator %s joined from %s', plr.Name, friend), 20) end end end notif('Module Removed', string.format('KillEffect and FPSBoost no longer work and have therefore been removed.'), 10) local function playerAdded(plr) joined[plr.UserId] = plr.Name if plr == lplr then return end if table.find(blacklisteduserids, plr.UserId) or table.find(Users.ListEnabled, tostring(plr.UserId)) then staffFunction(plr, 'blacklisted_user') elseif getRole(plr, 5774246) >= 100 then staffFunction(plr, 'staff_role') else local connection connection = plr:GetAttributeChangedSignal('Spectator'):Connect(function() checkJoin(plr, connection) end) StaffDetector:Clean(connection) if checkJoin(plr, connection) then return end if not plr:GetAttribute('ClanTag') then plr:GetAttributeChangedSignal('ClanTag'):Wait() end if table.find(blacklistedclans, plr:GetAttribute('ClanTag')) and vape.Loaded and Clans.Enabled then connection:Disconnect() staffFunction(plr, 'blacklisted_clan_'..plr:GetAttribute('ClanTag'):lower()) end end end StaffDetector = vape.Categories.Utility:CreateModule({ Name = 'StaffDetector', Function = function(callback) if callback then StaffDetector:Clean(playersService.PlayerAdded:Connect(playerAdded)) for _, v in playersService:GetPlayers() do task.spawn(playerAdded, v) end else table.clear(joined) end end, Tooltip = 'Detects people with a staff rank ingame' }) Mode = StaffDetector:CreateDropdown({ Name = 'Mode', List = {'Uninject', 'Profile', 'Requeue', 'AutoConfig', 'Notify'}, Function = function(val) if Profile.Object then Profile.Object.Visible = val == 'Profile' end end }) Clans = StaffDetector:CreateToggle({ Name = 'Blacklist clans', Default = true }) Party = StaffDetector:CreateToggle({ Name = 'Leave party' }) Profile = StaffDetector:CreateTextBox({ Name = 'Profile', Default = 'default', Darker = true, Visible = false }) Users = StaffDetector:CreateTextList({ Name = 'Users', Placeholder = 'player (userid)' }) task.spawn(function() repeat task.wait(1) until vape.Loaded or vape.Loaded == nil if vape.Loaded and not StaffDetector.Enabled then StaffDetector:Toggle() end end) end) run(function() TrapDisabler = vape.Categories.Utility:CreateModule({ Name = 'TrapDisabler', Tooltip = 'Disables Snap Traps' }) end) run(function() vape.Categories.World:CreateModule({ Name = 'Anti-AFK', Function = function(callback) if callback then for _, v in getconnections(lplr.Idled) do v:Disconnect() end for _, v in getconnections(runService.Heartbeat) do if type(v.Function) == 'function' and table.find(debug.getconstants(v.Function), remotes.AfkStatus) then v:Disconnect() end end bedwars.Client:Get(remotes.AfkStatus):SendToServer({ afk = false }) end end, Tooltip = 'Lets you stay ingame without getting kicked' }) end) run(function() local AutoSuffocate local Range local LimitItem local function fixPosition(pos) return bedwars.BlockController:getBlockPosition(pos) * 3 end AutoSuffocate = vape.Categories.World:CreateModule({ Name = 'AutoSuffocate', Function = function(callback) if callback then repeat local item = store.hand.toolType == 'block' and store.hand.tool.Name or not LimitItem.Enabled and getWool() if item then local plrs = entitylib.AllPosition({ Part = 'RootPart', Range = Range.Value, Players = true }) for _, ent in plrs do local needPlaced = {} for _, side in Enum.NormalId:GetEnumItems() do side = Vector3.fromNormalId(side) if side.Y ~= 0 then continue end side = fixPosition(ent.RootPart.Position + side * 2) if not getPlacedBlock(side) then table.insert(needPlaced, side) end end if #needPlaced < 3 then table.insert(needPlaced, fixPosition(ent.Head.Position)) table.insert(needPlaced, fixPosition(ent.RootPart.Position - Vector3.new(0, 1, 0))) for _, pos in needPlaced do if not getPlacedBlock(pos) then task.spawn(bedwars.placeBlock, pos, item) break end end end end end task.wait(0.09) until not AutoSuffocate.Enabled end end, Tooltip = 'Places blocks on nearby confined entities' }) Range = AutoSuffocate:CreateSlider({ Name = 'Range', Min = 1, Max = 20, Default = 20, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) LimitItem = AutoSuffocate:CreateToggle({ Name = 'Limit to Items', Default = true }) end) run(function() local AutoTool local old, event local function switchHotbarItem(block) if block and not block:GetAttribute('NoBreak') and not block:GetAttribute('Team'..(lplr:GetAttribute('Team') or 0)..'NoBreak') then local tool, slot = store.tools[bedwars.ItemMeta[block.Name].block.breakType], nil if tool then for i, v in store.inventory.hotbar do if v.item and v.item.itemType == tool.itemType then slot = i - 1 break end end if hotbarSwitch(slot) then if inputService:IsMouseButtonPressed(0) then event:Fire() end return true end end end end AutoTool = vape.Categories.World:CreateModule({ Name = 'AutoTool', Function = function(callback) if callback then event = Instance.new('BindableEvent') AutoTool:Clean(event) AutoTool:Clean(event.Event:Connect(function() contextActionService:CallFunction('block-break', Enum.UserInputState.Begin, newproxy(true)) end)) old = bedwars.BlockBreaker.hitBlock bedwars.BlockBreaker.hitBlock = function(self, maid, raycastparams, ...) local block = self.clientManager:getBlockSelector():getMouseInfo(1, {ray = raycastparams}) if switchHotbarItem(block and block.target and block.target.blockInstance or nil) then return end return old(self, maid, raycastparams, ...) end else bedwars.BlockBreaker.hitBlock = old old = nil end end, Tooltip = 'Automatically selects the correct tool' }) end) run(function() local BedProtector local function getBedNear() local localPosition = entitylib.isAlive and entitylib.character.RootPart.Position or Vector3.zero for _, v in collectionService:GetTagged('bed') do if (localPosition - v.Position).Magnitude < 20 and v:GetAttribute('Team'..(lplr:GetAttribute('Team') or -1)..'NoBreak') then return v end end end local function getBlocks() local blocks = {} for _, item in store.inventory.inventory.items do local block = bedwars.ItemMeta[item.itemType].block if block then table.insert(blocks, {item.itemType, block.health}) end end table.sort(blocks, function(a, b) return a[2] > b[2] end) return blocks end local function getPyramid(size, grid) local positions = {} for h = size, 0, -1 do for w = h, 0, -1 do table.insert(positions, Vector3.new(w, (size - h), ((h + 1) - w)) * grid) table.insert(positions, Vector3.new(w * -1, (size - h), ((h + 1) - w)) * grid) table.insert(positions, Vector3.new(w, (size - h), (h - w) * -1) * grid) table.insert(positions, Vector3.new(w * -1, (size - h), (h - w) * -1) * grid) end end return positions end BedProtector = vape.Categories.World:CreateModule({ Name = 'BedProtector', Function = function(callback) if callback then local bed = getBedNear() bed = bed and bed.Position or nil if bed then for i, block in getBlocks() do for _, pos in getPyramid(i, 3) do if not BedProtector.Enabled then break end if getPlacedBlock(bed + pos) then continue end bedwars.placeBlock(bed + pos, block[1], false) end end if BedProtector.Enabled then BedProtector:Toggle() end else notif('BedProtector', 'Unable to locate bed', 5) BedProtector:Toggle() end end end, Tooltip = 'Automatically places strong blocks around the bed.' }) end) run(function() local ChestSteal local Range local Open local Skywars local Delays = {} local function lootChest(chest) chest = chest and chest.Value or nil local chestitems = chest and chest:GetChildren() or {} if #chestitems > 1 and (Delays[chest] or 0) < tick() then Delays[chest] = tick() + 0.2 bedwars.Client:GetNamespace('Inventory'):Get('SetObservedChest'):SendToServer(chest) for _, v in chestitems do if v:IsA('Accessory') then task.spawn(function() pcall(function() bedwars.Client:GetNamespace('Inventory'):Get('ChestGetItem'):CallServer(chest, v) end) end) end end bedwars.Client:GetNamespace('Inventory'):Get('SetObservedChest'):SendToServer(nil) end end ChestSteal = vape.Categories.World:CreateModule({ Name = 'ChestSteal', Function = function(callback) if callback then local chests = collection('chest', ChestSteal) repeat task.wait() until store.queueType ~= 'bedwars_test' if (not Skywars.Enabled) or store.queueType:find('skywars') then repeat if entitylib.isAlive and store.matchState ~= 2 then if Open.Enabled then if bedwars.AppController:isAppOpen('ChestApp') then lootChest(lplr.Character:FindFirstChild('ObservedChestFolder')) end else local localPosition = entitylib.character.RootPart.Position for _, v in chests do if (localPosition - v.Position).Magnitude <= Range.Value then lootChest(v:FindFirstChild('ChestFolderValue')) end end end end task.wait(0.1) until not ChestSteal.Enabled end end end, Tooltip = 'Grabs items from near chests.' }) Range = ChestSteal:CreateSlider({ Name = 'Range', Min = 0, Max = 18, Default = 18, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) Open = ChestSteal:CreateToggle({Name = 'GUI Check'}) Skywars = ChestSteal:CreateToggle({ Name = 'Only Skywars', Function = function() if ChestSteal.Enabled then ChestSteal:Toggle() ChestSteal:Toggle() end end, Default = true }) end) run(function() local Schematica local File local Mode local Transparency local parts, guidata, poschecklist = {}, {}, {} local point1, point2 for x = -3, 3, 3 do for y = -3, 3, 3 do for z = -3, 3, 3 do if Vector3.new(x, y, z) ~= Vector3.zero then table.insert(poschecklist, Vector3.new(x, y, z)) end end end end local function checkAdjacent(pos) for _, v in poschecklist do if getPlacedBlock(pos + v) then return true end end return false end local function getPlacedBlocksInPoints(s, e) local list, blocks = {}, bedwars.BlockController:getStore() for x = (e.X > s.X and s.X or e.X), (e.X > s.X and e.X or s.X) do for y = (e.Y > s.Y and s.Y or e.Y), (e.Y > s.Y and e.Y or s.Y) do for z = (e.Z > s.Z and s.Z or e.Z), (e.Z > s.Z and e.Z or s.Z) do local vec = Vector3.new(x, y, z) local block = blocks:getBlockAt(vec) if block and block:GetAttribute('PlacedByUserId') == lplr.UserId then list[vec] = block end end end end return list end local function loadMaterials() for _, v in guidata do v:Destroy() end local suc, read = pcall(function() return isfile(File.Value) and httpService:JSONDecode(readfile(File.Value)) end) if suc and read then local items = {} for _, v in read do items[v[2]] = (items[v[2]] or 0) + 1 end for i, v in items do local holder = Instance.new('Frame') holder.Size = UDim2.new(1, 0, 0, 32) holder.BackgroundTransparency = 1 holder.Parent = Schematica.Children local icon = Instance.new('ImageLabel') icon.Size = UDim2.fromOffset(24, 24) icon.Position = UDim2.fromOffset(4, 4) icon.BackgroundTransparency = 1 icon.Image = bedwars.getIcon({itemType = i}, true) icon.Parent = holder local text = Instance.new('TextLabel') text.Size = UDim2.fromOffset(100, 32) text.Position = UDim2.fromOffset(32, 0) text.BackgroundTransparency = 1 text.Text = (bedwars.ItemMeta[i] and bedwars.ItemMeta[i].displayName or i)..': '..v text.TextXAlignment = Enum.TextXAlignment.Left text.TextColor3 = uipallet.Text text.TextSize = 14 text.FontFace = uipallet.Font text.Parent = holder table.insert(guidata, holder) end table.clear(read) table.clear(items) end end local function save() if point1 and point2 then local tab = getPlacedBlocksInPoints(point1, point2) local savetab = {} point1 = point1 * 3 for i, v in tab do i = bedwars.BlockController:getBlockPosition(CFrame.lookAlong(point1, entitylib.character.RootPart.CFrame.LookVector):PointToObjectSpace(i * 3)) * 3 table.insert(savetab, { { x = i.X, y = i.Y, z = i.Z }, v.Name }) end point1, point2 = nil, nil writefile(File.Value, httpService:JSONEncode(savetab)) notif('Schematica', 'Saved '..getTableSize(tab)..' blocks', 5) loadMaterials() table.clear(tab) table.clear(savetab) else local mouseinfo = bedwars.BlockBreaker.clientManager:getBlockSelector():getMouseInfo(0) if mouseinfo and mouseinfo.target then if point1 then point2 = mouseinfo.target.blockRef.blockPosition notif('Schematica', 'Selected position 2, toggle again near position 1 to save it', 3) else point1 = mouseinfo.target.blockRef.blockPosition notif('Schematica', 'Selected position 1', 3) end end end end local function load(read) local mouseinfo = bedwars.BlockBreaker.clientManager:getBlockSelector():getMouseInfo(0) if mouseinfo and mouseinfo.target then local position = CFrame.new(mouseinfo.placementPosition * 3) * CFrame.Angles(0, math.rad(math.round(math.deg(math.atan2(-entitylib.character.RootPart.CFrame.LookVector.X, -entitylib.character.RootPart.CFrame.LookVector.Z)) / 45) * 45), 0) for _, v in read do local blockpos = bedwars.BlockController:getBlockPosition((position * CFrame.new(v[1].x, v[1].y, v[1].z)).p) * 3 if parts[blockpos] then continue end local handler = bedwars.BlockController:getHandlerRegistry():getHandler(v[2]:find('wool') and getWool() or v[2]) if handler then local part = handler:place(blockpos / 3, 0) part.Transparency = Transparency.Value part.CanCollide = false part.Anchored = true part.Parent = workspace parts[blockpos] = part end end table.clear(read) repeat if entitylib.isAlive then local localPosition = entitylib.character.RootPart.Position for i, v in parts do if (i - localPosition).Magnitude < 60 and checkAdjacent(i) then if not Schematica.Enabled then break end if not getItem(v.Name) then continue end bedwars.placeBlock(i, v.Name, false) task.delay(0.1, function() local block = getPlacedBlock(i) if block then v:Destroy() parts[i] = nil end end) end end end task.wait() until getTableSize(parts) <= 0 if getTableSize(parts) <= 0 and Schematica.Enabled then notif('Schematica', 'Finished building', 5) Schematica:Toggle() end end end Schematica = vape.Categories.World:CreateModule({ Name = 'Schematica', Function = function(callback) if callback then if not File.Value:find('.json') then notif('Schematica', 'Invalid file', 3) Schematica:Toggle() return end if Mode.Value == 'Save' then save() Schematica:Toggle() else local suc, read = pcall(function() return isfile(File.Value) and httpService:JSONDecode(readfile(File.Value)) end) if suc and read then load(read) else notif('Schematica', 'Missing / corrupted file', 3) Schematica:Toggle() end end else for _, v in parts do v:Destroy() end table.clear(parts) end end, Tooltip = 'Save and load placements of buildings' }) File = Schematica:CreateTextBox({ Name = 'File', Function = function() loadMaterials() point1, point2 = nil, nil end }) Mode = Schematica:CreateDropdown({ Name = 'Mode', List = {'Load', 'Save'} }) Transparency = Schematica:CreateSlider({ Name = 'Transparency', Min = 0, Max = 1, Default = 0.7, Decimal = 10, Function = function(val) for _, v in parts do v.Transparency = val end end }) end) run(function() local ArmorSwitch local Mode local Targets local Range ArmorSwitch = vape.Categories.Inventory:CreateModule({ Name = 'ArmorSwitch', Function = function(callback) if callback then if Mode.Value == 'Toggle' then repeat local state = entitylib.EntityPosition({ Part = 'RootPart', Range = Range.Value, Players = Targets.Players.Enabled, NPCs = Targets.NPCs.Enabled, Wallcheck = Targets.Walls.Enabled }) and true or false for i = 0, 2 do if (store.inventory.inventory.armor[i + 1] ~= 'empty') ~= state and ArmorSwitch.Enabled then bedwars.Store:dispatch({ type = 'InventorySetArmorItem', item = store.inventory.inventory.armor[i + 1] == 'empty' and state and getBestArmor(i) or nil, armorSlot = i }) vapeEvents.InventoryChanged.Event:Wait() end end task.wait(0.1) until not ArmorSwitch.Enabled else ArmorSwitch:Toggle() for i = 0, 2 do bedwars.Store:dispatch({ type = 'InventorySetArmorItem', item = store.inventory.inventory.armor[i + 1] == 'empty' and getBestArmor(i) or nil, armorSlot = i }) vapeEvents.InventoryChanged.Event:Wait() end end end end, Tooltip = 'Puts on / takes off armor when toggled for baiting.' }) Mode = ArmorSwitch:CreateDropdown({ Name = 'Mode', List = {'Toggle', 'On Key'} }) Targets = ArmorSwitch:CreateTargets({ Players = true, NPCs = true }) Range = ArmorSwitch:CreateSlider({ Name = 'Range', Min = 1, Max = 30, Default = 30, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) end) run(function() local AutoBank local UIToggle local UI local Chests local Items = {} local function addItem(itemType, shop) local item = Instance.new('ImageLabel') item.Image = bedwars.getIcon({itemType = itemType}, true) item.Size = UDim2.fromOffset(32, 32) item.Name = itemType item.BackgroundTransparency = 1 item.LayoutOrder = #UI:GetChildren() item.Parent = UI local itemtext = Instance.new('TextLabel') itemtext.Name = 'Amount' itemtext.Size = UDim2.fromScale(1, 1) itemtext.BackgroundTransparency = 1 itemtext.Text = '' itemtext.TextColor3 = Color3.new(1, 1, 1) itemtext.TextSize = 16 itemtext.TextStrokeTransparency = 0.3 itemtext.Font = Enum.Font.Arial itemtext.Parent = item Items[itemType] = {Object = itemtext, Type = shop} end local function refreshBank(echest) for i, v in Items do local item = echest:FindFirstChild(i) v.Object.Text = item and item:GetAttribute('Amount') or '' end end local function nearChest() if entitylib.isAlive then local pos = entitylib.character.RootPart.Position for _, chest in Chests do if (chest.Position - pos).Magnitude < 20 then return true end end end end local function handleState() local chest = replicatedStorage.Inventories:FindFirstChild(lplr.Name..'_personal') if not chest then return end local mapCF = workspace.MapCFrames:FindFirstChild((lplr:GetAttribute('Team') or 1)..'_spawn') if mapCF and (entitylib.character.RootPart.Position - mapCF.Value.Position).Magnitude < 80 then for _, v in chest:GetChildren() do local item = Items[v.Name] if item then task.spawn(function() bedwars.Client:GetNamespace('Inventory'):Get('ChestGetItem'):CallServer(chest, v) refreshBank(chest) end) end end else for _, v in store.inventory.inventory.items do local item = Items[v.itemType] if item then task.spawn(function() bedwars.Client:GetNamespace('Inventory'):Get('ChestGiveItem'):CallServer(chest, v.tool) refreshBank(chest) end) end end end end AutoBank = vape.Categories.Inventory:CreateModule({ Name = 'AutoBank', Function = function(callback) if callback then Chests = collection('personal-chest', AutoBank) UI = Instance.new('Frame') UI.Size = UDim2.new(1, 0, 0, 32) UI.Position = UDim2.fromOffset(0, -240) UI.BackgroundTransparency = 1 UI.Visible = UIToggle.Enabled UI.Parent = vape.gui AutoBank:Clean(UI) local Sort = Instance.new('UIListLayout') Sort.FillDirection = Enum.FillDirection.Horizontal Sort.HorizontalAlignment = Enum.HorizontalAlignment.Center Sort.SortOrder = Enum.SortOrder.LayoutOrder Sort.Parent = UI addItem('iron', true) addItem('gold', true) addItem('diamond', false) addItem('emerald', true) addItem('void_crystal', true) repeat local hotbar = lplr.PlayerGui:FindFirstChild('hotbar') hotbar = hotbar and hotbar['1']:FindFirstChild('HotbarHealthbarContainer') if hotbar then UI.Position = UDim2.fromOffset(0, (hotbar.AbsolutePosition.Y + guiService:GetGuiInset().Y) - 40) end local newState = nearChest() if newState then handleState() end task.wait(0.1) until (not AutoBank.Enabled) else table.clear(Items) end end, Tooltip = 'Automatically puts resources in ender chest' }) UIToggle = AutoBank:CreateToggle({ Name = 'UI', Function = function(callback) if AutoBank.Enabled then UI.Visible = callback end end, Default = true }) end) run(function() local AutoBuy local Sword local Armor local Upgrades local TierCheck local BedwarsCheck local GUI local SmartCheck local Custom = {} local CustomPost = {} local UpgradeToggles = {} local Functions, id = {} local Callbacks = {Custom, Functions, CustomPost} local npctick = tick() local swords = { 'wood_sword', 'stone_sword', 'iron_sword', 'diamond_sword', 'emerald_sword' } local armors = { 'none', 'leather_chestplate', 'iron_chestplate', 'diamond_chestplate', 'emerald_chestplate' } local axes = { 'none', 'wood_axe', 'stone_axe', 'iron_axe', 'diamond_axe' } local pickaxes = { 'none', 'wood_pickaxe', 'stone_pickaxe', 'iron_pickaxe', 'diamond_pickaxe' } local function getShopNPC() local shop, items, upgrades, newid = nil, false, false, nil if entitylib.isAlive then local localPosition = entitylib.character.RootPart.Position for _, v in store.shop do if (v.RootPart.Position - localPosition).Magnitude <= 20 then shop = v.Upgrades or v.Shop or nil upgrades = upgrades or v.Upgrades items = items or v.Shop newid = v.Shop and v.Id or newid end end end return shop, items, upgrades, newid end local function canBuy(item, currencytable, amount) amount = amount or 1 if not currencytable[item.currency] then local currency = getItem(item.currency) currencytable[item.currency] = currency and currency.amount or 0 end if item.ignoredByKit and table.find(item.ignoredByKit, store.equippedKit or '') then return false end if item.lockedByForge or item.disabled then return false end if item.require and item.require.teamUpgrade then if (bedwars.Store:getState().Bedwars.teamUpgrades[item.require.teamUpgrade.upgradeId] or -1) < item.require.teamUpgrade.lowestTierIndex then return false end end return currencytable[item.currency] >= (item.price * amount) end local function buyItem(item, currencytable) if not id then return end notif('AutoBuy', 'Bought '..bedwars.ItemMeta[item.itemType].displayName, 3) bedwars.Client:Get('BedwarsPurchaseItem'):CallServerAsync({ shopItem = item, shopId = id }):andThen(function(suc) if suc then bedwars.SoundManager:playSound(bedwars.SoundList.BEDWARS_PURCHASE_ITEM) bedwars.Store:dispatch({ type = 'BedwarsAddItemPurchased', itemType = item.itemType }) bedwars.BedwarsShopController.alreadyPurchasedMap[item.itemType] = true end end) currencytable[item.currency] -= item.price end local function buyUpgrade(upgradeType, currencytable) if not Upgrades.Enabled then return end local upgrade = bedwars.TeamUpgradeMeta[upgradeType] local currentUpgrades = bedwars.Store:getState().Bedwars.teamUpgrades[lplr:GetAttribute('Team')] or {} local currentTier = (currentUpgrades[upgradeType] or 0) + 1 local bought = false for i = currentTier, #upgrade.tiers do local tier = upgrade.tiers[i] if tier.availableOnlyInQueue and not table.find(tier.availableOnlyInQueue, store.queueType) then continue end if canBuy({currency = 'diamond', price = tier.cost}, currencytable) then notif('AutoBuy', 'Bought '..(upgrade.name == 'Armor' and 'Protection' or upgrade.name)..' '..i, 3) bedwars.Client:Get('RequestPurchaseTeamUpgrade'):CallServerAsync(upgradeType) currencytable.diamond -= tier.cost bought = true else break end end return bought end local function buyTool(tool, tools, currencytable) local bought, buyable = false tool = tool and table.find(tools, tool.itemType) and table.find(tools, tool.itemType) + 1 or math.huge for i = tool, #tools do local v = bedwars.Shop.getShopItem(tools[i], lplr) if canBuy(v, currencytable) then if SmartCheck.Enabled and bedwars.ItemMeta[tools[i]].breakBlock and i > 2 then if Armor.Enabled then local currentarmor = store.inventory.inventory.armor[2] currentarmor = currentarmor and currentarmor ~= 'empty' and currentarmor.itemType or 'none' if (table.find(armors, currentarmor) or 3) < 3 then break end end if Sword.Enabled then if store.tools.sword and (table.find(swords, store.tools.sword.itemType) or 2) < 2 then break end end end bought = true buyable = v end if TierCheck.Enabled and v.nextTier then break end end if buyable then buyItem(buyable, currencytable) end return bought end AutoBuy = vape.Categories.Inventory:CreateModule({ Name = 'AutoBuy', Function = function(callback) if callback then repeat task.wait() until store.queueType ~= 'bedwars_test' if BedwarsCheck.Enabled and not store.queueType:find('bedwars') then return end local lastupgrades AutoBuy:Clean(vapeEvents.InventoryAmountChanged.Event:Connect(function() if (npctick - tick()) > 1 then npctick = tick() end end)) repeat local npc, shop, upgrades, newid = getShopNPC() id = newid if GUI.Enabled then if not (bedwars.AppController:isAppOpen('BedwarsItemShopApp') or bedwars.AppController:isAppOpen('TeamUpgradeApp')) then npc = nil end end if npc and lastupgrades ~= upgrades then if (npctick - tick()) > 1 then npctick = tick() end lastupgrades = upgrades end if npc and npctick <= tick() and store.matchState ~= 2 and store.shopLoaded then local currencytable = {} local waitcheck for _, tab in Callbacks do for _, callback in tab do if callback(currencytable, shop, upgrades) then waitcheck = true end end end npctick = tick() + (waitcheck and 0.4 or math.huge) end task.wait(0.1) until not AutoBuy.Enabled else npctick = tick() end end, Tooltip = 'Automatically buys items when you go near the shop' }) Sword = AutoBuy:CreateToggle({ Name = 'Buy Sword', Function = function(callback) npctick = tick() Functions[2] = callback and function(currencytable, shop) if not shop then return end if store.equippedKit == 'dasher' then swords = { [1] = 'wood_dao', [2] = 'stone_dao', [3] = 'iron_dao', [4] = 'diamond_dao', [5] = 'emerald_dao' } elseif store.equippedKit == 'ice_queen' then swords[5] = 'ice_sword' elseif store.equippedKit == 'ember' then swords[5] = 'infernal_saber' elseif store.equippedKit == 'lumen' then swords[5] = 'light_sword' end return buyTool(store.tools.sword, swords, currencytable) end or nil end }) Armor = AutoBuy:CreateToggle({ Name = 'Buy Armor', Function = function(callback) npctick = tick() Functions[1] = callback and function(currencytable, shop) if not shop then return end local currentarmor = store.inventory.inventory.armor[2] ~= 'empty' and store.inventory.inventory.armor[2] or getBestArmor(1) currentarmor = currentarmor and currentarmor.itemType or 'none' return buyTool({itemType = currentarmor}, armors, currencytable) end or nil end, Default = true }) AutoBuy:CreateToggle({ Name = 'Buy Axe', Function = function(callback) npctick = tick() Functions[3] = callback and function(currencytable, shop) if not shop then return end return buyTool(store.tools.wood or {itemType = 'none'}, axes, currencytable) end or nil end }) AutoBuy:CreateToggle({ Name = 'Buy Pickaxe', Function = function(callback) npctick = tick() Functions[4] = callback and function(currencytable, shop) if not shop then return end return buyTool(store.tools.stone, pickaxes, currencytable) end or nil end }) Upgrades = AutoBuy:CreateToggle({ Name = 'Buy Upgrades', Function = function(callback) for _, v in UpgradeToggles do v.Object.Visible = callback end end, Default = true }) local count = 0 for i, v in bedwars.TeamUpgradeMeta do local toggleCount = count table.insert(UpgradeToggles, AutoBuy:CreateToggle({ Name = 'Buy '..(v.name == 'Armor' and 'Protection' or v.name), Function = function(callback) npctick = tick() Functions[5 + toggleCount + (v.name == 'Armor' and 20 or 0)] = callback and function(currencytable, shop, upgrades) if not upgrades then return end if v.disabledInQueue and table.find(v.disabledInQueue, store.queueType) then return end return buyUpgrade(i, currencytable) end or nil end, Darker = true, Default = (i == 'ARMOR' or i == 'DAMAGE') })) count += 1 end TierCheck = AutoBuy:CreateToggle({Name = 'Tier Check'}) BedwarsCheck = AutoBuy:CreateToggle({ Name = 'Only Bedwars', Function = function() if AutoBuy.Enabled then AutoBuy:Toggle() AutoBuy:Toggle() end end, Default = true }) GUI = AutoBuy:CreateToggle({Name = 'GUI check'}) SmartCheck = AutoBuy:CreateToggle({ Name = 'Smart check', Default = true, Tooltip = 'Buys iron armor before iron axe' }) AutoBuy:CreateTextList({ Name = 'Item', Placeholder = 'priority/item/amount/after', Function = function(list) table.clear(Custom) table.clear(CustomPost) for _, entry in list do local tab = entry:split('/') local ind = tonumber(tab[1]) if ind then (tab[4] and CustomPost or Custom)[ind] = function(currencytable, shop) if not shop then return end local v = bedwars.Shop.getShopItem(tab[2], lplr) if v then local item = getItem(tab[2] == 'wool_white' and bedwars.Shop.getTeamWool(lplr:GetAttribute('Team')) or tab[2]) item = (item and tonumber(tab[3]) - item.amount or tonumber(tab[3])) // v.amount if item > 0 and canBuy(v, currencytable, item) then for _ = 1, item do buyItem(v, currencytable) end return true end end end end end end }) end) run(function() local AutoConsume local Health local SpeedPotion local Apple local ShieldPotion local function consumeCheck(attribute) if entitylib.isAlive then if SpeedPotion.Enabled and (not attribute or attribute == 'StatusEffect_speed') then local speedpotion = getItem('speed_potion') if speedpotion and (not lplr.Character:GetAttribute('StatusEffect_speed')) then for _ = 1, 4 do if bedwars.Client:Get(remotes.ConsumeItem):CallServer({item = speedpotion.tool}) then break end end end end if Apple.Enabled and (not attribute or attribute:find('Health')) then if (lplr.Character:GetAttribute('Health') / lplr.Character:GetAttribute('MaxHealth')) <= (Health.Value / 100) then local apple = getItem('orange') or (not lplr.Character:GetAttribute('StatusEffect_golden_apple') and getItem('golden_apple')) or getItem('apple') if apple then bedwars.Client:Get(remotes.ConsumeItem):CallServerAsync({ item = apple.tool }) end end end if ShieldPotion.Enabled and (not attribute or attribute:find('Shield')) then if (lplr.Character:GetAttribute('Shield_POTION') or 0) == 0 then local shield = getItem('big_shield') or getItem('mini_shield') if shield then bedwars.Client:Get(remotes.ConsumeItem):CallServerAsync({ item = shield.tool }) end end end end end AutoConsume = vape.Categories.Inventory:CreateModule({ Name = 'AutoConsume', Function = function(callback) if callback then AutoConsume:Clean(vapeEvents.InventoryAmountChanged.Event:Connect(consumeCheck)) AutoConsume:Clean(vapeEvents.AttributeChanged.Event:Connect(function(attribute) if attribute:find('Shield') or attribute:find('Health') or attribute == 'StatusEffect_speed' then consumeCheck(attribute) end end)) consumeCheck() end end, Tooltip = 'Automatically heals for you when health or shield is under threshold.' }) Health = AutoConsume:CreateSlider({ Name = 'Health Percent', Min = 1, Max = 99, Default = 70, Suffix = '%' }) SpeedPotion = AutoConsume:CreateToggle({ Name = 'Speed Potions', Default = true }) Apple = AutoConsume:CreateToggle({ Name = 'Apple', Default = true }) ShieldPotion = AutoConsume:CreateToggle({ Name = 'Shield Potions', Default = true }) end) run(function() local AutoHotbar local Mode local Clear local List local Active local function CreateWindow(self) local selectedslot = 1 local window = Instance.new('Frame') window.Name = 'HotbarGUI' window.Size = UDim2.fromOffset(660, 465) window.Position = UDim2.fromScale(0.5, 0.5) window.BackgroundColor3 = uipallet.Main window.AnchorPoint = Vector2.new(0.5, 0.5) window.Visible = false window.Parent = vape.gui.ScaledGui local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.new(1, -10, 0, 20) title.Position = UDim2.fromOffset(math.abs(title.Size.X.Offset), 12) title.BackgroundTransparency = 1 title.Text = 'AutoHotbar' title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = uipallet.Text title.TextSize = 13 title.FontFace = uipallet.Font title.Parent = window local divider = Instance.new('Frame') divider.Name = 'Divider' divider.Size = UDim2.new(1, 0, 0, 1) divider.Position = UDim2.fromOffset(0, 40) divider.BackgroundColor3 = color.Light(uipallet.Main, 0.04) divider.BorderSizePixel = 0 divider.Parent = window addBlur(window) local modal = Instance.new('TextButton') modal.Text = '' modal.BackgroundTransparency = 1 modal.Modal = true modal.Parent = window local corner = Instance.new('UICorner') corner.CornerRadius = UDim.new(0, 5) corner.Parent = window local close = Instance.new('ImageButton') close.Name = 'Close' close.Size = UDim2.fromOffset(24, 24) close.Position = UDim2.new(1, -35, 0, 9) close.BackgroundColor3 = Color3.new(1, 1, 1) close.BackgroundTransparency = 1 close.Image = getcustomasset('newvape/assets/new/close.png') close.ImageColor3 = color.Light(uipallet.Text, 0.2) close.ImageTransparency = 0.5 close.AutoButtonColor = false close.Parent = window close.MouseEnter:Connect(function() close.ImageTransparency = 0.3 tween:Tween(close, TweenInfo.new(0.2), { BackgroundTransparency = 0.6 }) end) close.MouseLeave:Connect(function() close.ImageTransparency = 0.5 tween:Tween(close, TweenInfo.new(0.2), { BackgroundTransparency = 1 }) end) close.MouseButton1Click:Connect(function() window.Visible = false vape.gui.ScaledGui.ClickGui.Visible = true end) local closecorner = Instance.new('UICorner') closecorner.CornerRadius = UDim.new(1, 0) closecorner.Parent = close local bigslot = Instance.new('Frame') bigslot.Size = UDim2.fromOffset(110, 111) bigslot.Position = UDim2.fromOffset(11, 71) bigslot.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) bigslot.Parent = window local bigslotcorner = Instance.new('UICorner') bigslotcorner.CornerRadius = UDim.new(0, 4) bigslotcorner.Parent = bigslot local bigslotstroke = Instance.new('UIStroke') bigslotstroke.Color = color.Light(uipallet.Main, 0.034) bigslotstroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border bigslotstroke.Parent = bigslot local slotnum = Instance.new('TextLabel') slotnum.Size = UDim2.fromOffset(80, 20) slotnum.Position = UDim2.fromOffset(25, 200) slotnum.BackgroundTransparency = 1 slotnum.Text = 'SLOT 1' slotnum.TextColor3 = color.Dark(uipallet.Text, 0.1) slotnum.TextSize = 12 slotnum.FontFace = uipallet.Font slotnum.Parent = window for i = 1, 9 do local slotbkg = Instance.new('TextButton') slotbkg.Name = 'Slot'..i slotbkg.Size = UDim2.fromOffset(51, 52) slotbkg.Position = UDim2.fromOffset(89 + (i * 55), 382) slotbkg.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) slotbkg.Text = '' slotbkg.AutoButtonColor = false slotbkg.Parent = window local slotimage = Instance.new('ImageLabel') slotimage.Size = UDim2.fromOffset(32, 32) slotimage.Position = UDim2.new(0.5, -16, 0.5, -16) slotimage.BackgroundTransparency = 1 slotimage.Image = '' slotimage.Parent = slotbkg local slotcorner = Instance.new('UICorner') slotcorner.CornerRadius = UDim.new(0, 4) slotcorner.Parent = slotbkg local slotstroke = Instance.new('UIStroke') slotstroke.Color = color.Light(uipallet.Main, 0.04) slotstroke.Thickness = 2 slotstroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border slotstroke.Enabled = i == selectedslot slotstroke.Parent = slotbkg slotbkg.MouseEnter:Connect(function() slotbkg.BackgroundColor3 = color.Light(uipallet.Main, 0.034) end) slotbkg.MouseLeave:Connect(function() slotbkg.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) end) slotbkg.MouseButton1Click:Connect(function() window['Slot'..selectedslot].UIStroke.Enabled = false selectedslot = i slotstroke.Enabled = true slotnum.Text = 'SLOT '..selectedslot end) slotbkg.MouseButton2Click:Connect(function() local obj = self.Hotbars[self.Selected] if obj then window['Slot'..i].ImageLabel.Image = '' obj.Hotbar[tostring(i)] = nil obj.Object['Slot'..i].Image = ' ' end end) end local searchbkg = Instance.new('Frame') searchbkg.Size = UDim2.fromOffset(496, 31) searchbkg.Position = UDim2.fromOffset(142, 80) searchbkg.BackgroundColor3 = color.Light(uipallet.Main, 0.034) searchbkg.Parent = window local search = Instance.new('TextBox') search.Size = UDim2.new(1, -10, 0, 31) search.Position = UDim2.fromOffset(10, 0) search.BackgroundTransparency = 1 search.Text = '' search.PlaceholderText = '' search.TextXAlignment = Enum.TextXAlignment.Left search.TextColor3 = uipallet.Text search.TextSize = 12 search.FontFace = uipallet.Font search.ClearTextOnFocus = false search.Parent = searchbkg local searchcorner = Instance.new('UICorner') searchcorner.CornerRadius = UDim.new(0, 4) searchcorner.Parent = searchbkg local searchicon = Instance.new('ImageLabel') searchicon.Size = UDim2.fromOffset(14, 14) searchicon.Position = UDim2.new(1, -26, 0, 8) searchicon.BackgroundTransparency = 1 searchicon.Image = getcustomasset('newvape/assets/new/search.png') searchicon.ImageColor3 = color.Light(uipallet.Main, 0.37) searchicon.Parent = searchbkg local children = Instance.new('ScrollingFrame') children.Name = 'Children' children.Size = UDim2.fromOffset(500, 240) children.Position = UDim2.fromOffset(144, 122) children.BackgroundTransparency = 1 children.BorderSizePixel = 0 children.ScrollBarThickness = 2 children.ScrollBarImageTransparency = 0.75 children.CanvasSize = UDim2.new() children.Parent = window local windowlist = Instance.new('UIGridLayout') windowlist.SortOrder = Enum.SortOrder.LayoutOrder windowlist.FillDirectionMaxCells = 9 windowlist.CellSize = UDim2.fromOffset(51, 52) windowlist.CellPadding = UDim2.fromOffset(4, 3) windowlist.Parent = children windowlist:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() if vape.ThreadFix then setthreadidentity(8) end children.CanvasSize = UDim2.fromOffset(0, windowlist.AbsoluteContentSize.Y / vape.guiscale.Scale) end) table.insert(vape.Windows, window) local function createitem(id, image) local slotbkg = Instance.new('TextButton') slotbkg.BackgroundColor3 = color.Light(uipallet.Main, 0.02) slotbkg.Text = '' slotbkg.AutoButtonColor = false slotbkg.Parent = children local slotimage = Instance.new('ImageLabel') slotimage.Size = UDim2.fromOffset(32, 32) slotimage.Position = UDim2.new(0.5, -16, 0.5, -16) slotimage.BackgroundTransparency = 1 slotimage.Image = image slotimage.Parent = slotbkg local slotcorner = Instance.new('UICorner') slotcorner.CornerRadius = UDim.new(0, 4) slotcorner.Parent = slotbkg slotbkg.MouseEnter:Connect(function() slotbkg.BackgroundColor3 = color.Light(uipallet.Main, 0.04) end) slotbkg.MouseLeave:Connect(function() slotbkg.BackgroundColor3 = color.Light(uipallet.Main, 0.02) end) slotbkg.MouseButton1Click:Connect(function() local obj = self.Hotbars[self.Selected] if obj then window['Slot'..selectedslot].ImageLabel.Image = image obj.Hotbar[tostring(selectedslot)] = id obj.Object['Slot'..selectedslot].Image = image end end) end local function indexSearch(text) for _, v in children:GetChildren() do if v:IsA('TextButton') then v:ClearAllChildren() v:Destroy() end end if text == '' then for _, v in {'diamond_sword', 'diamond_pickaxe', 'diamond_axe', 'shears', 'wood_bow', 'wool_white', 'fireball', 'apple', 'iron', 'gold', 'diamond', 'emerald'} do createitem(v, bedwars.ItemMeta[v].image) end return end for i, v in bedwars.ItemMeta do if text:lower() == i:lower():sub(1, text:len()) then if not v.image then continue end createitem(i, v.image) end end end search:GetPropertyChangedSignal('Text'):Connect(function() indexSearch(search.Text) end) indexSearch('') return window end vape.Components.HotbarList = function(optionsettings, children, api) if vape.ThreadFix then setthreadidentity(8) end local optionapi = { Type = 'HotbarList', Hotbars = {}, Selected = 1 } local hotbarlist = Instance.new('TextButton') hotbarlist.Name = 'HotbarList' hotbarlist.Size = UDim2.fromOffset(220, 40) hotbarlist.BackgroundColor3 = optionsettings.Darker and (children.BackgroundColor3 == color.Dark(uipallet.Main, 0.02) and color.Dark(uipallet.Main, 0.04) or color.Dark(uipallet.Main, 0.02)) or children.BackgroundColor3 hotbarlist.Text = '' hotbarlist.BorderSizePixel = 0 hotbarlist.AutoButtonColor = false hotbarlist.Parent = children local textbkg = Instance.new('Frame') textbkg.Name = 'BKG' textbkg.Size = UDim2.new(1, -20, 0, 31) textbkg.Position = UDim2.fromOffset(10, 4) textbkg.BackgroundColor3 = color.Light(uipallet.Main, 0.034) textbkg.Parent = hotbarlist local textbkgcorner = Instance.new('UICorner') textbkgcorner.CornerRadius = UDim.new(0, 4) textbkgcorner.Parent = textbkg local textbutton = Instance.new('TextButton') textbutton.Name = 'HotbarList' textbutton.Size = UDim2.new(1, -2, 1, -2) textbutton.Position = UDim2.fromOffset(1, 1) textbutton.BackgroundColor3 = uipallet.Main textbutton.Text = '' textbutton.AutoButtonColor = false textbutton.Parent = textbkg textbutton.MouseEnter:Connect(function() tween:Tween(textbkg, TweenInfo.new(0.2), { BackgroundColor3 = color.Light(uipallet.Main, 0.14) }) end) textbutton.MouseLeave:Connect(function() tween:Tween(textbkg, TweenInfo.new(0.2), { BackgroundColor3 = color.Light(uipallet.Main, 0.034) }) end) local textbuttoncorner = Instance.new('UICorner') textbuttoncorner.CornerRadius = UDim.new(0, 4) textbuttoncorner.Parent = textbutton local textbuttonicon = Instance.new('ImageLabel') textbuttonicon.Size = UDim2.fromOffset(12, 12) textbuttonicon.Position = UDim2.fromScale(0.5, 0.5) textbuttonicon.AnchorPoint = Vector2.new(0.5, 0.5) textbuttonicon.BackgroundTransparency = 1 textbuttonicon.Image = getcustomasset('newvape/assets/new/add.png') textbuttonicon.ImageColor3 = Color3.fromHSV(0.46, 0.96, 0.52) textbuttonicon.Parent = textbutton local childrenlist = Instance.new('Frame') childrenlist.Size = UDim2.new(1, 0, 1, -40) childrenlist.Position = UDim2.fromOffset(0, 40) childrenlist.BackgroundTransparency = 1 childrenlist.Parent = hotbarlist local windowlist = Instance.new('UIListLayout') windowlist.SortOrder = Enum.SortOrder.LayoutOrder windowlist.HorizontalAlignment = Enum.HorizontalAlignment.Center windowlist.Padding = UDim.new(0, 3) windowlist.Parent = childrenlist windowlist:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() if vape.ThreadFix then setthreadidentity(8) end hotbarlist.Size = UDim2.fromOffset(220, math.min(43 + windowlist.AbsoluteContentSize.Y / vape.guiscale.Scale, 603)) end) textbutton.MouseButton1Click:Connect(function() optionapi:AddHotbar() end) optionapi.Window = CreateWindow(optionapi) function optionapi:Save(savetab) local hotbars = {} for _, v in self.Hotbars do table.insert(hotbars, v.Hotbar) end savetab.HotbarList = { Selected = self.Selected, Hotbars = hotbars } end function optionapi:Load(savetab) for _, v in self.Hotbars do v.Object:ClearAllChildren() v.Object:Destroy() table.clear(v.Hotbar) end table.clear(self.Hotbars) for _, v in savetab.Hotbars do self:AddHotbar(v) end self.Selected = savetab.Selected or 1 end function optionapi:AddHotbar(data) local hotbardata = {Hotbar = data or {}} table.insert(self.Hotbars, hotbardata) local hotbar = Instance.new('TextButton') hotbar.Size = UDim2.fromOffset(200, 27) hotbar.BackgroundColor3 = table.find(self.Hotbars, hotbardata) == self.Selected and color.Light(uipallet.Main, 0.034) or uipallet.Main hotbar.Text = '' hotbar.AutoButtonColor = false hotbar.Parent = childrenlist hotbardata.Object = hotbar local hotbarcorner = Instance.new('UICorner') hotbarcorner.CornerRadius = UDim.new(0, 4) hotbarcorner.Parent = hotbar for i = 1, 9 do local slot = Instance.new('ImageLabel') slot.Name = 'Slot'..i slot.Size = UDim2.fromOffset(17, 18) slot.Position = UDim2.fromOffset(-7 + (i * 18), 5) slot.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) slot.Image = hotbardata.Hotbar[tostring(i)] and bedwars.getIcon({itemType = hotbardata.Hotbar[tostring(i)]}, true) or '' slot.BorderSizePixel = 0 slot.Parent = hotbar end hotbar.MouseButton1Click:Connect(function() local ind = table.find(optionapi.Hotbars, hotbardata) if ind == optionapi.Selected then vape.gui.ScaledGui.ClickGui.Visible = false optionapi.Window.Visible = true for i = 1, 9 do optionapi.Window['Slot'..i].ImageLabel.Image = hotbardata.Hotbar[tostring(i)] and bedwars.getIcon({itemType = hotbardata.Hotbar[tostring(i)]}, true) or '' end else if optionapi.Hotbars[optionapi.Selected] then optionapi.Hotbars[optionapi.Selected].Object.BackgroundColor3 = uipallet.Main end hotbar.BackgroundColor3 = color.Light(uipallet.Main, 0.034) optionapi.Selected = ind end end) local close = Instance.new('ImageButton') close.Name = 'Close' close.Size = UDim2.fromOffset(16, 16) close.Position = UDim2.new(1, -23, 0, 6) close.BackgroundColor3 = Color3.new(1, 1, 1) close.BackgroundTransparency = 1 close.Image = getcustomasset('newvape/assets/new/closemini.png') close.ImageColor3 = color.Light(uipallet.Text, 0.2) close.ImageTransparency = 0.5 close.AutoButtonColor = false close.Parent = hotbar local closecorner = Instance.new('UICorner') closecorner.CornerRadius = UDim.new(1, 0) closecorner.Parent = close close.MouseEnter:Connect(function() close.ImageTransparency = 0.3 tween:Tween(close, TweenInfo.new(0.2), { BackgroundTransparency = 0.6 }) end) close.MouseLeave:Connect(function() close.ImageTransparency = 0.5 tween:Tween(close, TweenInfo.new(0.2), { BackgroundTransparency = 1 }) end) close.MouseButton1Click:Connect(function() local ind = table.find(self.Hotbars, hotbardata) local obj = self.Hotbars[self.Selected] local obj2 = self.Hotbars[ind] if obj and obj2 then obj2.Object:ClearAllChildren() obj2.Object:Destroy() table.remove(self.Hotbars, ind) ind = table.find(self.Hotbars, obj) self.Selected = table.find(self.Hotbars, obj) or 1 end end) end api.Options.HotbarList = optionapi return optionapi end local function getBlock() local clone = table.clone(store.inventory.inventory.items) table.sort(clone, function(a, b) return a.amount < b.amount end) for _, item in clone do local block = bedwars.ItemMeta[item.itemType].block if block and not block.seeThrough then return item end end end local function getCustomItem(v) if v == 'diamond_sword' then local sword = store.tools.sword v = sword and sword.itemType or 'wood_sword' elseif v == 'diamond_pickaxe' then local pickaxe = store.tools.stone v = pickaxe and pickaxe.itemType or 'wood_pickaxe' elseif v == 'diamond_axe' then local axe = store.tools.wood v = axe and axe.itemType or 'wood_axe' elseif v == 'wood_bow' then local bow = getBow() v = bow and bow.itemType or 'wood_bow' elseif v == 'wool_white' then local block = getBlock() v = block and block.itemType or 'wool_white' end return v end local function findItemInTable(tab, item) for slot, v in tab do if item.itemType == getCustomItem(v) then return tonumber(slot) end end end local function findInHotbar(item) for i, v in store.inventory.hotbar do if v.item and v.item.itemType == item.itemType then return i - 1, v.item end end end local function findInInventory(item) for _, v in store.inventory.inventory.items do if v.itemType == item.itemType then return v end end end local function dispatch(...) bedwars.Store:dispatch(...) vapeEvents.InventoryChanged.Event:Wait() end local function sortCallback() if Active then return end Active = true local items = (List.Hotbars[List.Selected] and List.Hotbars[List.Selected].Hotbar or {}) for _, v in store.inventory.inventory.items do local slot = findItemInTable(items, v) if slot then local olditem = store.inventory.hotbar[slot] if olditem.item and olditem.item.itemType == v.itemType then continue end if olditem.item then dispatch({ type = 'InventoryRemoveFromHotbar', slot = slot - 1 }) end local newslot = findInHotbar(v) if newslot then dispatch({ type = 'InventoryRemoveFromHotbar', slot = newslot }) if olditem.item then dispatch({ type = 'InventoryAddToHotbar', item = findInInventory(olditem.item), slot = newslot }) end end dispatch({ type = 'InventoryAddToHotbar', item = findInInventory(v), slot = slot - 1 }) elseif Clear.Enabled then local newslot = findInHotbar(v) if newslot then dispatch({ type = 'InventoryRemoveFromHotbar', slot = newslot }) end end end Active = false end AutoHotbar = vape.Categories.Inventory:CreateModule({ Name = 'AutoHotbar', Function = function(callback) if callback then task.spawn(sortCallback) if Mode.Value == 'On Key' then AutoHotbar:Toggle() return end AutoHotbar:Clean(vapeEvents.InventoryAmountChanged.Event:Connect(sortCallback)) end end, Tooltip = 'Automatically arranges hotbar to your liking.' }) Mode = AutoHotbar:CreateDropdown({ Name = 'Activation', List = {'Toggle', 'On Key'}, Function = function() if AutoHotbar.Enabled then AutoHotbar:Toggle() AutoHotbar:Toggle() end end }) Clear = AutoHotbar:CreateToggle({Name = 'Clear Hotbar'}) List = AutoHotbar:CreateHotbarList({}) end) run(function() local Value local oldclickhold, oldshowprogress local FastConsume = vape.Categories.Inventory:CreateModule({ Name = 'FastConsume', Function = function(callback) if callback then oldclickhold = bedwars.ClickHold.startClick oldshowprogress = bedwars.ClickHold.showProgress bedwars.ClickHold.startClick = function(self) self.startedClickTime = tick() local handle = self:showProgress() local clicktime = self.startedClickTime bedwars.RuntimeLib.Promise.defer(function() task.wait(self.durationSeconds * (Value.Value / 40)) if handle == self.handle and clicktime == self.startedClickTime and self.closeOnComplete then self:hideProgress() if self.onComplete then self.onComplete() end if self.onPartialComplete then self.onPartialComplete(1) end self.startedClickTime = -1 end end) end bedwars.ClickHold.showProgress = function(self) local roact = debug.getupvalue(oldshowprogress, 1) local countdown = roact.mount(roact.createElement('ScreenGui', {}, { roact.createElement('Frame', { [roact.Ref] = self.wrapperRef, Size = UDim2.new(), Position = UDim2.fromScale(0.5, 0.55), AnchorPoint = Vector2.new(0.5, 0), BackgroundColor3 = Color3.fromRGB(0, 0, 0), BackgroundTransparency = 0.8 }, { roact.createElement('Frame', { [roact.Ref] = self.progressRef, Size = UDim2.fromScale(0, 1), BackgroundColor3 = Color3.new(1, 1, 1), BackgroundTransparency = 0.5 }) }) }), lplr:FindFirstChild('PlayerGui')) self.handle = countdown local sizetween = tweenService:Create(self.wrapperRef:getValue(), TweenInfo.new(0.1), { Size = UDim2.fromScale(0.11, 0.005) }) local countdowntween = tweenService:Create(self.progressRef:getValue(), TweenInfo.new(self.durationSeconds * (Value.Value / 100), Enum.EasingStyle.Linear), { Size = UDim2.fromScale(1, 1) }) sizetween:Play() countdowntween:Play() table.insert(self.tweens, countdowntween) table.insert(self.tweens, sizetween) return countdown end else bedwars.ClickHold.startClick = oldclickhold bedwars.ClickHold.showProgress = oldshowprogress oldclickhold = nil oldshowprogress = nil end end, Tooltip = 'Use/Consume items quicker.' }) Value = FastConsume:CreateSlider({ Name = 'Multiplier', Min = 0, Max = 100 }) end) run(function() local FastDrop FastDrop = vape.Categories.Inventory:CreateModule({ Name = 'FastDrop', Function = function(callback) if callback then repeat if entitylib.isAlive and (not store.inventory.opened) and (inputService:IsKeyDown(Enum.KeyCode.H) or inputService:IsKeyDown(Enum.KeyCode.Backspace)) and inputService:GetFocusedTextBox() == nil then task.spawn(bedwars.ItemDropController.dropItemInHand) task.wait() else task.wait(0.1) end until not FastDrop.Enabled end end, Tooltip = 'Drops items fast when you hold Q' }) end) run(function() local BedPlates local Background local Color = {} local Reference = {} local Folder = Instance.new('Folder') Folder.Parent = vape.gui local function scanSide(self, start, tab) for _, side in sides do for i = 1, 15 do local block = getPlacedBlock(start + (side * i)) if not block or block == self then break end if not block:GetAttribute('NoBreak') and not table.find(tab, block.Name) then table.insert(tab, block.Name) end end end end local function refreshAdornee(v) for _, obj in v.Frame:GetChildren() do if obj:IsA('ImageLabel') and obj.Name ~= 'Blur' then obj:Destroy() end end local start = v.Adornee.Position local alreadygot = {} scanSide(v.Adornee, start, alreadygot) scanSide(v.Adornee, start + Vector3.new(0, 0, 3), alreadygot) table.sort(alreadygot, function(a, b) return (bedwars.ItemMeta[a].block and bedwars.ItemMeta[a].block.health or 0) > (bedwars.ItemMeta[b].block and bedwars.ItemMeta[b].block.health or 0) end) v.Enabled = #alreadygot > 0 for _, block in alreadygot do local blockimage = Instance.new('ImageLabel') blockimage.Size = UDim2.fromOffset(32, 32) blockimage.BackgroundTransparency = 1 blockimage.Image = bedwars.getIcon({itemType = block}, true) blockimage.Parent = v.Frame end end local function Added(v) local billboard = Instance.new('BillboardGui') billboard.Parent = Folder billboard.Name = 'bed' billboard.StudsOffsetWorldSpace = Vector3.new(0, 3, 0) billboard.Size = UDim2.fromOffset(36, 36) billboard.AlwaysOnTop = true billboard.ClipsDescendants = false billboard.Adornee = v local blur = addBlur(billboard) blur.Visible = Background.Enabled local frame = Instance.new('Frame') frame.Size = UDim2.fromScale(1, 1) frame.BackgroundColor3 = Color3.fromHSV(Color.Hue, Color.Sat, Color.Value) frame.BackgroundTransparency = 1 - (Background.Enabled and Color.Opacity or 0) frame.Parent = billboard local layout = Instance.new('UIListLayout') layout.FillDirection = Enum.FillDirection.Horizontal layout.Padding = UDim.new(0, 4) layout.VerticalAlignment = Enum.VerticalAlignment.Center layout.HorizontalAlignment = Enum.HorizontalAlignment.Center layout:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() billboard.Size = UDim2.fromOffset(math.max(layout.AbsoluteContentSize.X + 4, 36), 36) end) layout.Parent = frame local corner = Instance.new('UICorner') corner.CornerRadius = UDim.new(0, 4) corner.Parent = frame Reference[v] = billboard refreshAdornee(billboard) end local function refreshNear(data) data = data.blockRef.blockPosition * 3 for i, v in Reference do if (data - i.Position).Magnitude <= 30 then refreshAdornee(v) end end end BedPlates = vape.Categories.Minigames:CreateModule({ Name = 'BedPlates', Function = function(callback) if callback then for _, v in collectionService:GetTagged('bed') do task.spawn(Added, v) end BedPlates:Clean(vapeEvents.PlaceBlockEvent.Event:Connect(refreshNear)) BedPlates:Clean(vapeEvents.BreakBlockEvent.Event:Connect(refreshNear)) BedPlates:Clean(collectionService:GetInstanceAddedSignal('bed'):Connect(Added)) BedPlates:Clean(collectionService:GetInstanceRemovedSignal('bed'):Connect(function(v) if Reference[v] then Reference[v]:Destroy() Reference[v]:ClearAllChildren() Reference[v] = nil end end)) else table.clear(Reference) Folder:ClearAllChildren() end end, Tooltip = 'Displays blocks over the bed' }) Background = BedPlates:CreateToggle({ Name = 'Background', Function = function(callback) if Color.Object then Color.Object.Visible = callback end for _, v in Reference do v.Frame.BackgroundTransparency = 1 - (callback and Color.Opacity or 0) v.Blur.Visible = callback end end, Default = true }) Color = BedPlates:CreateColorSlider({ Name = 'Background Color', DefaultValue = 0, DefaultOpacity = 0.5, Function = function(hue, sat, val, opacity) for _, v in Reference do v.Frame.BackgroundColor3 = Color3.fromHSV(hue, sat, val) v.Frame.BackgroundTransparency = 1 - opacity end end, Darker = true }) end) run(function() local Breaker local Range local BreakSpeed local UpdateRate local Custom local Bed local LuckyBlock local IronOre local Effect local CustomHealth = {} local Animation local SelfBreak local InstantBreak local LimitItem local customlist, parts = {}, {} local function customHealthbar(self, blockRef, health, maxHealth, changeHealth, block) if block:GetAttribute('NoHealthbar') then return end if not self.healthbarPart or not self.healthbarBlockRef or self.healthbarBlockRef.blockPosition ~= blockRef.blockPosition then self.healthbarMaid:DoCleaning() self.healthbarBlockRef = blockRef local create = bedwars.Roact.createElement local percent = math.clamp(health / maxHealth, 0, 1) local cleanCheck = true local part = Instance.new('Part') part.Size = Vector3.one part.CFrame = CFrame.new(bedwars.BlockController:getWorldPosition(blockRef.blockPosition)) part.Transparency = 1 part.Anchored = true part.CanCollide = false part.Parent = workspace self.healthbarPart = part bedwars.QueryUtil:setQueryIgnored(self.healthbarPart, true) local mounted = bedwars.Roact.mount(create('BillboardGui', { Size = UDim2.fromOffset(249, 102), StudsOffset = Vector3.new(0, 2.5, 0), Adornee = part, MaxDistance = 40, AlwaysOnTop = true }, { create('Frame', { Size = UDim2.fromOffset(160, 50), Position = UDim2.fromOffset(44, 32), BackgroundColor3 = Color3.new(), BackgroundTransparency = 0.5 }, { create('UICorner', {CornerRadius = UDim.new(0, 5)}), create('ImageLabel', { Size = UDim2.new(1, 89, 1, 52), Position = UDim2.fromOffset(-48, -31), BackgroundTransparency = 1, Image = getcustomasset('newvape/assets/new/blur.png'), ScaleType = Enum.ScaleType.Slice, SliceCenter = Rect.new(52, 31, 261, 502) }), create('TextLabel', { Size = UDim2.fromOffset(145, 14), Position = UDim2.fromOffset(13, 12), BackgroundTransparency = 1, Text = bedwars.ItemMeta[block.Name].displayName or block.Name, TextXAlignment = Enum.TextXAlignment.Left, TextYAlignment = Enum.TextYAlignment.Top, TextColor3 = Color3.new(), TextScaled = true, Font = Enum.Font.Arial }), create('TextLabel', { Size = UDim2.fromOffset(145, 14), Position = UDim2.fromOffset(12, 11), BackgroundTransparency = 1, Text = bedwars.ItemMeta[block.Name].displayName or block.Name, TextXAlignment = Enum.TextXAlignment.Left, TextYAlignment = Enum.TextYAlignment.Top, TextColor3 = color.Dark(uipallet.Text, 0.16), TextScaled = true, Font = Enum.Font.Arial }), create('Frame', { Size = UDim2.fromOffset(138, 4), Position = UDim2.fromOffset(12, 32), BackgroundColor3 = uipallet.Main }, { create('UICorner', {CornerRadius = UDim.new(1, 0)}), create('Frame', { [bedwars.Roact.Ref] = self.healthbarProgressRef, Size = UDim2.fromScale(percent, 1), BackgroundColor3 = Color3.fromHSV(math.clamp(percent / 2.5, 0, 1), 0.89, 0.75) }, {create('UICorner', {CornerRadius = UDim.new(1, 0)})}) }) }) }), part) self.healthbarMaid:GiveTask(function() cleanCheck = false self.healthbarBlockRef = nil bedwars.Roact.unmount(mounted) if self.healthbarPart then self.healthbarPart:Destroy() end self.healthbarPart = nil end) bedwars.RuntimeLib.Promise.delay(5):andThen(function() if cleanCheck then self.healthbarMaid:DoCleaning() end end) end local newpercent = math.clamp((health - changeHealth) / maxHealth, 0, 1) tweenService:Create(self.healthbarProgressRef:getValue(), TweenInfo.new(0.3), { Size = UDim2.fromScale(newpercent, 1), BackgroundColor3 = Color3.fromHSV(math.clamp(newpercent / 2.5, 0, 1), 0.89, 0.75) }):Play() end local hit = 0 local function attemptBreak(tab, localPosition) if not tab then return end for _, v in tab do if (v.Position - localPosition).Magnitude < Range.Value and bedwars.BlockController:isBlockBreakable({blockPosition = v.Position / 3}, lplr) then if not SelfBreak.Enabled and v:GetAttribute('PlacedByUserId') == lplr.UserId then continue end if (v:GetAttribute('BedShieldEndTime') or 0) > workspace:GetServerTimeNow() then continue end if LimitItem.Enabled and not (store.hand.tool and bedwars.ItemMeta[store.hand.tool.Name].breakBlock) then continue end hit += 1 local target, path, endpos = bedwars.breakBlock(v, Effect.Enabled, Animation.Enabled, CustomHealth.Enabled and customHealthbar or nil, InstantBreak.Enabled) if path then local currentnode = target for _, part in parts do part.Position = currentnode or Vector3.zero if currentnode then part.BoxHandleAdornment.Color3 = currentnode == endpos and Color3.new(1, 0.2, 0.2) or currentnode == target and Color3.new(0.2, 0.2, 1) or Color3.new(0.2, 1, 0.2) end currentnode = path[currentnode] end end task.wait(InstantBreak.Enabled and (store.damageBlockFail > tick() and 4.5 or 0) or BreakSpeed.Value) return true end end return false end Breaker = vape.Categories.Minigames:CreateModule({ Name = 'Breaker', Function = function(callback) if callback then for _ = 1, 30 do local part = Instance.new('Part') part.Anchored = true part.CanQuery = false part.CanCollide = false part.Transparency = 1 part.Parent = gameCamera local highlight = Instance.new('BoxHandleAdornment') highlight.Size = Vector3.one highlight.AlwaysOnTop = true highlight.ZIndex = 1 highlight.Transparency = 0.5 highlight.Adornee = part highlight.Parent = part table.insert(parts, part) end local beds = collection('bed', Breaker) local luckyblock = collection('LuckyBlock', Breaker) local ironores = collection('iron-ore', Breaker) customlist = collection('block', Breaker, function(tab, obj) if table.find(Custom.ListEnabled, obj.Name) then table.insert(tab, obj) end end) repeat task.wait(1 / UpdateRate.Value) if not Breaker.Enabled then break end if entitylib.isAlive then local localPosition = entitylib.character.RootPart.Position if attemptBreak(Bed.Enabled and beds, localPosition) then continue end if attemptBreak(customlist, localPosition) then continue end if attemptBreak(LuckyBlock.Enabled and luckyblock, localPosition) then continue end if attemptBreak(IronOre.Enabled and ironores, localPosition) then continue end for _, v in parts do v.Position = Vector3.zero end end until not Breaker.Enabled else for _, v in parts do v:ClearAllChildren() v:Destroy() end table.clear(parts) end end, Tooltip = 'Break blocks around you automatically' }) Range = Breaker:CreateSlider({ Name = 'Break range', Min = 1, Max = 30, Default = 30, Suffix = function(val) return val == 1 and 'stud' or 'studs' end }) BreakSpeed = Breaker:CreateSlider({ Name = 'Break speed', Min = 0, Max = 0.3, Default = 0.25, Decimal = 100, Suffix = 'seconds' }) UpdateRate = Breaker:CreateSlider({ Name = 'Update rate', Min = 1, Max = 120, Default = 60, Suffix = 'hz' }) Custom = Breaker:CreateTextList({ Name = 'Custom', Function = function() if not customlist then return end table.clear(customlist) for _, obj in store.blocks do if table.find(Custom.ListEnabled, obj.Name) then table.insert(customlist, obj) end end end }) Bed = Breaker:CreateToggle({ Name = 'Break Bed', Default = true }) LuckyBlock = Breaker:CreateToggle({ Name = 'Break Lucky Block', Default = true }) IronOre = Breaker:CreateToggle({ Name = 'Break Iron Ore', Default = true }) Effect = Breaker:CreateToggle({ Name = 'Show Healthbar & Effects', Function = function(callback) if CustomHealth.Object then CustomHealth.Object.Visible = callback end end, Default = true }) CustomHealth = Breaker:CreateToggle({ Name = 'Custom Healthbar', Default = true, Darker = true }) Animation = Breaker:CreateToggle({Name = 'Animation'}) SelfBreak = Breaker:CreateToggle({Name = 'Self Break'}) InstantBreak = Breaker:CreateToggle({Name = 'Instant Break'}) LimitItem = Breaker:CreateToggle({ Name = 'Limit to items', Tooltip = 'Only breaks when tools are held' }) end) run(function() local BedBreakEffect local Mode local List local NameToId = {} BedBreakEffect = vape.Legit:CreateModule({ Name = 'Bed Break Effect', Function = function(callback) if callback then BedBreakEffect:Clean(vapeEvents.BedwarsBedBreak.Event:Connect(function(data) firesignal(bedwars.Client:Get('BedBreakEffectTriggered').instance.OnClientEvent, { player = data.player, position = data.bedBlockPosition * 3, effectType = NameToId[List.Value], teamId = data.brokenBedTeam.id, centerBedPosition = data.bedBlockPosition * 3 }) end)) end end, Tooltip = 'Custom bed break effects' }) local BreakEffectName = {} for i, v in bedwars.BedBreakEffectMeta do table.insert(BreakEffectName, v.name) NameToId[v.name] = i end table.sort(BreakEffectName) List = BedBreakEffect:CreateDropdown({ Name = 'Effect', List = BreakEffectName }) end) run(function() vape.Legit:CreateModule({ Name = 'Clean Kit', Function = function(callback) if callback then bedwars.WindWalkerController.spawnOrb = function() end local zephyreffect = lplr.PlayerGui:FindFirstChild('WindWalkerEffect', true) if zephyreffect then zephyreffect.Visible = false end end end, Tooltip = 'Removes zephyr status indicator' }) end) run(function() local old local Image local Crosshair = vape.Legit:CreateModule({ Name = 'Crosshair', Function = function(callback) if callback then old = debug.getconstant(bedwars.ViewmodelController.showCrosshair, 25) debug.setconstant(bedwars.ViewmodelController.showCrosshair, 25, Image.Value) debug.setconstant(bedwars.ViewmodelController.showCrosshair, 37, Image.Value) else debug.setconstant(bedwars.ViewmodelController.showCrosshair, 25, old) debug.setconstant(bedwars.ViewmodelController.showCrosshair, 37, old) old = nil end if bedwars.ViewmodelController.crosshair then bedwars.ViewmodelController:hideCrosshair() bedwars.ViewmodelController:showCrosshair() end end, Tooltip = 'Custom first person crosshair depending on the image choosen.' }) Image = Crosshair:CreateTextBox({ Name = 'Image', Placeholder = 'image id (roblox)', Function = function(enter) if enter and Crosshair.Enabled then Crosshair:Toggle() Crosshair:Toggle() end end }) end) run(function() local DamageIndicator local FontOption local Color local Size local Anchor local Stroke local suc, tab = pcall(function() return debug.getupvalue(bedwars.DamageIndicator, 2) end) tab = suc and tab or {} local oldvalues, oldfont = {} DamageIndicator = vape.Legit:CreateModule({ Name = 'Damage Indicator', Function = function(callback) if callback then oldvalues = table.clone(tab) oldfont = debug.getconstant(bedwars.DamageIndicator, 86) debug.setconstant(bedwars.DamageIndicator, 86, Enum.Font[FontOption.Value]) debug.setconstant(bedwars.DamageIndicator, 119, Stroke.Enabled and 'Thickness' or 'Enabled') tab.strokeThickness = Stroke.Enabled and 1 or false tab.textSize = Size.Value tab.blowUpSize = Size.Value tab.blowUpDuration = 0 tab.baseColor = Color3.fromHSV(Color.Hue, Color.Sat, Color.Value) tab.blowUpCompleteDuration = 0 tab.anchoredDuration = Anchor.Value else for i, v in oldvalues do tab[i] = v end debug.setconstant(bedwars.DamageIndicator, 86, oldfont) debug.setconstant(bedwars.DamageIndicator, 119, 'Thickness') end end, Tooltip = 'Customize the damage indicator' }) local fontitems = {'GothamBlack'} for _, v in Enum.Font:GetEnumItems() do if v.Name ~= 'GothamBlack' then table.insert(fontitems, v.Name) end end FontOption = DamageIndicator:CreateDropdown({ Name = 'Font', List = fontitems, Function = function(val) if DamageIndicator.Enabled then debug.setconstant(bedwars.DamageIndicator, 86, Enum.Font[val]) end end }) Color = DamageIndicator:CreateColorSlider({ Name = 'Color', DefaultHue = 0, Function = function(hue, sat, val) if DamageIndicator.Enabled then tab.baseColor = Color3.fromHSV(hue, sat, val) end end }) Size = DamageIndicator:CreateSlider({ Name = 'Size', Min = 1, Max = 32, Default = 32, Function = function(val) if DamageIndicator.Enabled then tab.textSize = val tab.blowUpSize = val end end }) Anchor = DamageIndicator:CreateSlider({ Name = 'Anchor', Min = 0, Max = 1, Decimal = 10, Function = function(val) if DamageIndicator.Enabled then tab.anchoredDuration = val end end }) Stroke = DamageIndicator:CreateToggle({ Name = 'Stroke', Function = function(callback) if DamageIndicator.Enabled then debug.setconstant(bedwars.DamageIndicator, 119, callback and 'Thickness' or 'Enabled') tab.strokeThickness = callback and 1 or false end end }) end) run(function() local FOV local Value local old, old2 FOV = vape.Legit:CreateModule({ Name = 'FOV', Function = function(callback) if callback then old = bedwars.FovController.setFOV old2 = bedwars.FovController.getFOV bedwars.FovController.setFOV = function(self) return old(self, Value.Value) end bedwars.FovController.getFOV = function() return Value.Value end else bedwars.FovController.setFOV = old bedwars.FovController.getFOV = old2 end bedwars.FovController:setFOV(bedwars.Store:getState().Settings.fov) end, Tooltip = 'Adjusts camera vision' }) Value = FOV:CreateSlider({ Name = 'FOV', Min = 30, Max = 120 }) end) run(function() local HitColor local Color local done = {} HitColor = vape.Legit:CreateModule({ Name = 'Hit Color', Function = function(callback) if callback then repeat for i, v in entitylib.List do local highlight = v.Character and v.Character:FindFirstChild('_DamageHighlight_') if highlight then if not table.find(done, highlight) then table.insert(done, highlight) end highlight.FillColor = Color3.fromHSV(Color.Hue, Color.Sat, Color.Value) highlight.FillTransparency = Color.Opacity end end task.wait(0.1) until not HitColor.Enabled else for i, v in done do v.FillColor = Color3.new(1, 0, 0) v.FillTransparency = 0.4 end table.clear(done) end end, Tooltip = 'Customize the hit highlight options' }) Color = HitColor:CreateColorSlider({ Name = 'Color', DefaultOpacity = 0.4 }) end) run(function() vape.Legit:CreateModule({ Name = 'HitFix', Function = function(callback) debug.setconstant(bedwars.SwordController.swingSwordAtMouse, 23, callback and 'raycast' or 'Raycast') debug.setupvalue(bedwars.SwordController.swingSwordAtMouse, 4, callback and bedwars.QueryUtil or workspace) end, Tooltip = 'Changes the raycast function to the correct one' }) end) run(function() local Interface local HotbarOpenInventory = require(lplr.PlayerScripts.TS.controllers.global.hotbar.ui['hotbar-open-inventory']).HotbarOpenInventory local HotbarHealthbar = require(lplr.PlayerScripts.TS.controllers.global.hotbar.ui.healthbar['hotbar-healthbar']).HotbarHealthbar local HotbarApp = getRoactRender(require(lplr.PlayerScripts.TS.controllers.global.hotbar.ui['hotbar-app']).HotbarApp.render) local old, new = {}, {} vape:Clean(function() for _, v in new do table.clear(v) end for _, v in old do table.clear(v) end table.clear(new) table.clear(old) end) local function modifyconstant(func, ind, val) if not func then return end if not old[func] then old[func] = {} end if not new[func] then new[func] = {} end if not old[func][ind] then old[func][ind] = debug.getconstant(func, ind) end if typeof(old[func][ind]) ~= typeof(val) then return end new[func][ind] = val if Interface.Enabled then if val then debug.setconstant(func, ind, val) else debug.setconstant(func, ind, old[func][ind]) old[func][ind] = nil end end end Interface = vape.Legit:CreateModule({ Name = 'Interface', Function = function(callback) for i, v in (callback and new or old) do for i2, v2 in v do debug.setconstant(i, i2, v2) end end end, Tooltip = 'Customize bedwars UI' }) local fontitems = {'LuckiestGuy'} for _, v in Enum.Font:GetEnumItems() do if v.Name ~= 'LuckiestGuy' then table.insert(fontitems, v.Name) end end Interface:CreateDropdown({ Name = 'Health Font', List = fontitems, Function = function(val) modifyconstant(HotbarHealthbar.render, 77, val) end }) Interface:CreateColorSlider({ Name = 'Health Color', Function = function(hue, sat, val) modifyconstant(HotbarHealthbar.render, 16, tonumber(Color3.fromHSV(hue, sat, val):ToHex(), 16)) if Interface.Enabled then local hotbar = lplr.PlayerGui:FindFirstChild('hotbar') hotbar = hotbar and hotbar:FindFirstChild('HealthbarProgressWrapper', true) if hotbar then hotbar['1'].BackgroundColor3 = Color3.fromHSV(hue, sat, val) end end end }) Interface:CreateColorSlider({ Name = 'Hotbar Color', DefaultOpacity = 0.8, Function = function(hue, sat, val, opacity) local func = oldinvrender or HotbarOpenInventory.render modifyconstant(debug.getupvalue(HotbarApp, 23).render, 51, tonumber(Color3.fromHSV(hue, sat, val):ToHex(), 16)) modifyconstant(debug.getupvalue(HotbarApp, 23).render, 58, tonumber(Color3.fromHSV(hue, sat, math.clamp(val > 0.5 and val - 0.2 or val + 0.2, 0, 1)):ToHex(), 16)) modifyconstant(debug.getupvalue(HotbarApp, 23).render, 54, 1 - opacity) modifyconstant(debug.getupvalue(HotbarApp, 23).render, 55, math.clamp(1.2 - opacity, 0, 1)) modifyconstant(func, 31, tonumber(Color3.fromHSV(hue, sat, val):ToHex(), 16)) modifyconstant(func, 32, math.clamp(1.2 - opacity, 0, 1)) modifyconstant(func, 34, tonumber(Color3.fromHSV(hue, sat, math.clamp(val > 0.5 and val - 0.2 or val + 0.2, 0, 1)):ToHex(), 16)) end }) end) run(function() local ReachDisplay local label ReachDisplay = vape.Legit:CreateModule({ Name = 'Reach Display', Function = function(callback) if callback then repeat label.Text = (store.attackReachUpdate > tick() and store.attackReach or '0.00')..' studs' task.wait(0.4) until not ReachDisplay.Enabled end end, Size = UDim2.fromOffset(100, 41) }) ReachDisplay:CreateFont({ Name = 'Font', Blacklist = 'Gotham', Function = function(val) label.FontFace = val end }) ReachDisplay:CreateColorSlider({ Name = 'Color', DefaultValue = 0, DefaultOpacity = 0.5, Function = function(hue, sat, val, opacity) label.BackgroundColor3 = Color3.fromHSV(hue, sat, val) label.BackgroundTransparency = 1 - opacity end }) label = Instance.new('TextLabel') label.Size = UDim2.fromScale(1, 1) label.BackgroundTransparency = 0.5 label.TextSize = 15 label.Font = Enum.Font.Gotham label.Text = '0.00 studs' label.TextColor3 = Color3.new(1, 1, 1) label.BackgroundColor3 = Color3.new() label.Parent = ReachDisplay.Children local corner = Instance.new('UICorner') corner.CornerRadius = UDim.new(0, 4) corner.Parent = label end) run(function() local SongBeats local List local FOV local FOVValue = {} local Volume local alreadypicked = {} local beattick = tick() local oldfov, songobj, songbpm, songtween local function choosesong() local list = List.ListEnabled if #alreadypicked >= #list then table.clear(alreadypicked) end if #list <= 0 then notif('SongBeats', 'no songs', 10) SongBeats:Toggle() return end local chosensong = list[math.random(1, #list)] if #list > 1 and table.find(alreadypicked, chosensong) then repeat task.wait() chosensong = list[math.random(1, #list)] until not table.find(alreadypicked, chosensong) or not SongBeats.Enabled end if not SongBeats.Enabled then return end local split = chosensong:split('/') if not isfile(split[1]) then notif('SongBeats', 'Missing song ('..split[1]..')', 10) SongBeats:Toggle() return end songobj.SoundId = assetfunction(split[1]) repeat task.wait() until songobj.IsLoaded or not SongBeats.Enabled if SongBeats.Enabled then beattick = tick() + (tonumber(split[3]) or 0) songbpm = 60 / (tonumber(split[2]) or 50) songobj:Play() end end SongBeats = vape.Legit:CreateModule({ Name = 'Song Beats', Function = function(callback) if callback then songobj = Instance.new('Sound') songobj.Volume = Volume.Value / 100 songobj.Parent = workspace repeat if not songobj.Playing then choosesong() end if beattick < tick() and SongBeats.Enabled and FOV.Enabled then beattick = tick() + songbpm oldfov = math.min(bedwars.FovController:getFOV() * (bedwars.SprintController.sprinting and 1.1 or 1), 120) gameCamera.FieldOfView = oldfov - FOVValue.Value songtween = tweenService:Create(gameCamera, TweenInfo.new(math.min(songbpm, 0.2), Enum.EasingStyle.Linear), {FieldOfView = oldfov}) songtween:Play() end task.wait() until not SongBeats.Enabled else if songobj then songobj:Destroy() end if songtween then songtween:Cancel() end if oldfov then gameCamera.FieldOfView = oldfov end table.clear(alreadypicked) end end, Tooltip = 'Built in mp3 player' }) List = SongBeats:CreateTextList({ Name = 'Songs', Placeholder = 'filepath/bpm/start' }) FOV = SongBeats:CreateToggle({ Name = 'Beat FOV', Function = function(callback) if FOVValue.Object then FOVValue.Object.Visible = callback end if SongBeats.Enabled then SongBeats:Toggle() SongBeats:Toggle() end end, Default = true }) FOVValue = SongBeats:CreateSlider({ Name = 'Adjustment', Min = 1, Max = 30, Default = 5, Darker = true }) Volume = SongBeats:CreateSlider({ Name = 'Volume', Function = function(val) if songobj then songobj.Volume = val / 100 end end, Min = 1, Max = 100, Default = 100, Suffix = '%' }) end) run(function() local SoundChanger local List local soundlist = {} local old SoundChanger = vape.Legit:CreateModule({ Name = 'SoundChanger', Function = function(callback) if callback then old = bedwars.SoundManager.playSound bedwars.SoundManager.playSound = function(self, id, ...) if soundlist[id] then id = soundlist[id] end return old(self, id, ...) end else bedwars.SoundManager.playSound = old old = nil end end, Tooltip = 'Change ingame sounds to custom ones.' }) List = SoundChanger:CreateTextList({ Name = 'Sounds', Placeholder = '(DAMAGE_1/ben.mp3)', Function = function() table.clear(soundlist) for _, entry in List.ListEnabled do local split = entry:split('/') local id = bedwars.SoundList[split[1]] if id and #split > 1 then soundlist[id] = split[2]:find('rbxasset') and split[2] or isfile(split[2]) and assetfunction(split[2]) or '' end end end }) end) run(function() local UICleanup local OpenInv local KillFeed local OldTabList local HotbarApp = getRoactRender(require(lplr.PlayerScripts.TS.controllers.global.hotbar.ui['hotbar-app']).HotbarApp.render) local HotbarOpenInventory = require(lplr.PlayerScripts.TS.controllers.global.hotbar.ui['hotbar-open-inventory']).HotbarOpenInventory local old, new = {}, {} local oldkillfeed vape:Clean(function() for _, v in new do table.clear(v) end for _, v in old do table.clear(v) end table.clear(new) table.clear(old) end) local function modifyconstant(func, ind, val) if not old[func] then old[func] = {} end if not new[func] then new[func] = {} end if not old[func][ind] then local typing = type(old[func][ind]) if typing == 'function' or typing == 'userdata' then return end old[func][ind] = debug.getconstant(func, ind) end if typeof(old[func][ind]) ~= typeof(val) and val ~= nil then return end new[func][ind] = val if UICleanup.Enabled then if val then debug.setconstant(func, ind, val) else debug.setconstant(func, ind, old[func][ind]) old[func][ind] = nil end end end UICleanup = vape.Legit:CreateModule({ Name = 'UI Cleanup', Function = function(callback) for i, v in (callback and new or old) do for i2, v2 in v do debug.setconstant(i, i2, v2) end end if callback then if OpenInv.Enabled then oldinvrender = HotbarOpenInventory.render HotbarOpenInventory.render = function() return bedwars.Roact.createElement('TextButton', {Visible = false}, {}) end end if KillFeed.Enabled then oldkillfeed = bedwars.KillFeedController.addToKillFeed bedwars.KillFeedController.addToKillFeed = function() end end if OldTabList.Enabled then starterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true) end else if oldinvrender then HotbarOpenInventory.render = oldinvrender oldinvrender = nil end if KillFeed.Enabled then bedwars.KillFeedController.addToKillFeed = oldkillfeed oldkillfeed = nil end if OldTabList.Enabled then starterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false) end end end, Tooltip = 'Cleans up the UI for kits & main' }) UICleanup:CreateToggle({ Name = 'Resize Health', Function = function(callback) modifyconstant(HotbarApp, 60, callback and 1 or nil) modifyconstant(debug.getupvalue(HotbarApp, 15).render, 30, callback and 1 or nil) modifyconstant(debug.getupvalue(HotbarApp, 23).tweenPosition, 16, callback and 0 or nil) end, Default = true }) UICleanup:CreateToggle({ Name = 'No Hotbar Numbers', Function = function(callback) local func = oldinvrender or HotbarOpenInventory.render modifyconstant(debug.getupvalue(HotbarApp, 23).render, 90, callback and 0 or nil) modifyconstant(func, 71, callback and 0 or nil) end, Default = true }) OpenInv = UICleanup:CreateToggle({ Name = 'No Inventory Button', Function = function(callback) modifyconstant(HotbarApp, 78, callback and 0 or nil) if UICleanup.Enabled then if callback then oldinvrender = HotbarOpenInventory.render HotbarOpenInventory.render = function() return bedwars.Roact.createElement('TextButton', {Visible = false}, {}) end else HotbarOpenInventory.render = oldinvrender oldinvrender = nil end end end, Default = true }) KillFeed = UICleanup:CreateToggle({ Name = 'No Kill Feed', Function = function(callback) if UICleanup.Enabled then if callback then oldkillfeed = bedwars.KillFeedController.addToKillFeed bedwars.KillFeedController.addToKillFeed = function() end else bedwars.KillFeedController.addToKillFeed = oldkillfeed oldkillfeed = nil end end end, Default = true }) OldTabList = UICleanup:CreateToggle({ Name = 'Old Player List', Function = function(callback) if UICleanup.Enabled then starterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, callback) end end, Default = true }) UICleanup:CreateToggle({ Name = 'Fix Queue Card', Function = function(callback) modifyconstant(bedwars.QueueCard.render, 15, callback and 0.1 or nil) end, Default = true }) end) run(function() local Viewmodel local Depth local Horizontal local Vertical local NoBob local Rots = {} local old, oldc1 Viewmodel = vape.Legit:CreateModule({ Name = 'Viewmodel', Function = function(callback) local viewmodel = gameCamera:FindFirstChild('Viewmodel') if callback then old = bedwars.ViewmodelController.playAnimation oldc1 = viewmodel and viewmodel.RightHand.RightWrist.C1 or CFrame.identity if NoBob.Enabled then bedwars.ViewmodelController.playAnimation = function(self, animtype, ...) if bedwars.AnimationType and animtype == bedwars.AnimationType.FP_WALK then return end return old(self, animtype, ...) end end bedwars.InventoryViewmodelController:handleStore(bedwars.Store:getState()) if viewmodel then gameCamera.Viewmodel.RightHand.RightWrist.C1 = oldc1 * CFrame.Angles(math.rad(Rots[1].Value), math.rad(Rots[2].Value), math.rad(Rots[3].Value)) end lplr.PlayerScripts.TS.controllers.global.viewmodel['viewmodel-controller']:SetAttribute('ConstantManager_DEPTH_OFFSET', -Depth.Value) lplr.PlayerScripts.TS.controllers.global.viewmodel['viewmodel-controller']:SetAttribute('ConstantManager_HORIZONTAL_OFFSET', Horizontal.Value) lplr.PlayerScripts.TS.controllers.global.viewmodel['viewmodel-controller']:SetAttribute('ConstantManager_VERTICAL_OFFSET', Vertical.Value) else bedwars.ViewmodelController.playAnimation = old if viewmodel then viewmodel.RightHand.RightWrist.C1 = oldc1 end bedwars.InventoryViewmodelController:handleStore(bedwars.Store:getState()) lplr.PlayerScripts.TS.controllers.global.viewmodel['viewmodel-controller']:SetAttribute('ConstantManager_DEPTH_OFFSET', 0) lplr.PlayerScripts.TS.controllers.global.viewmodel['viewmodel-controller']:SetAttribute('ConstantManager_HORIZONTAL_OFFSET', 0) lplr.PlayerScripts.TS.controllers.global.viewmodel['viewmodel-controller']:SetAttribute('ConstantManager_VERTICAL_OFFSET', 0) old = nil end end, Tooltip = 'Changes the viewmodel animations' }) Depth = Viewmodel:CreateSlider({ Name = 'Depth', Min = 0, Max = 2, Default = 0.8, Decimal = 10, Function = function(val) if Viewmodel.Enabled then lplr.PlayerScripts.TS.controllers.global.viewmodel['viewmodel-controller']:SetAttribute('ConstantManager_DEPTH_OFFSET', -val) end end }) Horizontal = Viewmodel:CreateSlider({ Name = 'Horizontal', Min = 0, Max = 2, Default = 0.8, Decimal = 10, Function = function(val) if Viewmodel.Enabled then lplr.PlayerScripts.TS.controllers.global.viewmodel['viewmodel-controller']:SetAttribute('ConstantManager_HORIZONTAL_OFFSET', val) end end }) Vertical = Viewmodel:CreateSlider({ Name = 'Vertical', Min = -0.2, Max = 2, Default = -0.2, Decimal = 10, Function = function(val) if Viewmodel.Enabled then lplr.PlayerScripts.TS.controllers.global.viewmodel['viewmodel-controller']:SetAttribute('ConstantManager_VERTICAL_OFFSET', val) end end }) for _, name in {'Rotation X', 'Rotation Y', 'Rotation Z'} do table.insert(Rots, Viewmodel:CreateSlider({ Name = name, Min = 0, Max = 360, Function = function(val) if Viewmodel.Enabled then gameCamera.Viewmodel.RightHand.RightWrist.C1 = oldc1 * CFrame.Angles(math.rad(Rots[1].Value), math.rad(Rots[2].Value), math.rad(Rots[3].Value)) end end })) end NoBob = Viewmodel:CreateToggle({ Name = 'No Bobbing', Default = true, Function = function() if Viewmodel.Enabled then Viewmodel:Toggle() Viewmodel:Toggle() end end }) end) run(function() local WinEffect local List local NameToId = {} WinEffect = vape.Legit:CreateModule({ Name = 'WinEffect', Function = function(callback) if callback then WinEffect:Clean(vapeEvents.MatchEndEvent.Event:Connect(function() for i, v in getconnections(bedwars.Client:Get('WinEffectTriggered').instance.OnClientEvent) do if v.Function then v.Function({ winEffectType = NameToId[List.Value], winningPlayer = lplr }) end end end)) end end, Tooltip = 'Allows you to select any clientside win effect' }) local WinEffectName = {} for i, v in bedwars.WinEffectMeta do table.insert(WinEffectName, v.name) NameToId[v.name] = i end table.sort(WinEffectName) List = WinEffect:CreateDropdown({ Name = 'Effects', List = WinEffectName }) end)