--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 inputService = cloneref(game:GetService('UserInputService'))
local replicatedStorage = cloneref(game:GetService('ReplicatedStorage'))
local replicatedFirst = cloneref(game:GetService('ReplicatedFirst'))
local collectionService = cloneref(game:GetService('CollectionService'))
local marketplaceService = cloneref(game:GetService('MarketplaceService'))
local textChatService = cloneref(game:GetService('TextChatService'))
local tweenService = cloneref(game:GetService('TweenService'))
local runService = cloneref(game:GetService('RunService'))
local guiService = cloneref(game:GetService('GuiService'))
local teams = cloneref(game:GetService('Teams'))
local coreGui = cloneref(game:GetService('CoreGui'))
local gameCamera = workspace.CurrentCamera
local lplr = playersService.LocalPlayer
local vape = shared.vape
local entitylib = vape.Libraries.entity
local whitelist = vape.Libraries.whitelist
local targetinfo = vape.Libraries.targetinfo
local sessioninfo = vape.Libraries.sessioninfo
local getfontsize = vape.Libraries.getfontsize
local pl = {}
local Spring = {}
local TracerHook = {Hooks = {}}
local oldshoot, oldequip
local aimTimer, shootTimer, aimVec = os.clock(), os.clock()
local arrestCooldown = os.clock()
local tempTargets = {}
local gamepasses = {}
local function checkPoint(pos, params)
for _, v in workspace:GetPartBoundsInRadius(pos, 0, params) do
if v.CanCollide and (v:GetClosestPointOnSurface(pos) - pos).Magnitude <= 0 then
return false
end
end
return true
end
local function canClick()
local mousepos = (inputService:GetMouseLocation() - guiService:GetGuiInset())
for _, v in lplr.PlayerGui:GetGuiObjectsAtPosition(mousepos.X, mousepos.Y) do
local obj = v:FindFirstAncestorOfClass('ScreenGui')
if v.Active and v.Visible and obj and obj.Enabled then
return false
end
end
for _, v in coreGui:GetGuiObjectsAtPosition(mousepos.X, mousepos.Y) do
local obj = v:FindFirstAncestorOfClass('ScreenGui')
if v.Active and v.Visible and obj and obj.Enabled then
return false
end
end
return (not vape.gui.ScaledGui.ClickGui.Visible) and (not inputService:GetFocusedTextBox())
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) or tempTargets[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 OriginScanner = {Cache = {}}
run(function()
local rayParams = RaycastParams.new()
local rayParams2 = OverlapParams.new()
rayParams.CollisionGroup = 'ClientBullet'
rayParams.FilterType = Enum.RaycastFilterType.Exclude
rayParams2.CollisionGroup = 'ClientBullet'
rayParams2.FilterType = Enum.RaycastFilterType.Exclude
OriginScanner.Ray = rayParams
local positions = {
Vector3.new(0, 1, 0),
Vector3.new(1, 0, 0),
Vector3.new(0.7, -0.5, -0.5),
Vector3.new(-0.1, -0.8, -0.8),
Vector3.new(-0.8, -0.5, -0.5),
Vector3.new(-1, 0, 0),
Vector3.new(-0.8, 0.4, 0.4),
Vector3.new(0, 0.7, 0.7),
Vector3.new(0.7, 0.5, 0.5),
Vector3.new(1, 0, 0),
Vector3.new(0.7, 0, -0.8),
Vector3.new(-0.1, 0, -1),
Vector3.new(-0.8, 0, -0.8),
Vector3.new(-1, 0, 0),
Vector3.new(-0.8, 0, 0.7),
Vector3.new(0, 0, 1),
Vector3.new(0.7, 0, 0.7),
Vector3.new(1, 0, 0),
Vector3.new(0.7, 0.4, -0.5),
Vector3.new(-0.1, 0.7, -0.8),
Vector3.new(-0.8, 0.4, -0.5),
Vector3.new(-1, -0.1, 0),
Vector3.new(-0.8, -0.5, 0.4),
Vector3.new(0, -0.8, 0.7),
Vector3.new(0.7, -0.6, 0.5),
Vector3.new(0, -1, 0)
}
function OriginScanner:Scan(origin, target, extra, part)
local scanPositions = {}
local hitboxPositions = {}
local returnHitbox
local diff = CFrame.lookAt(origin * Vector3.new(1, 0, 1), target * Vector3.new(1, 0, 1)).LookVector
if OriginScanner.Cache[part] then
return table.unpack(OriginScanner.Cache[part])
end
if extra then
if (origin - extra).Magnitude < 7.5 then
table.insert(scanPositions, extra)
else
table.insert(hitboxPositions, target)
for _, v in Enum.NormalId:GetEnumItems() do
local vec = Vector3.fromNormalId(v)
if (vec * Vector3.new(1, 0, 1)):Dot(-diff) > -0.5 then
local pos = target + vec * 6
if checkPoint(pos, rayParams2) then
table.insert(hitboxPositions, pos)
end
end
end
end
end
if #scanPositions <= 0 then
for _, v in positions do
if (v * Vector3.new(1, 0, 1)):Dot(diff) > -0.5 then
table.insert(scanPositions, origin + v * 6)
end
end
end
if #hitboxPositions > 0 then
for _, hitbox in hitboxPositions do
for _, pos in scanPositions do
local ray = workspace:Raycast(hitbox, (pos - hitbox), rayParams)
if not ray and checkPoint(pos, rayParams2) then
OriginScanner.Cache[part] = {pos, hitbox}
return pos, hitbox
end
end
end
else
for _, pos in scanPositions do
local ray = workspace:Raycast(target, (pos - target), rayParams)
if not ray and checkPoint(pos, rayParams2) then
OriginScanner.Cache[part] = {pos}
return pos
end
end
end
end
function OriginScanner:UpdateIgnore()
local ignore = {lplr.Character}
for _, v in entitylib.List do
table.insert(ignore, v.Character)
end
rayParams.FilterDescendantsInstances = ignore
rayParams2.FilterDescendantsInstances = ignore
end
end)
local CheatFlags = {Flags = {}, Flagged = {}}
run(function()
function CheatFlags:Flag(plr, flagtype, limit)
if CheatFlags.Flagged[plr.UserId] then
return
end
if not CheatFlags.Flags[plr.UserId] then
CheatFlags.Flags[plr.UserId] = {}
end
local flags = CheatFlags.Flags[plr.UserId]
flags[flagtype] = (flags[flagtype] or 0) + 1
if flags[flagtype] > limit then
CheatFlags.Flagged[plr.UserId] = true
vapeEvents.CheatFlagged:Fire(plr, flagtype)
end
end
function CheatFlags:Clear()
table.clear(CheatFlags.Flags)
table.clear(CheatFlags.Flagged)
end
end)
run(function()
local function getMousePosition()
if inputService.TouchEnabled then
return gameCamera.ViewportSize / 2
end
return inputService.GetMouseLocation(inputService)
end
entitylib.getUpdateConnections = function(ent)
local hum = ent.Humanoid
return {
hum:GetPropertyChangedSignal('Health'),
hum:GetPropertyChangedSignal('MaxHealth'),
ent.Character:GetAttributeChangedSignal('Trespassing'),
ent.Character:GetAttributeChangedSignal('Hostile'),
ent.Player:GetAttributeChangedSignal('InnocentKills'),
{
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
}
}
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
if vape.Categories.Main.Options['Teams by server'].Enabled then
return lplr.Team ~= ent.Player.Team and ent.Player.Team ~= teams.Neutral
end
return true
end
entitylib.isVulnerable = function(ent, attackcheck)
if attackcheck and lplr.Team == teams.Guards and ent.Player.Team == teams.Inmates and not ent.Character:GetAttribute('Hostile') then
return false
end
return ent.Humanoid:GetState() ~= Enum.HumanoidStateType.Dead and ent.SpawnTime < os.clock() and not ent.Character.FindFirstChildWhichIsA(ent.Character, 'ForceField') and (ent.Player.Team ~= teams.Inmates or (ent.Character:GetAttribute('Trespassing') or ent.Character:GetAttribute('Hostile')))
end
entitylib.EntityMouse = function(entitysettings)
if entitylib.isAlive then
local mouseLocation, sortingTable = entitysettings.MouseOrigin or getMousePosition(), {}
local localPosition = entitysettings.Origin or entitylib.character.HumanoidRootPart.Position
for _, v in entitylib.List do
if not entitysettings.Players and v.Player then continue end
if not entitysettings.NPCs and v.NPC then continue end
if not v.Targetable then continue end
local position, vis = gameCamera.WorldToViewportPoint(gameCamera, v[entitysettings.Part].Position)
if not vis then continue end
local mag = (mouseLocation - Vector2.new(position.x, position.y)).Magnitude
if mag > entitysettings.Range then continue end
if entitylib.isVulnerable(v, entitysettings.AttackCheck) then
if entitysettings.RangePosition then
local pmag = (v[entitysettings.Part].Position - localPosition).Magnitude
if pmag > entitysettings.RangePosition then continue end
end
table.insert(sortingTable, {
Entity = v,
Magnitude = v.Target and -1 or mag
})
end
end
table.sort(sortingTable, entitysettings.Sort or function(a, b)
return a.Magnitude < b.Magnitude
end)
for _, v in sortingTable do
if entitysettings.Wallcheck then
if entitylib.Wallcheck(entitysettings.Origin, v.Entity[entitysettings.Part].Position, entitysettings.Wallbang, v.Entity[entitysettings.Part]) then continue end
end
table.clear(entitysettings)
table.clear(sortingTable)
return v.Entity
end
table.clear(sortingTable)
end
table.clear(entitysettings)
end
entitylib.EntityPosition = function(entitysettings)
if entitylib.isAlive then
local localPosition, sortingTable = entitysettings.Origin or entitylib.character.HumanoidRootPart.Position, {}
for _, v in entitylib.List do
if not entitysettings.Players and v.Player then continue end
if not entitysettings.NPCs and v.NPC then continue end
if not v.Targetable then continue end
local mag = (v[entitysettings.Part].Position - localPosition).Magnitude
if mag > entitysettings.Range then continue end
if entitylib.isVulnerable(v, entitysettings.AttackCheck) then
table.insert(sortingTable, {
Entity = v,
Magnitude = v.Target and -1 or mag
})
end
end
table.sort(sortingTable, entitysettings.Sort or function(a, b)
return a.Magnitude < b.Magnitude
end)
for _, v in sortingTable do
if entitysettings.Wallcheck then
if entitylib.Wallcheck(localPosition, v.Entity[entitysettings.Part].Position, entitysettings.Wallbang, v.Entity[entitysettings.Part]) then continue end
end
table.clear(entitysettings)
table.clear(sortingTable)
return v.Entity
end
table.clear(sortingTable)
end
table.clear(entitysettings)
end
entitylib.AllPosition = function(entitysettings)
local returned = {}
if entitylib.isAlive then
local localPosition, sortingTable = entitysettings.Origin or entitylib.character.HumanoidRootPart.Position, {}
for _, v in entitylib.List do
if not entitysettings.Players and v.Player then continue end
if not entitysettings.NPCs and v.NPC then continue end
if not v.Targetable then continue end
local mag = (v[entitysettings.Part].Position - localPosition).Magnitude
if mag > entitysettings.Range then continue end
if entitylib.isVulnerable(v, entitysettings.AttackCheck) then
table.insert(sortingTable, {Entity = v, Magnitude = v.Target and -1 or mag})
end
end
table.sort(sortingTable, entitysettings.Sort or function(a, b)
return a.Magnitude < b.Magnitude
end)
for _, v in sortingTable do
if entitysettings.Wallcheck then
if entitylib.Wallcheck(localPosition, v.Entity[entitysettings.Part].Position, entitysettings.Wallbang, v.Entity[entitysettings.Part]) then continue end
end
table.insert(returned, v.Entity)
if #returned >= (entitysettings.Limit or math.huge) then break end
end
table.clear(sortingTable)
end
table.clear(entitysettings)
return returned
end
entitylib.getEntityColor = function(ent)
if not (ent.Player and vape.Categories.Main.Options['Use team color'].Enabled) then return end
if isFriend(ent.Player, true) then
return Color3.fromHSV(vape.Categories.Friends.Options['Friends color'].Hue, vape.Categories.Friends.Options['Friends color'].Sat, vape.Categories.Friends.Options['Friends color'].Value)
end
local color = tostring(ent.Player.TeamColor) ~= 'White' and ent.Player.TeamColor.Color or nil
if ent.Player.Team == teams.Inmates and (ent.Character:GetAttribute('Hostile') or ent.Character:GetAttribute('Trespassing')) then
return Color3.new(color.R, color.G * 0.5, color.B * 0.5)
end
return color
end
entitylib.Wallcheck = function(origin, position, checkpos, part)
local ray = workspace.Raycast(workspace, position, (origin - position), OriginScanner.Ray)
if ray then
return not checkpos or not OriginScanner:Scan(checkpos, position, ray.Position + ray.Normal * 0.01, part)
end
return false
end
end)
entitylib.start()
run(function()
pl = {
GunTracers = require(replicatedStorage.SharedModules.GunTracers)
}
local gui = lplr.PlayerGui:WaitForChild('Home', 10)
gui = gui and gui.hud.ActionArea
if vape.Loaded == nil then
return
end
local function getShootFunction()
for _, v in getconnections(gui.InputBegan) do
if v.Function then
pl.Shoot = debug.getupvalue(v.Function, 2)
pl.Reload = debug.getupvalue(pl.Shoot, 2)
pl.Bullet = debug.getupvalue(pl.Shoot, 16)
pl.PlaySound = debug.getupvalue(pl.Reload, 3)
break
end
end
for _, v in getconnections(lplr.CharacterAdded) do
if v.Function and debug.info(v.Function, 's'):find('GunController') then
pl.Equip = debug.getupvalue(v.Function, 3)
break
end
end
for _, v in getconnections(lplr:GetAttributeChangedSignal('BackpackEnabled')) do
pl.SwitchUpdate = debug.getupvalue(debug.getupvalue(v.Function, 10), 5)
pl.SwitchTable = debug.getupvalue(debug.getupvalue(v.Function, 8), 2)
break
end
end
getShootFunction()
if not (pl.Bullet and pl.SwitchTable) then
repeat
getShootFunction()
task.wait()
until pl.Bullet and pl.SwitchTable or vape.Loaded == nil
if vape.Loaded == nil then
table.clear(pl)
end
end
local kills = sessioninfo:AddItem('Kills')
local deaths = sessioninfo:AddItem('Deaths')
local arrests = sessioninfo:AddItem('Arrests')
local cheaterkicked = sessioninfo:AddItem('Cheaters Kicked')
local cheaters = sessioninfo:AddItem('Cheater List', '', function()
local text = ''
for _, plr in playersService:GetPlayers() do
if CheatFlags.Flagged[plr.UserId] then
text = text..'\n'..(plr.DisplayName ~= plr.Name and plr.DisplayName..' ('..plr.Name..')' or plr.Name)
end
end
return text
end, false)
vape:Clean(replicatedStorage.Killfeed.ChildAdded:Connect(function(obj)
local names = {}
-- killer
local start = obj.Name:find('@')
local endchar = obj.Name:find(')')
table.insert(names, obj.Name:sub(start + 1, endchar - 1))
-- victim
start = obj.Name:find('killed ') + 7
endchar = obj.Name:find(' ', start)
table.insert(names, obj.Name:sub(start, endchar - 1))
vapeEvents.PlayerKill:Fire(unpack(names))
if names[1] == lplr.Name then
kills:Increment()
elseif names[2] == lplr.Name then
deaths:Increment()
end
end))
vape:Clean(vapeEvents.Arrested.Event:Connect(function()
arrests:Increment()
end))
vape:Clean(replicatedStorage.Remotes.MessageReceived.OnClientEvent:Connect(function(msg)
if msg:find('kicked') then
cheaterkicked:Increment()
vapeEvents.CheaterKicked:Fire(msg:sub(1, msg:find(' ')))
end
end))
vape:Clean(entitylib.Events.EntityUpdated:Connect(function(ent)
if ent.Player and ent.Player.Team == teams.Inmates then
vape.Categories.Friends.ColorUpdate:Fire()
end
end))
table.insert(whitelist.tagcallback, function(plr, plrtag, rich)
if plr then
local ent = entitylib.getEntity(plr)
if ent then
if CheatFlags.Flagged[plr.UserId] then
table.insert(plrtag, {text = rich and '⚠️' or 'Cheater'})
end
if plr.Team == teams.Inmates then
if ent.Character:GetAttribute('Hostile') then
table.insert(plrtag, {text = rich and '💢' or 'Hostile'})
elseif ent.Character:GetAttribute('Trespassing') then
table.insert(plrtag, {text = rich and '🔗' or 'Trespassing'})
end
elseif plr.Team == teams.Guards then
local count = plr:GetAttribute('InnocentKills') or 0
if count > 0 then
table.insert(plrtag, {
text = tostring(count),
color = Color3.fromHSV(math.clamp(1 - (count / 2), 0, 1) / 2.5, 0.89, 0.75)
})
end
end
end
end
end)
task.spawn(function()
gamepasses = {
['Riot Police'] = marketplaceService:UserOwnsGamePassAsync(lplr.UserId, 643697197),
Mafia = marketplaceService:UserOwnsGamePassAsync(lplr.UserId, 1443271),
Sniper = marketplaceService:UserOwnsGamePassAsync(lplr.UserId, 699360089)
}
end)
OriginScanner:UpdateIgnore()
for _, v in {'EntityAdded', 'LocalAdded'} do
vape:Clean(entitylib.Events[v]:Connect(function()
OriginScanner:UpdateIgnore()
end))
end
vape:Clean(runService.RenderStepped:Connect(function()
table.clear(OriginScanner.Cache)
end))
vape:Clean(function()
table.clear(pl)
end)
end)
do
-- https://github.com/J1ck/roblox-spring/blob/main/src/roblox-spring.luau
Spring.__index = Spring
function Spring.new(Properties)
local TypeRefined = Properties or {}
local self = setmetatable({
Target = Vector3.new(),
Position = Vector3.new(),
Velocity = Vector3.new(),
Mass = TypeRefined.Mass or 5,
Force = TypeRefined.Force or 50,
Damping = TypeRefined.Damping or 4,
Speed = TypeRefined.Speed or 4,
}, Spring)
return self
end
function Spring:Update(DeltaTime)
local IterationsThisFrame = DeltaTime / ((1 / 60) / 8)
local ScaledDeltaTime = DeltaTime * self.Speed / IterationsThisFrame
for i = 1, math.round(IterationsThisFrame) do
local IterationForce = self.Target - self.Position
local Acceleration = (IterationForce * self.Force) / self.Mass
Acceleration -= self.Velocity * self.Damping
self.Velocity += Acceleration * ScaledDeltaTime
self.Position += self.Velocity * ScaledDeltaTime
end
return self.Position
end
end
do
local oldtracer, oldtracertaser, oldtracersniper
local function Hook(...)
if debug.info(3, 's') ~= 'ReplicatedStorage.Scripts.Replication.ClientReplicator' then
for _, v in TracerHook.Hooks do
if v[2](...) then return end
end
end
return oldtracer(...)
end
local function HookTaser(...)
if debug.info(3, 's') ~= 'ReplicatedStorage.Scripts.Replication.ClientReplicator' then
for _, v in TracerHook.Hooks do
if v[2](...) then return end
end
end
return oldtracertaser(...)
end
local function HookSniper(...)
if debug.info(3, 's') ~= 'ReplicatedStorage.Scripts.Replication.ClientReplicator' then
for _, v in TracerHook.Hooks do
if v[2](...) then return end
end
end
return oldtracersniper(...)
end
function TracerHook:Add(key, val, priority)
table.insert(self.Hooks, {key, val, priority or 0})
table.sort(self.Hooks, function(a, b)
return a[3] < b[3]
end)
if not oldtracer then
oldtracer = hookfunction(pl.GunTracers.createBullet, function(...)
return Hook(...)
end)
oldtracertaser = hookfunction(pl.GunTracers.createTaser, function(...)
return HookTaser(...)
end)
oldtracersniper = hookfunction(pl.GunTracers.createSniper, function(...)
return HookSniper(...)
end)
end
end
function TracerHook:Remove(key)
for i, v in self.Hooks do
if v[1] == key then
table.remove(self.Hooks, i)
break
end
end
if oldtracer and not next(self.Hooks) then
if restorefunction then
restorefunction(pl.GunTracers.createBullet)
restorefunction(pl.GunTracers.createTaser)
restorefunction(pl.GunTracers.createSniper)
else
hookfunction(pl.GunTracers.createBullet, oldtracer)
hookfunction(pl.GunTracers.createTaser, oldtracertaser)
hookfunction(pl.GunTracers.createSniper, oldtracersniper)
end
oldtracer = nil
oldtracertaser = nil
oldtracersniper = nil
end
end
end
for _, v in {'Reach', 'Jesus', 'MurderMystery'} do
vape:Remove(v)
end
local mouseClicked
run(function()
local SilentAim
local Target
local Mode
local Range
local HitChance
local HeadshotChance
local AutoFire = {Enabled = false}
local AutoFireRate
local AutoFireTaser
local Wallbang
local CircleColor
local CircleTransparency
local CircleFilled
local CircleObject
local rayParams = RaycastParams.new()
rayParams.CollisionGroup = 'ClientBullet'
rayParams.FilterType = Enum.RaycastFilterType.Exclude
local fireoffset, rand, delayCheck = CFrame.identity, Random.new(), tick()
local old
local function getTarget(origin, limit, attackcheck)
if rand.NextNumber(rand, 0, 100) > (AutoFire.Enabled and 100 or HitChance.Value) then return end
local targetPart = (rand.NextNumber(rand, 0, 100) < (AutoFire.Enabled and 100 or HeadshotChance.Value)) and 'Head' or 'RootPart'
local ent = entitylib['Entity'..Mode.Value]({
Range = Mode.Value == 'Position' and math.min(Range.Value, limit) or Range.Value,
RangePosition = limit,
AttackCheck = attackcheck,
Wallcheck = Target.Walls.Enabled and true or nil,
Wallbang = Wallbang.Enabled and entitylib.character.RootPart.Position or nil,
Part = targetPart,
Origin = origin,
Players = Target.Players.Enabled,
NPCs = Target.NPCs.Enabled
})
if ent then
targetinfo.Targets[ent] = tick() + 1
end
return ent, ent and ent[targetPart], origin
end
local function Hook(...)
local origin, direction = ...
local gundata = debug.getupvalue(oldshoot or pl.Shoot, 10)
local ent, targetPart, origin = getTarget(origin, gundata and gundata.Range or 1000, not gundata or gundata.Behavior ~= 'Taser')
if not ent then return old(...) end
local args = table.pack(...)
args[2] = targetPart.Position
aimTimer = os.clock() + 0.3
aimVec = args[2]
if Wallbang.Enabled then
local ignore = {lplr.Character}
for _, v in entitylib.List do
table.insert(ignore, v.Character)
end
rayParams.FilterDescendantsInstances = ignore
local ray = workspace:Raycast(args[2], (origin - args[2]), rayParams)
if ray then
local neworigin, hitbox = OriginScanner:Scan(entitylib.character.RootPart.Position, args[2], ray.Position + ray.Normal * 0.01, targetPart)
if neworigin then
for i, v in debug.getstack(3) do
if v == origin then
debug.setstack(3, i, neworigin)
end
end
args[1] = neworigin
if hitbox then
return targetPart, hitbox
end
end
end
end
return old(unpack(args, 1, args.n))
end
SilentAim = vape.Categories.Combat:CreateModule({
Name = 'SilentAim',
Function = function(callback)
if CircleObject then
CircleObject.Visible = callback and Mode.Value == 'Mouse'
end
if callback then
old = hookfunction(pl.Bullet, function(...)
return Hook(...)
end)
local autofiretimer = os.clock()
repeat
if CircleObject then
CircleObject.Position = inputService:GetMouseLocation()
end
if AutoFire.Enabled and autofiretimer < os.clock() then
autofiretimer = os.clock() + (1 / AutoFireRate.Value)
local tool = lplr.Character:FindFirstChildWhichIsA('Tool')
local gundata = debug.getupvalue(oldshoot or pl.Shoot, 10)
local ammo = tool and tool:GetAttribute('Local_CurrentAmmo') or 0
if gundata and ammo > 0 and not tool:GetAttribute('Local_IsShooting') then
local limit = gundata.Range or 1000
local taser = gundata and gundata.Behavior == 'Taser'
local ent = entitylib['Entity'..Mode.Value]({
Range = Mode.Value == 'Position' and math.min(Range.Value, limit) or Range.Value,
RangePosition = limit,
AttackCheck = not taser,
Wallcheck = Target.Walls.Enabled and true or nil,
Wallbang = Wallbang.Enabled and entitylib.isAlive and entitylib.character.RootPart.Position or nil,
Part = 'Head',
Origin = entitylib.isAlive and entitylib.character.Head.Position or Vector3.zero,
Players = Target.Players.Enabled
})
if ent and entitylib.character.Humanoid.Health > 0 then
if not ((taser or AutoFireTaser.Enabled) and (ent.Character:GetAttribute('Tased') or ent.Character:GetAttribute('Arrested'))) then
autofiretimer = os.clock() + (ammo > 1 and gundata.FireRate or 1 / AutoFireRate.Value)
local obj = {UserInputState = Enum.UserInputState.Begin, UserInputType = Enum.UserInputType.MouseButton1, Position = Vector3.zero}
task.spawn(pl.Shoot, obj)
obj.UserInputState = Enum.UserInputState.End
end
end
end
end
task.wait()
until not SilentAim.Enabled
else
if old then
if restorefunction then
restorefunction(pl.Bullet)
else
hookfunction(pl.Bullet, old)
end
old = nil
end
end
end,
ExtraText = function()
return 'PrisonLife'
end,
Tooltip = 'Silently adjusts your aim towards the enemy'
})
Target = SilentAim:CreateTargets({Players = true})
Mode = SilentAim:CreateDropdown({
Name = 'Mode',
List = {'Mouse', 'Position'},
Function = function(val)
if CircleObject then
CircleObject.Visible = SilentAim.Enabled and val == 'Mouse'
end
end,
Tooltip = 'Mouse - Checks for entities near the mouses position\nPosition - Checks for entities near the local character'
})
Range = SilentAim:CreateSlider({
Name = 'Range',
Min = 1,
Max = 1000,
Default = 150,
Function = function(val)
if CircleObject then
CircleObject.Radius = val
end
end,
Suffix = function(val)
return val == 1 and 'stud' or 'studs'
end
})
HitChance = SilentAim:CreateSlider({
Name = 'Hit Chance',
Min = 0,
Max = 100,
Default = 85,
Suffix = '%'
})
HeadshotChance = SilentAim:CreateSlider({
Name = 'Headshot Chance',
Min = 0,
Max = 100,
Default = 65,
Suffix = '%'
})
AutoFire = SilentAim:CreateToggle({
Name = 'AutoFire',
Function = function(callback)
AutoFireRate.Object.Visible = callback
AutoFireTaser.Object.Visible = callback
end
})
AutoFireRate = SilentAim:CreateSlider({
Name = 'Update rate',
Min = 1,
Max = 120,
Default = 60,
Visible = false,
Darker = true,
Suffix = 'hz'
})
AutoFireTaser = SilentAim:CreateToggle({
Name = 'Ignore Tased',
Visible = false,
Darker = true
})
Wallbang = SilentAim:CreateToggle({Name = 'Wallbang'})
SilentAim:CreateToggle({
Name = 'Range Circle',
Function = function(callback)
if callback then
CircleObject = Drawing.new('Circle')
CircleObject.Filled = CircleFilled.Enabled
CircleObject.Color = Color3.fromHSV(CircleColor.Hue, CircleColor.Sat, CircleColor.Value)
CircleObject.Position = vape.gui.AbsoluteSize / 2
CircleObject.Radius = Range.Value
CircleObject.NumSides = 100
CircleObject.Transparency = 1 - CircleTransparency.Value
CircleObject.Visible = SilentAim.Enabled and Mode.Value == 'Mouse'
else
pcall(function()
CircleObject.Visible = false
CircleObject:Remove()
end)
end
CircleColor.Object.Visible = callback
CircleTransparency.Object.Visible = callback
CircleFilled.Object.Visible = callback
end
})
CircleColor = SilentAim:CreateColorSlider({
Name = 'Circle Color',
Function = function(hue, sat, val)
if CircleObject then
CircleObject.Color = Color3.fromHSV(hue, sat, val)
end
end,
Darker = true,
Visible = false
})
CircleTransparency = SilentAim:CreateSlider({
Name = 'Transparency',
Min = 0,
Max = 1,
Decimal = 10,
Default = 0.5,
Function = function(val)
if CircleObject then
CircleObject.Transparency = 1 - val
end
end,
Darker = true,
Visible = false
})
CircleFilled = SilentAim:CreateToggle({
Name = 'Circle Filled',
Function = function(callback)
if CircleObject then
CircleObject.Filled = callback
end
end,
Darker = true,
Visible = false
})
end)
run(function()
local AntiInvisible
local threads = {}
local whitelist = {
-- default roblox animations
['http://www.roblox.com/asset/?id=125750702'] = true,
['http://www.roblox.com/asset/?id=128777973'] = true,
['http://www.roblox.com/asset/?id=128853357'] = true,
['http://www.roblox.com/asset/?id=129423030'] = true,
['http://www.roblox.com/asset/?id=129423131'] = true,
['http://www.roblox.com/asset/?id=129967390'] = true,
['http://www.roblox.com/asset/?id=129967478'] = true,
['http://www.roblox.com/asset/?id=178130996'] = true,
['http://www.roblox.com/asset/?id=180426354'] = true,
['http://www.roblox.com/asset/?id=180435571'] = true,
['http://www.roblox.com/asset/?id=180435792'] = true,
['http://www.roblox.com/asset/?id=180436148'] = true,
['http://www.roblox.com/asset/?id=180436334'] = true,
['http://www.roblox.com/asset/?id=182393478'] = true,
['http://www.roblox.com/asset/?id=182435998'] = true,
['http://www.roblox.com/asset/?id=182436842'] = true,
['http://www.roblox.com/asset/?id=182436935'] = true,
['http://www.roblox.com/asset/?id=182491037'] = true,
['http://www.roblox.com/asset/?id=182491065'] = true,
['http://www.roblox.com/asset/?id=182491248'] = true,
['http://www.roblox.com/asset/?id=182491277'] = true,
['http://www.roblox.com/asset/?id=182491368'] = true,
['http://www.roblox.com/asset/?id=182491423'] = true,
-- game animations
['rbxassetid://279227693'] = true,
['rbxassetid://279229192'] = true,
['rbxassetid://287112271'] = true,
['rbxassetid://388723916'] = true,
['rbxassetid://388726667'] = true,
['rbxassetid://389472570'] = true,
['rbxassetid://405194080'] = true,
['rbxassetid://405212265'] = true,
['rbxassetid://481088553'] = true,
['rbxassetid://481089053'] = true,
['rbxassetid://484200742'] = true,
['rbxassetid://484926359'] = true,
['rbxassetid://83690472549256'] = true,
['rbxassetid://107176344504758'] = true,
['rbxassetid://111090572475133'] = true,
['rbxassetid://113267949064300'] = true,
['rbxassetid://131326339350805'] = true
}
local function AnimationAdded(anim, plr)
if not whitelist[anim.Animation.AnimationId] and plr then
if threads[anim] then
task.cancel(threads[anim])
end
CheatFlags:Flag(plr, 'invalid animation', 1)
threads[anim] = task.spawn(function()
repeat
anim:AdjustWeight(0, 0)
task.wait()
until not (anim.IsPlaying and AntiInvisible.Enabled)
threads[anim] = nil
end)
end
end
local function EntityAdded(ent)
local animator = ent.Humanoid:WaitForChild('Animator', 5)
if animator and AntiInvisible.Enabled then
AntiInvisible:Clean(animator.AnimationPlayed:Connect(function(anim)
AnimationAdded(anim, ent.Player)
end))
for _, anim in animator:GetPlayingAnimationTracks() do
task.spawn(AnimationAdded, anim, ent.Player)
end
end
end
for _, v in replicatedStorage:QueryDescendants('Animation') do
whitelist[v.AnimationId] = true
end
AntiInvisible = vape.Categories.Blatant:CreateModule({
Name = 'AntiInvisible',
Function = function(callback)
if callback then
AntiInvisible:Clean(entitylib.Events.EntityAdded:Connect(EntityAdded))
for _, v in entitylib.List do
task.spawn(EntityAdded, v)
end
else
for _, v in threads do
task.cancel(v)
end
table.clear(threads)
end
end,
Tooltip = 'Prevent people from using invisible animations'
})
end)
run(function()
local AntiKillPlane
AntiKillPlane = vape.Categories.Blatant:CreateModule({
Name = 'AntiKillPlane',
Function = function(callback)
if callback then
for x = -2048, 2048, 2048 do
for z = -2048, 2048, 2048 do
local part = Instance.new('Part')
part.CanQuery = false
part.CanCollide = true
part.Anchored = true
part.Transparency = 1
part.Size = Vector3.new(2048, 10, 2048)
part.Position = Vector3.new(x, 170, z)
part.Parent = workspace
AntiKillPlane:Clean(part)
end
end
end
end,
Tooltip = 'Add\'s a phyiscal part for the kill plane'
})
end)
run(function()
local AntiRiotShield
AntiRiotShield = vape.Categories.Blatant:CreateModule({
Name = 'AntiRiotShield',
Function = function(callback)
if callback then
repeat
for _, ent in entitylib.List do
local shield = ent.Character:FindFirstChild('RiotShieldPart')
if shield then
shield.CanQuery = false
end
end
task.wait(0.05)
until not AntiRiotShield.Enabled
else
for _, ent in entitylib.List do
local shield = ent.Character:FindFirstChild('RiotShieldPart')
if shield then
shield.CanQuery = true
end
end
end
end,
Tooltip = 'Allow you to shoot through riot shields.'
})
end)
run(function()
local AntiTaze
local old, connection
local function EntityAdded(ent)
connection = getconnections(replicatedStorage.GunRemotes.PlayerTased.OnClientEvent)[1]
if not (connection and connection.Function) then
repeat
connection = getconnections(replicatedStorage.GunRemotes.PlayerTased.OnClientEvent)[1]
task.wait()
until connection and connection.Function or not AntiTaze.Enabled
end
if connection and AntiTaze.Enabled then
old = hookfunction(connection.Function, function()
local char = lplr.Character
lplr:SetAttribute('BackpackEnabled', false)
if entitylib.isAlive then
entitylib.character.Humanoid:UnequipTools()
end
task.wait(3.5)
if lplr.Character == char then
lplr:SetAttribute('BackpackEnabled', true)
end
end)
end
end
AntiTaze = vape.Categories.Blatant:CreateModule({
Name = 'AntiTaze',
Function = function(callback)
if callback then
AntiTaze:Clean(entitylib.Events.LocalAdded:Connect(EntityAdded))
if entitylib.isAlive then
task.spawn(EntityAdded, entitylib.character)
end
else
if old and connection.Function then
hookfunction(connection.Function, old)
old = nil
end
end
end,
Tooltip = 'Prevent you from getting tazed'
})
end)
run(function()
local AutoArrest
local Range
local HandCheck
local CooldownBar
local toggles = {}
local cdholder, cdframe, cdlabel
AutoArrest = vape.Categories.Blatant:CreateModule({
Name = 'AutoArrest',
Function = function(callback)
if callback then
repeat
local check = arrestCooldown < os.clock()
if HandCheck.Enabled then
local tool = entitylib.isAlive and lplr.Character:FindFirstChildWhichIsA('Tool')
check = check and tool and tool.Name == 'Handcuffs'
end
if check then
local entities = entitylib.AllPosition({
Range = Range.Value,
Players = true,
Part = 'RootPart',
TargetCheck = true
})
for _, ent in entities do
if not ent.Character:GetAttribute('Arrested') then
local toggle = ent.Player.Team and toggles[ent.Player.Team.Name]
if toggle and not toggle.Enabled then
continue
end
if ent.Player.Team == teams.Inmates and ent.Character:GetAttribute('Hostile') and not ent.Character:GetAttribute('Tased') then
continue
end
if replicatedStorage.Remotes.ArrestPlayer:InvokeServer(ent.Player, 1) then
arrestCooldown = os.clock() + 7
vapeEvents.Arrested:Fire()
notif('AutoArrest', 'Arrested '..(ent.Player.Name), 7)
end
break
end
end
end
if cdholder then
cdholder.Visible = arrestCooldown > os.clock()
if cdholder.Visible then
local diff = (arrestCooldown - os.clock())
cdframe.Size = UDim2.new(math.clamp(diff / 7, 0, 1), -2, 1, -2)
cdlabel.Text = (math.round(diff * 10) / 10)..'s'
end
end
task.wait(0.05)
until not AutoArrest.Enabled
else
if cdholder then
cdholder.Visible = false
end
end
end,
Tooltip = 'Automatically uses handcuffs on nearby entities'
})
Range = AutoArrest:CreateSlider({
Name = 'Range',
Min = 1,
Max = 8,
Default = 8,
Suffix = function(val)
return val == 1 and 'stud' or 'studs'
end
})
HandCheck = AutoArrest:CreateToggle({
Name = 'Hand Check',
Tooltip = 'Only arrest if you have handcuffs equipped.'
})
CooldownBar = AutoArrest:CreateToggle({
Name = 'Cooldown Bar',
Function = function(callback)
if callback then
cdholder = Instance.new('Frame')
cdholder.Visible = false
cdholder.BorderSizePixel = 0
cdholder.BackgroundTransparency = 0.7
cdholder.AnchorPoint = Vector2.new(0.5, 0)
cdholder.BackgroundColor3 = Color3.new(1, 1, 1)
cdholder.Size = UDim2.new(0.1, 0, 0, 5)
cdholder.Position = UDim2.fromScale(0.5, 0.55)
cdholder.Parent = vape.gui
cdframe = Instance.new('Frame')
cdframe.BorderSizePixel = 0
cdframe.BackgroundTransparency = 0.3
cdframe.BackgroundColor3 = Color3.new(1, 1, 1)
cdframe.Size = UDim2.new(1, -2, 1, -2)
cdframe.Position = UDim2.fromOffset(1, 1)
cdframe.Parent = cdholder
cdlabel = Instance.new('TextLabel')
cdlabel.Size = UDim2.new(1, 0, 0, 14)
cdlabel.Position = UDim2.fromOffset(0, 10)
cdlabel.BackgroundTransparency = 1
cdlabel.TextColor3 = Color3.new(1, 1, 1)
cdlabel.TextScaled = true
cdlabel.TextStrokeTransparency = 0
cdlabel.Font = Enum.Font.Arial
cdlabel.Parent = cdholder
else
if cdframe then
cdframe:Destroy()
cdframe = nil
end
end
end,
Tooltip = 'Show the cooldown for arresting'
})
for _, v in {'Inmates', 'Criminals'} do
toggles[v] = AutoArrest:CreateToggle({
Name = 'Arrest '..v,
Default = true
})
end
end)
run(function()
local AutoReset
AutoReset = vape.Categories.Blatant:CreateModule({
Name = 'AutoReset',
Function = function(callback)
if callback then
AutoReset:Clean(lplr:GetPropertyChangedSignal('Team'):Connect(function()
if lplr.Team == teams.Criminals and entitylib.isAlive then
entitylib.character.Humanoid:ChangeState(Enum.HumanoidStateType.Dead)
end
end))
end
end,
Tooltip = 'Automatically reset after becoming a criminal.'
})
end)
run(function()
local AutoTaser
local Range
local VelocityCheck
local cooldown = 0
AutoTaser = vape.Categories.Blatant:CreateModule({
Name = 'AutoTaser',
Function = function(callback)
if callback then
repeat
local backpack = lplr:FindFirstChildWhichIsA('Backpack')
local taser = backpack and backpack:FindFirstChild('Taser')
if taser and (taser:GetAttribute('CurrentAmmo') or 1) > 0 and cooldown < os.clock() and (arrestCooldown - os.clock()) < 3 then
if not VelocityCheck.Enabled or entitylib.isAlive and entitylib.character.RootPart.AssemblyLinearVelocity.Magnitude < 40 then
local entities = entitylib.AllPosition({
Range = Range.Value,
AttackCheck = false,
Wallcheck = true,
Part = 'Head',
Origin = entitylib.isAlive and entitylib.character.Head.Position or Vector3.zero,
Players = true
})
for _, ent in entities do
if not (ent.Character:GetAttribute('Tased') or ent.Character:GetAttribute('Arrested')) then
cooldown = os.clock() + 2
local equipped = lplr.Character:FindFirstChildWhichIsA('Tool')
if equipped then
equipped.Parent = backpack
end
taser.Parent = lplr.Character
break
end
end
end
end
task.wait(0.05)
until not AutoTaser.Enabled
end
end,
Tooltip = 'Only works with silentaim autofire with position mode.'
})
Range = AutoTaser:CreateSlider({
Name = 'Range',
Min = 1,
Max = 52,
Default = 52,
Suffix = function(val)
return val == 1 and 'stud' or 'studs'
end
})
VelocityCheck = AutoTaser:CreateToggle({
Name = 'Velocity Check',
Default = true
})
end)
run(function()
local GunModifications
local Spread
local FireRate
local Automatic
local olddata, old = {}
local oldhook
local function Modify()
local data = debug.getupvalue(oldshoot or pl.Shoot, 10)
if data and GunModifications.Enabled then
if old ~= data then
olddata = table.clone(data)
old = data
end
data.SpreadRadius = Spread.Enabled and 0 or olddata.SpreadRadius
data.FireRate = (olddata.FireRate or 0) * (FireRate.Value / 100)
data.AutoFire = Automatic.Enabled or olddata.AutoFire
end
end
GunModifications = vape.Categories.Blatant:CreateModule({
Name = 'GunModifications',
Function = function(callback)
if callback then
oldequip = hookfunction(pl.Equip, function(...)
local res = table.pack(oldequip(...))
Modify()
return unpack(res, 1, res.n)
end)
Modify()
else
if oldequip then
if restorefunction then
restorefunction(pl.Equip)
else
oldequip = nil
end
end
if old then
for i, v in olddata do
old[i] = v
end
table.clear(olddata)
old = nil
end
end
end,
Tooltip = 'Modifications to empower the firearm'
})
FireRate = GunModifications:CreateSlider({
Name = 'FireRate Multiplier',
Min = 1,
Max = 100,
Default = 100,
Suffix = '%',
Function = Modify
})
Spread = GunModifications:CreateToggle({
Name = 'No Spread',
Function = Modify
})
Automatic = GunModifications:CreateToggle({
Name = 'Full Automatic',
Function = Modify
})
end)
run(function()
local Killaura
local Targets
local AttackRange
local AngleSlider
local Max
local Mouse
local BoxSwingColor
local BoxAttackColor
local ParticleTexture
local ParticleColor1
local ParticleColor2
local ParticleSize
local Face
local Overlay = OverlapParams.new()
Overlay.FilterType = Enum.RaycastFilterType.Include
local Particles, Boxes, AttackDelay = {}, {}, tick()
local function getAttackData()
if Mouse.Enabled then
if not inputService:IsMouseButtonPressed(0) then return false end
end
return true
end
Killaura = vape.Categories.Blatant:CreateModule({
Name = 'Killaura',
Function = function(callback)
if callback then
repeat
local canAttack = getAttackData()
local attacked = {}
if canAttack then
local plrs = entitylib.AllPosition({
Range = AttackRange.Value,
Wallcheck = Targets.Walls.Enabled or nil,
Part = 'RootPart',
Players = Targets.Players.Enabled,
NPCs = Targets.NPCs.Enabled,
Limit = Max.Value,
AttackCheck = true
})
if #plrs > 0 then
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
if lplr.Team == teams.Guards and v.Player.Team == teams.Inmates and not v.Character:GetAttribute('Hostile') then
continue
end
table.insert(attacked, {
Entity = v,
Check = BoxAttackColor
})
targetinfo.Targets[v] = tick() + 1
replicatedStorage.meleeEvent:FireServer(v.Player, 1, 1)
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.01, vec.Z))
end
task.wait(0.05)
until not Killaura.Enabled
else
for _, v in Boxes do
v.Adornee = nil
end
for _, v in Particles do
v.Parent = nil
end
end
end,
Tooltip = 'Attack players around you\nwithout aiming at them.'
})
Targets = Killaura:CreateTargets({Players = true})
AttackRange = Killaura:CreateSlider({
Name = 'Attack range',
Min = 1,
Max = 12,
Default = 12,
Suffix = function(val)
return val == 1 and 'stud' or 'studs'
end
})
AngleSlider = Killaura:CreateSlider({
Name = 'Max angle',
Min = 1,
Max = 360,
Default = 360
})
Max = Killaura:CreateSlider({
Name = 'Max targets',
Min = 1,
Max = 10,
Default = 10
})
Mouse = Killaura:CreateToggle({Name = 'Require mouse down'})
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'})
end)
run(function()
local NoJumpCooldown
local old
local function EntityAdded(ent)
old = getconnections(ent.Humanoid:GetPropertyChangedSignal('Jump'))[1]
if not old then
repeat
old = getconnections(ent.Humanoid:GetPropertyChangedSignal('Jump'))[1]
task.wait()
until old or not NoJumpCooldown.Enabled
if not NoJumpCooldown.Enabled then
return
end
end
if old then
old:Disable()
end
end
NoJumpCooldown = vape.Categories.Blatant:CreateModule({
Name = 'NoJumpCooldown',
Function = function(callback)
if callback then
NoJumpCooldown:Clean(entitylib.Events.LocalAdded:Connect(EntityAdded))
if entitylib.isAlive then
task.spawn(EntityAdded, entitylib.character)
end
else
if old then
old:Enable()
old = nil
end
end
end,
Tooltip = 'Remove the cooldown from jumping'
})
end)
run(function()
local VehicleFly
local Mode
local Speed
local welds = {}
local up, down = 0, 0
VehicleFly = vape.Categories.Blatant:CreateModule({
Name = 'VehicleFly',
Function = function(callback)
if callback then
up, down = 0, 0
for _, v in {'InputBegan', 'InputEnded'} do
VehicleFly:Clean(inputService[v]:Connect(function(input)
if not inputService:GetFocusedTextBox() then
if input.KeyCode == Enum.KeyCode.E then
up = v == 'InputBegan' and 1 or 0
elseif input.KeyCode == Enum.KeyCode.Q then
down = v == 'InputBegan' and -1 or 0
end
end
end))
end
if Mode.Value == 'Part' then
local part = Instance.new('Part')
part.Size = Vector3.new(50, 1, 50)
part.Anchored = true
part.CanQuery = false
part.Transparency = 1
VehicleFly:Clean(part)
repeat
local seat = entitylib.isAlive and entitylib.character.Humanoid.SeatPart
if seat then
part.CFrame = CFrame.new(seat.Position - Vector3.new(0, 2.2 - (up + down), 0))
part.Parent = workspace
else
part.Parent = nil
end
task.wait(0.05)
until not VehicleFly.Enabled
else
local inCar = false
local old
VehicleFly:Clean(runService.PreSimulation:Connect(function(dt)
local seat = entitylib.isAlive and entitylib.character.Humanoid.SeatPart
local root = seat and entitylib.character.RootPart
if root then
if seat ~= old then
inCar = seat:IsDescendantOf(workspace.CarContainer) and seat:IsA('VehicleSeat')
if inCar then
welds = seat.Parent.Parent.Wheels:QueryDescendants('Rotate')
for _, v in welds do
v.Enabled = false
end
end
old = seat
end
if inCar then
root.AssemblyLinearVelocity = Vector3.new(0, 2.25, 0)
root.CFrame = CFrame.lookAlong(root.Position, gameCamera.CFrame.LookVector) + (entitylib.character.Humanoid.MoveDirection + Vector3.new(0, up + down, 0)) * Speed.Value * dt
gameCamera.CameraSubject = entitylib.character.Humanoid
end
elseif old then
for _, v in welds do
v.Enabled = true
end
old = nil
end
end))
end
else
for _, v in welds do
v.Enabled = true
end
table.clear(welds)
end
end,
Tooltip = 'Allow you to fly with a vehicle'
})
Mode = VehicleFly:CreateDropdown({
Name = 'Mode',
List = {'CFrame', 'Part'},
Function = function(val)
Speed.Object.Visible = val == 'CFrame'
if VehicleFly.Enabled then
VehicleFly:Toggle()
VehicleFly:Toggle()
end
end
})
Speed = VehicleFly:CreateSlider({
Name = 'Speed',
Min = 1,
Max = 100,
Default = 60,
Darker = true
})
end)
run(function()
local VehicleSpeed
local Speed
local old
local seats = {}
VehicleSpeed = vape.Categories.Blatant:CreateModule({
Name = 'VehicleSpeed',
Function = function(callback)
if callback then
repeat
local seat = entitylib.isAlive and entitylib.character.Humanoid.SeatPart
if seat then
if seat ~= old then
if seat:IsDescendantOf(workspace.CarContainer) then
seats = seat.Parent.Parent:QueryDescendants('VehicleSeat')
end
old = seat
end
for _, v in seats do
v.MaxSpeed = Speed.Value
v.Torque = 4
end
end
task.wait()
until not VehicleSpeed.Enabled
else
table.clear(seats)
end
end,
Tooltip = 'Increase vehicle speed'
})
Speed = VehicleSpeed:CreateSlider({
Name = 'Speed',
Min = 80,
Max = 200,
Default = 140
})
end)
run(function()
local VehicleWallbang
local modified = {}
local function Modify(part)
if part:IsA('BasePart') then
if not modified[part] then
modified[part] = part.CanQuery
end
part.CanQuery = false
end
end
VehicleWallbang = vape.Categories.Blatant:CreateModule({
Name = 'VehicleWallbang',
Function = function(callback)
if callback then
VehicleWallbang:Clean(workspace.CarContainer.DescendantAdded:Connect(Modify))
for _, part in workspace.CarContainer:QueryDescendants('BasePart') do
Modify(part)
end
else
for i, v in modified do
i.CanQuery = v
end
table.clear(modified)
end
end,
Tooltip = 'Allow you to shoot through vehicles.'
})
end)
run(function()
local C4ESP
local FillColor
local OutlineColor
local FillTransparency
local OutlineTransparency
local Reference = {}
local Folder = Instance.new('Folder')
Folder.Parent = vape.gui
local function Added(obj)
local cham = Instance.new('Highlight')
cham.Adornee = obj
cham.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
cham.FillColor = Color3.fromHSV(FillColor.Hue, FillColor.Sat, FillColor.Value)
cham.OutlineColor = Color3.fromHSV(OutlineColor.Hue, OutlineColor.Sat, OutlineColor.Value)
cham.FillTransparency = FillTransparency.Value
cham.OutlineTransparency = OutlineTransparency.Value
cham.Parent = Folder
Reference[obj] = cham
end
local function Removed(obj)
if Reference[obj] then
if vape.ThreadFix then
setthreadidentity(8)
end
Reference[obj]:Destroy()
Reference[obj] = nil
end
end
C4ESP = vape.Categories.Render:CreateModule({
Name = 'C4ESP',
Function = function(callback)
if callback then
C4ESP:Clean(collectionService:GetInstanceAddedSignal('C4'):Connect(Added))
C4ESP:Clean(collectionService:GetInstanceRemovedSignal('C4'):Connect(Removed))
for _, obj in collectionService:GetTagged('C4') do
task.spawn(Added, obj)
end
else
for _, v in Reference do
v:Destroy()
end
table.clear(Reference)
end
end,
Tooltip = 'Display all C4\'s placed'
})
FillColor = C4ESP:CreateColorSlider({
Name = 'Color',
Function = function(hue, sat, val)
for _, v in Reference do
v.FillColor = Color3.fromHSV(hue, sat, val)
end
end
})
OutlineColor = C4ESP:CreateColorSlider({
Name = 'Outline Color',
DefaultSat = 0,
Function = function(hue, sat, val)
for _, v in Reference do
v.OutlineColor = Color3.fromHSV(hue, sat, val)
end
end
})
FillTransparency = C4ESP:CreateSlider({
Name = 'Transparency',
Min = 0,
Max = 1,
Default = 0.5,
Function = function(val)
for _, v in Reference do
v.FillTransparency = val
end
end,
Decimal = 10
})
OutlineTransparency = C4ESP:CreateSlider({
Name = 'Outline Transparency',
Min = 0,
Max = 1,
Default = 0.5,
Function = function(val)
for _, v in Reference do
v.OutlineTransparency = val
end
end,
Decimal = 10
})
end)
run(function()
local CameraPhase
local old
CameraPhase = vape.Categories.Render:CreateModule({
Name = 'CameraPhase',
Function = function(callback)
if callback then
local req = require(lplr.PlayerScripts.PlayerModule.CameraModule.ZoomController.Popper)
old = debug.getupvalue(debug.getupvalue(req, 3), 7)
debug.setconstant(old, 16, 0)
else
if old then
debug.setconstant(old, 16, 0.25)
old = nil
end
end
end,
Tooltip = 'Allow the camera to phase through walls.'
})
end)
run(function()
local KillNotifications
KillNotifications = vape.Categories.Render:CreateModule({
Name = 'KillNotifications',
Function = function(callback)
if callback then
KillNotifications:Clean(vapeEvents.PlayerKill.Event:Connect(function(killer, victim)
if victim == lplr.Name and killer ~= lplr.Name then
notif('KillNotifications', killer..' killed you!', 5)
end
end))
end
end,
Tooltip = 'Sends a notification of who killed you.'
})
end)
run(function()
local AutoDetonate
local SafeCheck
local localc4
local ticks = 0
local rayParams = RaycastParams.new()
rayParams.CollisionGroup = 'ClientBullet'
rayParams.FilterType = Enum.RaycastFilterType.Exclude
AutoDetonate = vape.Categories.Utility:CreateModule({
Name = 'AutoDetonate',
Function = function(callback)
if callback then
AutoDetonate:Clean(collectionService:GetInstanceAddedSignal('C4'):Connect(function(obj)
if obj:GetAttribute('UserId') == lplr.UserId then
localc4 = obj
end
end))
for _, obj in collectionService:GetTagged('C4') do
if obj:GetAttribute('UserId') == lplr.UserId then
localc4 = obj
end
end
repeat
local backpack = lplr:FindFirstChildWhichIsA('Backpack')
if backpack and localc4 then
local tool = backpack:FindFirstChild('C4 Explosive')
if tool then
local ent = entitylib.EntityPosition({
Players = true,
Part = 'RootPart',
Range = 25,
Origin = localc4.Position
})
if ent then
rayParams.FilterDescendantsInstances = {ent.Character, lplr.Character, localc4}
local rootdiff = (entitylib.character.RootPart.Position - localc4.Position)
local ray = workspace:Raycast(localc4.Position, (ent.RootPart.Position - localc4.Position), rayParams)
if SafeCheck.Enabled and not ray then
ray = not (workspace:Raycast(localc4.Position, rootdiff, rayParams) or rootdiff.Magnitude > 40)
end
if not ray then
ticks += 1
if ticks > 3 then
local equipped = lplr.Character:FindFirstChildWhichIsA('Tool')
if equipped then
equipped.Parent = backpack
end
tool.Parent = lplr.Character
task.spawn(function()
replicatedStorage.Remotes.C4.ActivateC4:InvokeServer()
end)
tool.Parent = backpack
if equipped then
equipped.Parent = lplr.Character
end
end
task.wait(0.05)
continue
end
end
end
end
ticks = 0
task.wait(0.05)
until not AutoDetonate.Enabled
end
end,
Tooltip = 'Automatically detonate when enemies are nearby.'
})
SafeCheck = AutoDetonate:CreateToggle({
Name = 'Safety Check'
})
end)
run(function()
local AutoReload
local HotSwap
local thread, oldplaysound
local priority = {
M4A1 = 1,
['AK-47'] = 1,
MP5 = 1,
FAL = 1,
['Remington 870'] = 2,
M9 = 3,
Revolver = 4
}
local function getWeapon()
local items = {}
local backpack = lplr:FindFirstChildWhichIsA('Backpack')
if backpack then
for _, tool in backpack:GetChildren() do
if tool:GetAttribute('FireRate') and (tool:GetAttribute('Local_ReloadSession') or 0) <= 0 and tool.Name ~= 'Taser' and tool.Name ~= 'M700' then
table.insert(items, tool)
end
end
table.sort(items, function(a, b)
return (priority[a.Name] or 100) < (priority[b.Name] or 100)
end)
return items[1]
end
end
AutoReload = vape.Categories.Utility:CreateModule({
Name = 'AutoReload',
Function = function(callback)
if callback then
TracerHook:Add('AutoReload', function(...)
if thread then
return
end
thread = task.defer(function()
thread = nil
local tool = debug.getupvalue(pl.Shoot, 1)
if tool and tool:GetAttribute('Local_CurrentAmmo') <= 0 then
task.spawn(pl.Reload)
if HotSwap.Enabled then
local wep = getWeapon()
if wep then
tool.Parent = lplr.Backpack
wep.Parent = lplr.Character
end
end
end
end)
end)
-- reimplementation of playsound to get rid of the bad error
oldplaysound = hookfunction(pl.PlaySound, function(sound)
local soundobj = debug.getupvalue(pl.Shoot, 1)
soundobj = soundobj and soundobj:FindFirstChild('Handle')
soundobj = soundobj and soundobj:FindFirstChild(sound)
if soundobj then
local clone = soundobj:Clone()
clone.Parent = soundobj.Parent
clone:Play()
task.delay(5, clone.Destroy, clone)
end
end)
else
TracerHook:Remove('AutoReload')
if oldplaysound then
if restorefunction then
restorefunction(pl.PlaySound)
else
hookfunction(pl.PlaySound, oldplaysound)
end
oldplaysound = nil
end
end
end,
Tooltip = 'Automatically reload after reaching 0 bullets'
})
HotSwap = AutoReload:CreateToggle({
Name = 'Auto Swap',
Tooltip = 'Automatically swap weapons when reloading'
})
end)
run(function()
local AutoToxic
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.CheaterKicked.Event:Connect(function(plr)
sendMessage('Kicked', plr, 'skill issue cheat | ')
end))
end
end,
Tooltip = 'Says a message after a certain action'
})
for _, v in {'Kicked'} do
Toggles[v] = AutoToxic:CreateToggle({
Name = v..' ',
Function = function(callback)
if Lists[v] then
Lists[v].Object.Visible = callback
end
end,
Default = true
})
Lists[v] = AutoToxic:CreateTextList({
Name = v,
Darker = true,
Visible = false
})
end
end)
run(function()
local CheatDetector
local AddTarget
local overlap = OverlapParams.new()
overlap.CollisionGroup = 'Players'
overlap.FilterDescendantsInstances = {workspace.CarContainer, workspace.Doors}
overlap.FilterType = Enum.RaycastFilterType.Exclude
local caroverlap = OverlapParams.new()
caroverlap.FilterDescendantsInstances = {workspace.CarContainer}
caroverlap.FilterType = Enum.RaycastFilterType.Include
caroverlap.MaxParts = 1
local whiteliststates = {
[Enum.HumanoidStateType.Running] = true,
[Enum.HumanoidStateType.Jumping] = true,
[Enum.HumanoidStateType.Freefall] = true,
[Enum.HumanoidStateType.Landed] = true,
[Enum.HumanoidStateType.FallingDown] = true,
[Enum.HumanoidStateType.GettingUp] = true,
[Enum.HumanoidStateType.Climbing] = true,
[Enum.HumanoidStateType.Seated] = true,
[Enum.HumanoidStateType.Ragdoll] = true,
[Enum.HumanoidStateType.Dead] = true,
[Enum.HumanoidStateType.None] = true
}
CheatDetector = vape.Categories.Utility:CreateModule({
Name = 'CheatDetector',
Function = function(callback)
if callback then
CheatDetector:Clean(vapeEvents.CheatFlagged.Event:Connect(function(plr, flagname)
notif('CheatDetector', 'This player may be cheating! ('..flagname..'): '..plr.Name, 60, 'warning')
if AddTarget.Enabled then
tempTargets[plr.Name] = true
end
local ent = entitylib.getEntity(plr)
if ent then
entitylib.Events.EntityUpdated:Fire(ent)
if AddTarget.Enabled then
ent.Target = true
end
end
end))
repeat
for _, ent in entitylib.List do
if ent.Health > 0 and ent.Player then
if not checkPoint(ent.Head.Position, overlap) then
CheatFlags:Flag(ent.Player, 'phase/noclip', 20)
end
if not whiteliststates[ent.Humanoid:GetState()] then
CheatFlags:Flag(ent.Player, 'invalid state '..ent.Humanoid:GetState().Name, 1)
end
local velo = ent.RootPart.AssemblyLinearVelocity
if not ent.Humanoid.SeatPart then
if (velo * Vector3.new(1, 0, 1)).Magnitude > 26 then
if #workspace:GetPartBoundsInRadius(ent.RootPart.Position, 30, caroverlap) <= 0 then
CheatFlags:Flag(ent.Player, 'speed', 20)
end
end
if velo.Y > 50 then
CheatFlags:Flag(ent.Player, 'highjump', 20)
end
end
end
end
task.wait(0.05)
until not CheatDetector.Enabled
else
CheatFlags:Clear()
end
end,
Tooltip = 'Alerts for any possible cheaters.'
})
AddTarget = CheatDetector:CreateToggle({
Name = 'Temporary Target',
Tooltip = 'Add temporary priority for cheaters.',
Default = true
})
end)
run(function()
local Disabler
local old
local function EntityAdded(ent)
task.defer(function()
old = getconnections(ent.Head:GetPropertyChangedSignal('CanCollide'))[1]
if old then
old:Disable()
end
end)
end
Disabler = vape.Categories.Utility:CreateModule({
Name = 'Disabler',
Function = function(callback)
if callback then
Disabler:Clean(entitylib.Events.LocalAdded:Connect(EntityAdded))
if entitylib.isAlive then
task.spawn(EntityAdded, entitylib.character)
end
else
if old then
old:Enable()
old = nil
end
end
end,
Tooltip = 'Fixes phase with Character mode.',
ExtraText = function()
return 'Phase'
end
})
end)
run(function()
local AutoArmor
local pickups = {}
AutoArmor = vape.Categories.Inventory:CreateModule({
Name = 'AutoArmor',
Function = function(callback)
if callback then
pickups = workspace.Prison_ITEMS.clothes:GetChildren()
AutoArmor:Clean(workspace.Prison_ITEMS.clothes.ChildAdded:Connect(function(obj)
table.insert(pickups, obj)
end))
AutoArmor:Clean(workspace.Prison_ITEMS.clothes.ChildRemoved:Connect(function(obj)
local index = table.find(pickups, obj)
if index then
table.remove(pickups, index)
end
end))
repeat
if entitylib.isAlive and entitylib.character.Humanoid.MaxHealth <= 100 then
local localpos = entitylib.character.RootPart.Position
for _, v in pickups do
if (v:GetPivot().Position - localpos).Magnitude < 10 and gamepasses[v:GetAttribute('RequiredGamepass')] and AutoArmor.Enabled then
if v.Name == 'Light Vest' and gamepasses[lplr.Team == teams.Criminals and 'Mafia' or 'Riot Police'] then
continue
end
replicatedStorage.Remotes.InteractWithItem:InvokeServer(v:FindFirstChildWhichIsA('BasePart'))
end
end
end
task.wait(0.05)
until not AutoArmor.Enabled
else
table.clear(pickups)
end
end,
Tooltip = 'Automatically equip armor from the wall.'
})
end)
run(function()
local AutoHeal
local healItems = {
Breakfast = true,
Lunch = true,
Dinner = true
}
AutoHeal = vape.Categories.Inventory:CreateModule({
Name = 'AutoHeal',
Function = function(callback)
if callback then
repeat
local ent = entitylib.isAlive and entitylib.character
if ent and ent.Humanoid.Health <= 85 then
local healTool
local backpack = lplr:FindFirstChildWhichIsA('Backpack')
if backpack then
for _, v in backpack:GetChildren() do
if healItems[v.Name] then
healTool = v
end
end
if healTool and (os.clock() - (healTool:GetAttribute('Client_LastConsumedAt') or 0)) >= 3 then
local equipped = ent.Character:FindFirstChildWhichIsA('Tool')
if equipped then
equipped.Parent = backpack
end
healTool.Parent = ent.Character
healTool:SetAttribute('Quantity', healTool:GetAttribute('Quantity') - 1)
healTool:SetAttribute('Client_LastConsumedAt', os.clock())
notif('AutoHeal', 'Quantity: '..healTool:GetAttribute('Quantity'), 3)
replicatedStorage.Remotes.EatFood:FireServer()
healTool.Parent = backpack
if equipped then
equipped.Parent = ent.Character
end
end
end
end
task.wait(0.05)
until not AutoHeal.Enabled
end
end,
Tooltip = 'Automatically heal damage with consumables.'
})
end)
run(function()
local AutoHotbar
local SortList = {}
local function DoSorting()
table.sort(pl.SwitchTable, function(a, b)
return (SortList[a.Tool.name] or 999 + a.Slot) < (SortList[b.Tool.name] or 999 + b.Slot)
end)
task.spawn(pl.SwitchUpdate)
end
local function EntityAdded()
local backpack = lplr:FindFirstChildWhichIsA('Backpack')
if backpack then
AutoHotbar:Clean(backpack.ChildAdded:Connect(function(tool)
if SortList[tool.Name] then
task.defer(DoSorting)
end
end))
end
DoSorting()
end
AutoHotbar = vape.Categories.Inventory:CreateModule({
Name = 'AutoHotbar',
Function = function(callback)
if callback then
AutoHotbar:Clean(entitylib.Events.LocalAdded:Connect(EntityAdded))
if entitylib.isAlive then
task.spawn(EntityAdded)
end
end
end,
Tooltip = 'Automatically sort hotbar entries'
})
AutoHotbar:CreateTextList({
Name = 'Sort Order',
Default = {'1/AK-47', '1/MP5', '1/M4A1', '2/Remington 870', '2/M700', '3/M9', '3/Revolver', '4/Taser'},
Function = function(list)
table.clear(SortList)
for _, entry in list do
local tab = entry:split('/')
local ind = tonumber(tab[1])
SortList[tab[2]] = ind or 999
end
end
})
end)
run(function()
local AutoPickup
local Lists = {}
local items = {}
local sortedpickups = {Guard = {}, Prisoner = {}, Criminal = {}}
local function AddPickup(obj)
if obj:IsA('Model') and obj.Name ~= 'Model' and obj:GetAttribute('ToolName') then
table.insert(items, {obj, obj.Name == 'TouchGiver'})
end
end
AutoPickup = vape.Categories.Inventory:CreateModule({
Name = 'AutoPickup',
Function = function(callback)
if callback then
for _, obj in workspace:GetChildren() do
task.spawn(AddPickup, obj)
end
for _, obj in workspace:QueryDescendants('Model > .TouchGiver') do
task.spawn(AddPickup, obj)
end
AutoPickup:Clean(workspace.ChildAdded:Connect(AddPickup))
AutoPickup:Clean(workspace.ChildRemoved:Connect(function(obj)
for index, entry in items do
if entry[1] == obj then
table.remove(items, index)
break
end
end
end))
repeat
if entitylib.isAlive then
local localpos = entitylib.character.RootPart.Position
local backpack = lplr:FindFirstChildWhichIsA('Backpack')
if backpack then
for _, v in items do
if v[1].PrimaryPart and (v[1].PrimaryPart.Position - localpos).Magnitude < 12 then
local toolname = v[1]:GetAttribute('ToolName')
if v[2] then
local found = false
for _, entry in sortedpickups[lplr.Team == teams.Guards and 'Guard' or (lplr.Team == teams.Criminals and 'Criminal' or 'Prisoner')] do
if not backpack:FindFirstChild(entry) then
found = toolname ~= entry
break
end
end
if found then
continue
end
end
if not backpack:FindFirstChild(toolname) then
replicatedStorage.Remotes.GiverPressed:FireServer(v[1])
end
end
end
end
end
task.wait(0.05)
until not AutoPickup.Enabled
else
table.clear(items)
end
end,
Tooltip = 'Automatically grab item pickups'
})
for _, v in {'Prisoner', 'Guard', 'Criminal'} do
AutoPickup:CreateTextList({
Name = v..' Pickups',
Default = {v == 'Criminal' and '1/AK-47' or '1/MP5', '2/Remington 870'},
Placeholder = 'priority/item',
Function = function(list)
table.clear(sortedpickups[v])
for _, entry in list do
local tab = entry:split('/')
local ind = tonumber(tab[1])
sortedpickups[v][ind or 999] = tab[2]
end
end
})
end
end)
run(function()
local BulletTracers
local Material
local Color
local Lifetime
local Fade
local DrawingToggle
local drawingobjs = {}
BulletTracers = vape.Legit:CreateModule({
Name = 'BulletTracers',
Function = function(callback)
if callback then
TracerHook:Add('BulletTracers', function(...)
local origin, dir = ...
if vtool then
origin = vtool.Muzzle.Position
end
local velocity = CFrame.lookAt(origin, dir).LookVector * 1000
if DrawingToggle.Enabled then
local obj = Drawing.new('Line')
obj.Thickness = 2
obj.Color = Color3.fromHSV(Color.Hue, Color.Sat, Color.Value)
drawingobjs[obj] = {origin, origin + velocity, os.clock()}
task.delay(Lifetime.Value, function()
drawingobjs[obj] = nil
obj.Visible = false
obj:Remove()
end)
else
local obj = Instance.new('Part')
obj.Size = Vector3.new(0.1, 0.1, velocity.Magnitude)
obj.CFrame = CFrame.lookAt(origin + (velocity / 2), origin + velocity)
obj.CanCollide = false
obj.CanQuery = false
obj.Anchored = true
obj.Material = Enum.Material[Material.Value]
obj.Color = Color3.fromHSV(Color.Hue, Color.Sat, Color.Value)
obj.Transparency = 1 - Color.Opacity
obj.Parent = workspace
if Fade.Enabled then
local tween = tweenService:Create(obj, TweenInfo.new(Lifetime.Value), {
Transparency = 1
})
tween.Completed:Connect(function()
tween:Destroy()
end)
tween:Play()
end
task.delay(Lifetime.Value, obj.Destroy, obj)
end
return true
end, 1)
if DrawingToggle.Enabled then
BulletTracers:Clean(runService.RenderStepped:Connect(function()
for obj, data in drawingobjs do
local from, vis = gameCamera:WorldToViewportPoint(data[1])
local to, vis2 = gameCamera:WorldToViewportPoint(data[2])
if vis and vis2 then
obj.Visible = true
obj.From = Vector2.new(from.X, from.Y)
obj.To = Vector2.new(to.X, to.Y)
if Fade.Enabled then
obj.Transparency = Color.Opacity * (1 - math.clamp((os.clock() - data[3]) / Lifetime.Value, 0, 1))
end
else
obj.Visible = false
end
end
end))
end
else
TracerHook:Remove('BulletTracers')
end
end,
Tooltip = 'Allow you to customize bullet tracers.'
})
local materials = {'SmoothPlastic'}
for _, v in Enum.Material:GetEnumItems() do
if v.Name ~= 'SmoothPlastic' then
table.insert(materials, v.Name)
end
end
Material = BulletTracers:CreateDropdown({
Name = 'Material',
List = materials
})
Color = BulletTracers:CreateColorSlider({
Name = 'Tracer Color',
DefaultOpacity = 0.5
})
Lifetime = BulletTracers:CreateSlider({
Name = 'Lifetime',
Min = 0,
Max = 0.5,
Default = 0.2,
Decimal = 10
})
Fade = BulletTracers:CreateToggle({
Name = 'Fade',
Default = true
})
DrawingToggle = BulletTracers:CreateToggle({
Name = 'Drawing',
Function = function()
if BulletTracers.Enabled then
BulletTracers:Toggle()
BulletTracers:Toggle()
end
end
})
end)
run(function()
local Crosshair
local Image
local old
Crosshair = vape.Legit:CreateModule({
Name = 'Crosshair',
Function = function(callback)
if callback then
debug.setconstant(oldequip or pl.Equip, 30, Image.Value:find('rbxasset') and Image.Value or isfile(Image.Value) and getcustomasset(Image.Value) or '')
else
debug.setconstant(oldequip or pl.Equip, 30, 'rbxassetid://98794608762931')
end
end,
Tooltip = 'Change the crosshair icon'
})
Image = Crosshair:CreateTextBox({
Name = 'Image',
Placeholder = 'assetid',
Function = function()
if Crosshair.Enabled then
debug.setconstant(oldequip or pl.Equip, 30, Image.Value:find('rbxasset') and Image.Value or isfile(Image.Value) and getcustomasset(Image.Value) or '')
end
end
})
end)
run(function()
local DamageIndicator
local FontOption
local ColorV
local Size
local tent, lent
local thealth, ttimer = 0, 0
local indi, indipart, indithread
local function createIndicator(damage, pos)
if indithread then
task.cancel(indithread)
indi.Text = math.ceil(tonumber(indi.Text) + damage)
indipart.Position = pos
else
indipart = Instance.new('Part')
indipart.Size = Vector3.zero
indipart.Position = pos
indipart.CanCollide = false
indipart.CanQuery = false
indipart.Anchored = true
indipart.Parent = workspace
local billboard = Instance.new('BillboardGui')
billboard.Adornee = indipart
billboard.Size = UDim2.fromOffset(30, 30)
billboard.AlwaysOnTop = true
billboard.Parent = indipart
indi = Instance.new('TextLabel')
indi.BackgroundTransparency = 1
indi.TextStrokeTransparency = 0
indi.Size = UDim2.fromScale(1, 1)
indi.Text = math.ceil(damage)
indi.TextColor3 = Color3.fromHSV(ColorV.Hue, ColorV.Sat, ColorV.Value)
indi.TextScaled = true
indi.Font = Enum.Font[FontOption.Value]
indi.Parent = billboard
end
indithread = task.delay(1, function()
indipart:Destroy()
indipart = nil
indithread = nil
end)
end
DamageIndicator = vape.Legit:CreateModule({
Name = 'DamageIndicator',
Function = function(callback)
if callback then
TracerHook:Add('DamageIndicator', function(...)
local part = debug.getstack(4, 17)
if typeof(part) == 'Instance' then
for _, v in entitylib.List do
if part:IsDescendantOf(v.Character) and entitylib.isVulnerable(v, true) then
if ttimer <= os.clock() or v ~= tent then
thealth = v.Health
end
tent = v
ttimer = os.clock() + 0.5
break
end
end
end
end)
DamageIndicator:Clean(entitylib.Events.EntityUpdated:Connect(function(ent)
if ent == tent and ttimer > os.clock() then
if ent ~= lent then
if indi then
indi.Text = '0'
end
lent = ent
end
if thealth > ent.Health then
createIndicator(thealth - ent.Health, ent.Head.Position + Vector3.new(0, 2, 0))
thealth = ent.Health
end
end
end))
else
TracerHook:Remove('DamageIndicator')
end
end,
Tooltip = 'Add custom damage indicators for gun damage.'
})
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 indi then
indi.Font = Enum.Font[val]
end
end
})
ColorV = DamageIndicator:CreateColorSlider({
Name = 'Color',
DefaultHue = 0,
Function = function(hue, sat, val)
if indi then
indi.Color = Color3.fromHSV(hue, sat, val)
end
end
})
end)
run(function()
local HitSound
local Value
local Volume
local PitchShift
local old, sounds = nil, {}
HitSound = vape.Legit:CreateModule({
Name = 'HitSound',
Function = function(callback)
if callback then
local played
TracerHook:Add('HitSound', function(...)
local part = debug.getstack(4, 17)
if typeof(part) == 'Instance' then
for _, v in entitylib.List do
if part:IsDescendantOf(v.Character) and entitylib.isVulnerable(v, true) then
if #sounds > 0 and not played then
local obj = Instance.new('Sound')
obj.SoundId = sounds[math.random(1, #sounds)]
obj.PlayOnRemove = true
obj.PlaybackSpeed = PitchShift.Enabled and 1 + ((0.5 - math.random()) / 10) or 1
obj.Volume = Volume.Value
obj.Parent = workspace
obj:Destroy()
played = task.defer(function()
played = nil
end)
end
break
end
end
end
end)
else
TracerHook:Remove('HitSound')
end
end,
Tooltip = 'Custom hit sound'
})
Value = HitSound:CreateTextList({
Name = 'Sounds',
Placeholder = 'sound id (roblox or file path)',
Function = function(list)
table.clear(sounds)
for i, v in list or {} do
sounds[i] = v:find('rbxasset') and v or isfile(v) and getcustomasset(v) or nil
end
end
})
Volume = HitSound:CreateSlider({
Name = 'Volume',
Min = 0,
Max = 2,
Default = 1,
Decimal = 10
})
PitchShift = HitSound:CreateToggle({
Name = 'Pitch Shift'
})
end)
run(function()
local KillSound
local Value
local Volume
local PitchShift
local old, sounds = nil, {}
KillSound = vape.Legit:CreateModule({
Name = 'KillSound',
Function = function(callback)
if callback then
KillSound:Clean(vapeEvents.PlayerKill.Event:Connect(function(plr)
if plr == lplr.Name and #sounds > 0 then
local obj = Instance.new('Sound')
obj.SoundId = sounds[math.random(1, #sounds)]
obj.PlayOnRemove = true
obj.PlaybackSpeed = PitchShift.Enabled and 1 + ((0.5 - math.random()) / 10) or 1
obj.Volume = Volume.Value
obj.Parent = workspace
obj:Destroy()
end
end))
end
end,
Tooltip = 'Custom kill sound'
})
Value = KillSound:CreateTextList({
Name = 'Sounds',
Placeholder = 'sound id (roblox or file path)',
Function = function(list)
table.clear(sounds)
for i, v in list or {} do
sounds[i] = v:find('rbxasset') and v or isfile(v) and getcustomasset(v) or nil
end
end
})
Volume = KillSound:CreateSlider({
Name = 'Volume',
Min = 0,
Max = 2,
Default = 1,
Decimal = 10
})
PitchShift = KillSound:CreateToggle({
Name = 'Pitch Shift'
})
end)
run(function()
local Viewmodel
local Depth
local Horizontal
local Vertical
local Sway
local ForceField
local ColorSl
local handle
local old
local moveSpring = Spring.new()
local aimSpring = Spring.new({Speed = 15})
local function ToolAdded(obj)
if obj and obj:IsA('Tool') then
if old then
for _, v in old:QueryDescendants('BasePart, Texture, Decal') do
v.LocalTransparencyModifier = 0
end
end
if vtool then
vtool:Destroy()
end
old = obj
vtool = obj:Clone()
handle = vtool:FindFirstChild('Handle')
vtool.Parent = gameCamera
for _, v in vtool:QueryDescendants('BasePart') do
v.Material = ForceField.Enabled and Enum.Material.ForceField or v.Material
v.Color = ForceField.Enabled and Color3.fromHSV(ColorSl.Hue, ColorSl.Sat, ColorSl.Value) or v.Color
end
for _, v in old:QueryDescendants('BasePart, Texture, Decal') do
v.LocalTransparencyModifier = 1
end
end
end
local function EntityAdded(ent)
if vtool then
vtool:Destroy()
vtool = nil
handle = nil
end
Viewmodel:Clean(ent.Character.ChildAdded:Connect(ToolAdded))
Viewmodel:Clean(ent.Character.ChildRemoved:Connect(function(obj)
if obj == old then
if vtool then
vtool:Destroy()
vtool = nil
end
for _, v in old:QueryDescendants('BasePart, Texture, Decal') do
v.LocalTransparencyModifier = 0
end
old = nil
end
end))
ToolAdded(ent.Character:FindFirstChildWhichIsA('Tool'))
end
Viewmodel = vape.Legit:CreateModule({
Name = 'Viewmodel',
Function = function(callback)
if callback then
TracerHook:Add('Viewmodel', function(...)
shootTimer = os.clock() + 0.3
end, 0)
Viewmodel:Clean(entitylib.Events.LocalAdded:Connect(EntityAdded))
if entitylib.isAlive then
task.spawn(EntityAdded, entitylib.character)
end
Viewmodel:Clean(runService.RenderStepped:Connect(function(dt)
if handle then
moveSpring.Target = entitylib.isAlive and entitylib.character.RootPart.AssemblyLinearVelocity * 0.005 or Vector3.zero
if Sway.Enabled then
if moveSpring.Target.Magnitude > 0.1 then
moveSpring.Target += (gameCamera.CFrame * CFrame.new(math.sin(tick() * 10) * 0.06, 0, 0)).Position - gameCamera.CFrame.Position
else
moveSpring.Target += (gameCamera.CFrame * CFrame.new(0, math.sin(tick()) * 0.04, 0)).Position - gameCamera.CFrame.Position
end
end
local cf = (gameCamera.CFrame * CFrame.new(Horizontal.Value, Vertical.Value, -Depth.Value)) + moveSpring:Update(dt)
aimSpring.Target = aimTimer > os.clock() and CFrame.lookAt(cf.Position, aimVec).LookVector or gameCamera.CFrame.LookVector
handle.CFrame = CFrame.lookAlong(cf.Position, aimSpring:Update(dt)) * (CFrame.Angles(math.rad(math.max(shootTimer - os.clock(), 0) * 10), 0, 0) * CFrame.new(0, 0, math.max(shootTimer - os.clock(), 0)))
handle.AssemblyLinearVelocity = Vector3.zero
end
end))
else
TracerHook:Remove('Viewmodel')
if old then
for _, v in old:QueryDescendants('BasePart, Texture, Decal') do
v.LocalTransparencyModifier = 0
end
old = nil
end
if vtool then
vtool:Destroy()
vtool = nil
handle = nil
end
end
end,
Tooltip = 'Custom viewmodel for guns'
})
Depth = Viewmodel:CreateSlider({
Name = 'Depth',
Min = 0,
Max = 3,
Default = 3,
Decimal = 10
})
Horizontal = Viewmodel:CreateSlider({
Name = 'Horizontal',
Min = 0,
Max = 2,
Default = 2,
Decimal = 10
})
Vertical = Viewmodel:CreateSlider({
Name = 'Vertical',
Min = -1.5,
Max = 2,
Default = -1.5,
Decimal = 10
})
Sway = Viewmodel:CreateToggle({
Name = 'Sway Effect',
Default = true
})
ForceField = Viewmodel:CreateToggle({
Name = 'ForceField Effect',
Function = function(callback)
ColorSl.Object.Visible = callback
if callback and Viewmodel.Enabled then
Viewmodel:Toggle()
Viewmodel:Toggle()
end
end
})
ColorSl = Viewmodel:CreateColorSlider({
Name = 'Color',
Function = function(hue, sat, val)
if vtool then
for _, v in vtool:QueryDescendants('BasePart') do
v.Color = Color3.fromHSV(hue, sat, val)
end
end
end,
Visible = false
})
end)