PL Custom Admin Script
PL Custom Admin Script
IMPORTANT: This script has been expanded to match PrizzLife's functionality while
maintaining client-side execution capability.
]]
-- =======================================
-- INITIALIZATION AND CORE VARIABLES
-- =======================================
-- Notification settings
JoinNotify = false, -- Notify when players join
LeaveNotify = false, -- Notify when players leave
KillNotify = false, -- Notify when kills occur
CommandNotify = true, -- Show notifications for commands
-- Auto features
AutoRespawn = true, -- Automatically loadcharacter when dying
AutoGuns = false, -- Automatically get all guns
AutoTeam = false, -- Auto set your team (guard/prisoner/criminal)
AutoTeamValue = "none", -- Which team to auto select
AutoKill = {}, -- Players to automatically kill
AutoExec = {}, -- Commands to execute on script start
-- Combat features
SilentAim = false, -- Makes you shoot without missing a target
SilentAimHeadshot = true, -- Target heads with silent aim
KillAura = false, -- Automatically kill nearby players
KillAuraRange = 15, -- Range for kill aura
KillAuraTeamCheck = true, -- Don't kill same team with killaura
KillAuraVisualFeedback = true, -- Show visual line to target
InfAmmo = false, -- Infinite ammo
InfDamage = false, -- One-hit kills
NoRecoil = false, -- No recoil when shooting
RapidFire = false, -- Shoot very fast
-- Weapon options
CustomGunMods = false, -- Enable custom gun modifications
GunOneShot = false, -- Make guns kill in one shot
GunFireRate = 0.1, -- Modified fire rate for guns
GunAutofire = false, -- Make all guns automatic
OldItemMethod = false, -- Use teleport for getting items (fallback)
-- Visual features
Fullbright = false, -- Enable fullbrightness
Xray = false, -- See through walls
PlayerESP = false, -- See player through walls
ItemESP = false, -- See items through walls
BoxESP = false, -- Draw boxes around players
TracerESP = false, -- Draw lines to players
NameESP = false, -- Show names through walls
TeamESP = false, -- Color ESP by team
-- Movement options
Noclip = false, -- Walk through walls
InfiniteJump = false, -- Jump without limit
SpeedMultiplier = 1, -- Walk speed multiplier
JumpMultiplier = 1, -- Jump height multiplier
FlySpeed = 1, -- Flying speed
VehicleSpeed = 1, -- Vehicle speed multiplier
-- Permission settings
AdminIds = {}, -- Extra admin user IDs
WhitelistedPlayers = {}, -- Players immune to your attacks
WhitelistRanked = false, -- Automatically whitelist ranked players
BlacklistedPlayers = {}, -- Auto kill/kick these players
RankedNukeCmds = true, -- Allow ranked players to use nuke commands
RankedMultiCmd = true, -- Allow ranked players to use "all" and "team"
arguments
RankedOutput = true, -- Chat the output commands of ranked players
WhisperToRanked = true, -- Use whisper for outputing commands for ranked
players
-- Advanced settings
CustomGuiEnabled = true, -- Use the custom GUI
DebugMode = false, -- Show detailed debug information
VerboseMode = false, -- Show detailed logs
ExecuteCustomCommands = {}, -- Custom commands to add
RemoteSpooferEnabled = true, -- Spoof remote calls for more stealth
AntiRemoteFunctionLogger = true, -- Prevent remote function logging
AntiRequestFunctionLogger = true, -- Prevent request logging
AdminId = 0, -- Your admin ID (0 = only local admin)
ExecutionDelay = 0, -- Delay between command execution
-- =======================================
-- TELEPORTATION & LOCATION DATA
-- =======================================
-- =======================================
-- PERMISSION SYSTEM
-- =======================================
-- Alias mapping for commands (so multiple command strings can trigger same
function)
local CommandAliases = {
["teleport"] = "tp",
["cmds"] = "listcommands",
["commands"] = "listcommands",
["help"] = "listcommands",
["cafe"] = "cafeteria",
["armoury"] = "armory",
["criminal"] = "crim",
["mkill"] = "meleekill",
["akill"] = "arrestkill",
["goto"] = "tp",
["bring"] = "tp",
["shop"] = "store",
["explode"] = "kaboom",
["boom"] = "kaboom",
["invis"] = "invisible",
["vis"] = "visible",
["ctp"] = "clicktp",
["lagserver"] = "crash",
["reset"] = "respawn",
["ws"] = "speed",
["jp"] = "jumppower",
["hkill"] = "hidekill",
["h"] = "help",
["g"] = "gun",
["k"] = "kill",
["lk"] = "loopkill",
["sg"] = "shotgun",
["p"] = "prisoner",
["i"] = "inmate",
["c"] = "crim",
["cr"] = "crim",
["gd"] = "guard",
["clearall"] = "clear",
["clearcmds"] = "clear",
["fix"] = "respawn",
["die"] = "respawn",
["r"] = "respawn",
["re"] = "respawn",
["refreshcharacter"] = "respawn",
["refresh"] = "respawn",
["heli"] = "helicopter",
["tpall"] = "teleportall",
["ka"] = "killaura",
["ff"] = "forcefield",
["godmode"] = "god",
["grav"] = "gravity",
["serverhop"] = "shop",
["cls"] = "clear",
["ver"] = "version",
["info"] = "playerinfo",
["rj"] = "rejoin",
["cars"] = "car",
["rank"] = "admin",
["unrank"] = "unadmin",
["btools"] = "buildtools",
["explorer"] = "dex",
["setprefix"] = "prefix",
["changeprefix"] = "prefix",
["inf"] = "infinite",
["invisible"] = "invis",
["visible"] = "vis",
["cuff"] = "handcuff",
["uncuff"] = "unhandcuff",
["killenemies"] = "killteam",
["remotespy"] = "rspy",
["walkspeed"] = "speed",
["jump"] = "jumppower",
["message"] = "msg",
["whisper"] = "pm",
["private"] = "pm",
["pistol"] = "m9",
["shotty"] = "shotgun",
["snipe"] = "sniperrifle",
["gun"] = "weapons",
["weapons"] = "guns",
["rifle"] = "ak47",
["items"] = "guns",
["gear"] = "guns",
["kill"] = "meleekill",
["tele"] = "teleport",
["warp"] = "teleport",
["godmode"] = "god",
["invincible"] = "god",
["heal"] = "health",
["revive"] = "heal",
["mods"] = "weapons",
["meleekill"] = "mkill",
["invis"] = "invisible",
["vis"] = "visible",
["vanish"] = "invisible",
["appear"] = "visible",
["hide"] = "invisible",
["show"] = "visible",
["goback"] = "return",
["savecf"] = "savepos",
["loadcf"] = "loadpos",
["tpto"] = "goto",
["tpme"] = "bring",
["summon"] = "bring",
["fetch"] = "bring",
["stuck"] = "respawn",
["glitch"] = "respawn",
["force"] = "power",
["quicksand"] = "forcefield",
["shield"] = "forcefield",
["protect"] = "forcefield",
["defend"] = "forcefield",
["trip"] = "fall",
["stumble"] = "fall",
["injure"] = "damage",
["hurt"] = "damage",
["pain"] = "damage",
["punch"] = "hit",
["slap"] = "hit",
["strike"] = "hit",
["remove"] = "delete",
["destroy"] = "delete",
["erase"] = "delete",
["skyfall"] = "skydive",
["fallfromsky"] = "skydive",
["giveaccess"] = "admin",
["authorize"] = "admin",
["removeaccess"] = "unadmin",
["deauthorize"] = "unadmin",
["handcuff"] = "arrest",
["detain"] = "arrest",
["catch"] = "arrest",
["free"] = "release",
["uncuff"] = "release",
["liberate"] = "release",
["unarrest"] = "release",
["kick"] = "boot",
["remove"] = "boot",
["eject"] = "boot",
["showall"] = "unhideall",
["tele"] = "tp"
}
-- =======================================
-- UTILITY FUNCTIONS & CORE MECHANICS
-- =======================================
if Settings.CommandNotify then
pcall(function()
game.StarterGui:SetCore("SendNotification", {
Title = title or "Notification",
Text = text or "",
Duration = duration
})
end)
end
if Settings.VerboseMode then
print("[" .. title .. "] " .. text)
end
pcall(function()
game:GetService("StarterGui"):SetCore("ChatMakeSystemMessage", {
Text = "[ADMIN] " .. message,
Color = color,
Font = Enum.Font.SourceSansBold
})
end)
if Settings.VerboseMode then
print("[ADMIN] " .. message)
end
end
pcall(function()
if Settings.WhisperToRanked and
ReplicatedStorage:FindFirstChild("DefaultChatSystemChatEvents") then
ReplicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer("/w " ..
player.Name .. " " .. message, "All")
else
ReplicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer(message,
"All")
end
end)
return nil
end
if Settings.RankedPlayers[player.Name] then
local tier = Settings.RankedPlayers[player.Name]
return false
end
return false
end
return true
}
local originalFunction
originalFunction = hookfunction(remote.FireServer, function(self, ...)
local args = {...}
local result = callback(self, args)
return originalFunction
end
return player.Character
end
return {
character = character,
humanoid = humanoid,
rootPart = rootPart,
head = head
}
end
return true
end
-- Validate player
local character = getCharacter(player)
if not character then return false end
return true
end
return true
elseif action == "tase" then
-- Tase method - works via remote events
local body = getBody(player)
if not body then return false end
if workspace:FindFirstChild("Remote") and
workspace.Remote:FindFirstChild("tazePlayer") then
workspace.Remote.tazePlayer:FireServer(body.humanoid)
end
return true
elseif action == "arrest" then
-- Arrest method - works via remote events
local body = getBody(player)
if not body then return false end
if workspace:FindFirstChild("Remote") and
workspace.Remote:FindFirstChild("arrest") then
workspace.Remote.arrest:FireServer(body.head)
end
return true
elseif action == "bring" or action == "to" then
-- Bring a player to a target location
local targetPlayer = args[1]
local targetCharacter = getCharacter(targetPlayer)
teleportPlayer(player, targetCharacter.HumanoidRootPart.CFrame *
CFrame.new(0, 0, 3))
return true
elseif action == "fling" then
-- Fling a player - give them extreme velocity
local body = getBody(player)
if not body then return false end
if body.rootPart:FindFirstChild("BodyVelocity") then
body.rootPart.BodyVelocity:Destroy()
end
return true
elseif action == "freeze" then
-- Freeze a player in place
local body = getBody(player)
if not body then return false end
return true
elseif action == "unfreeze" then
-- Unfreeze a frozen player
local body = getBody(player)
if not body then return false end
return true
elseif action == "explode" then
-- Create explosion effect at player
local body = getBody(player)
if not body then return false end
return true
elseif action == "shield" or action == "ff" or action == "forcefield" then
-- Give player a protective forcefield
local body = getBody(player)
if not body then return false end
if body.character:FindFirstChild("ForceField") then
body.character.ForceField:Destroy()
else
local forcefield = Instance.new("ForceField")
forcefield.Parent = body.character
end
return true
elseif action == "invisible" or action == "invis" then
-- Make player invisible
local body = getBody(player)
if not body then return false end
return true
elseif action == "visible" or action == "vis" then
-- Make player visible again
local body = getBody(player)
if not body then return false end
return true
elseif action == "speed" or action == "walkspeed" then
-- Set player's movement speed
local body = getBody(player)
if not body then return false end
body.humanoid.WalkSpeed = speed
return true
elseif action == "jumppower" or action == "jp" then
-- Set player's jump height
local body = getBody(player)
if not body then return false end
return true
elseif action == "health" or action == "heal" then
-- Set player's health
local body = getBody(player)
if not body then return false end
body.humanoid.Health = health
return true
elseif action == "damage" or action == "hurt" then
-- Damage a player
local body = getBody(player)
if not body then return false end
body.humanoid:TakeDamage(damage)
return true
elseif action == "respawn" or action == "reset" then
-- Force player to respawn
local body = getBody(player)
if not body then return false end
return true
end
return false
end
return true
end
return result
end
-- =======================================
-- ANTI-KICK & SERVER ACCESS SYSTEMS
-- =======================================
-- Hook namecall
mt.__namecall = newcclosure(function(self, ...)
local method = getnamecallmethod()
local args = {...}
-- Hook index
mt.__index = newcclosure(function(self, key)
-- Intercept character replication attempts
if key == "Character" and self == LocalPlayer and Settings.AntiDeath then
local fakeChar = oldIndex(self, key)
setreadonly(fakeChar, false)
return fakeChar
end
setreadonly(mt, true)
-- Anti-Report system
pcall(function()
-- Block reports
local oldFireServer
oldFireServer = hookfunction(Instance.new("RemoteEvent").FireServer,
function(self, ...)
local args = {...}
if self.Name == "RequestReport" or self.Name == "SubmitReport" then
Notif("Anti-Report", "Blocked report attempt", 3)
return
end
return oldFireServer(self, ...)
end)
end)
if LocalPlayer.Character then
characterItems = LocalPlayer.Character:GetChildren()
end
-- Check whitelist
if Settings.WhitelistedPlayers[player.Name] then
continue
end
if targetPart then
-- Modify all shot parameters to target this player perfectly
args[1][1] = targetPart
args[1][2] = targetPart.Position
setreadonly(mt, true)
end
-- =======================================
-- COMMAND IMPLEMENTATION
-- =======================================
-- If only one argument, assume it's a location and the target is the speaker
if target and not location then
if TeleportLocations[target:lower()] then
location = target
target = speaker
end
end
-- Guns/weapon commands
COMMANDS.gun = function(args, speaker)
local gunType = args[1] or "m9"
local target = args[2] and findPlayer(args[2], speaker) or speaker
-- Speed command
COMMANDS.speed = function(args, speaker)
local speed = tonumber(args[1]) or 16
local target = args[2] and findPlayer(args[2], speaker) or speaker
-- Arrest command
COMMANDS.arrest = function(args, speaker)
local target = findPlayer(args[1], speaker)
if target == "all" then
if canUseMultiTarget(speaker) and Settings.RankedNukeCmds then
for _, player in pairs(Players:GetPlayers()) do
if player ~= speaker and not
Settings.WhitelistedPlayers[player.Name] then
performPlayerAction(player, "arrest")
wait(0.3) -- Delay to prevent overload
end
end
return "Arrested all players"
else
return "You don't have permission to arrest all players"
end
elseif target == "team" or type(target) == "table" then
if canUseMultiTarget(speaker) then
local players = (target == "team") and {} or target
-- Tase command
COMMANDS.tase = function(args, speaker)
local target = findPlayer(args[1], speaker)
-- Fling command
COMMANDS.fling = function(args, speaker)
local target = findPlayer(args[1], speaker)
local power = tonumber(args[2]) or 1000
-- Explode command
COMMANDS.kaboom = function(args, speaker)
local target = findPlayer(args[1], speaker)
local size = tonumber(args[2]) or 10
-- Invisible command
COMMANDS.invisible = function(args, speaker)
local target = args[1] and findPlayer(args[1], speaker) or speaker
-- Visible command
COMMANDS.visible = function(args, speaker)
local target = args[1] and findPlayer(args[1], speaker) or speaker
-- Freeze command
COMMANDS.freeze = function(args, speaker)
local target = findPlayer(args[1], speaker)
-- Unfreeze command
COMMANDS.unfreeze = function(args, speaker)
local target = findPlayer(args[1], speaker)
-- Respawn command
COMMANDS.respawn = function(args, speaker)
local target = args[1] and findPlayer(args[1], speaker) or speaker
-- Heal command
COMMANDS.heal = function(args, speaker)
local target = args[1] and findPlayer(args[1], speaker) or speaker
local health = tonumber(args[2]) or 100
-- Damage command
COMMANDS.damage = function(args, speaker)
local target = findPlayer(args[1], speaker)
local damage = tonumber(args[2]) or 25
-- Kick command
COMMANDS.kick = function(args, speaker)
if speaker ~= LocalPlayer then
return "Only script owner can kick players"
end
-- Ban system
COMMANDS.ban = function(args, speaker)
if speaker ~= LocalPlayer then
return "Only script owner can ban players"
end
if target then
if verifyArgs(speaker, target, "ban") then
-- Store in ban list
local banData = {
name = target.Name,
userId = target.UserId,
reason = reason,
bannedBy = speaker.Name,
bannedAt = os.time(),
duration = duration * 3600, -- Convert to seconds
expiresAt = os.time() + duration * 3600
}
Settings._internal.bannedPlayers[target.UserId] = banData
-- Create a ban script that can persist even when you're offline
-- This would require a server-side script for full implementation
return "Banned " .. target.Name .. " for " .. duration .. " hour(s)"
else
return "You don't have permission to ban this player"
end
else
return "Player not found"
end
end
-- Unban command
COMMANDS.unban = function(args, speaker)
if speaker ~= LocalPlayer then
return "Only script owner can unban players"
end
-- Check if player is an ID
local userId = tonumber(nameOrId)
if userId then
if Settings._internal.bannedPlayers[userId] then
Settings._internal.bannedPlayers[userId] = nil
return "Unbanned player with ID " .. userId
else
for id, banData in pairs(Settings._internal.bannedPlayers) do
if banData.name:lower() == nameOrId:lower() then
Settings._internal.bannedPlayers[id] = nil
return "Unbanned " .. banData.name
end
end
end
else
-- Search by name
for id, banData in pairs(Settings._internal.bannedPlayers) do
if banData.name:lower() == nameOrId:lower() then
Settings._internal.bannedPlayers[id] = nil
return "Unbanned " .. banData.name
end
end
end
-- Whitelist command
COMMANDS.whitelist = function(args, speaker)
if speaker ~= LocalPlayer then
return "Only script owner can use whitelist"
end
-- Unwhitelist command
COMMANDS.unwhitelist = function(args, speaker)
if speaker ~= LocalPlayer then
return "Only script owner can use unwhitelist"
end
-- Unblacklist command
COMMANDS.unblacklist = function(args, speaker)
if speaker ~= LocalPlayer then
return "Only script owner can use unblacklist"
end
-- Prefix command
COMMANDS.prefix = function(args, speaker)
local newPrefix = args[1]
Settings.Prefix = newPrefix
return "Changed prefix to: " .. newPrefix
end
-- Fly command
COMMANDS.fly = function(args, speaker)
local target = args[1] and findPlayer(args[1], speaker) or speaker
local speed = tonumber(args[2]) or Settings.FlySpeed
local bg = Instance.new("BodyGyro")
bg.Name = "FlyBG"
bg.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
bg.P = 1500
bg.D = 50
bg.CFrame = char.rootPart.CFrame
bg.Parent = char.rootPart
local cf = workspace.CurrentCamera.CFrame
local direction = Vector3.new()
local speed = speed * 2
if UserInputService:IsKeyDown(Enum.KeyCode.W) then
direction = direction + cf.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then
direction = direction - cf.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then
direction = direction - cf.RightVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then
direction = direction + cf.RightVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then
direction = direction + Vector3.new(0, 1, 0)
end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then
direction = direction - Vector3.new(0, 1, 0)
end
char.rootPart.FlyBV.Velocity = direction
char.rootPart.FlyBG.CFrame =
CFrame.new(char.rootPart.Position, char.rootPart.Position + cf.LookVector)
end)
-- Noclip command
COMMANDS.noclip = function(args, speaker)
local target = args[1] and findPlayer(args[1], speaker) or speaker
getgenv().NoclipConnection = RunService.Stepped:Connect(function()
if not Settings.Noclip then
getgenv().NoclipConnection:Disconnect()
getgenv().NoclipConnection = nil
return
end
-- ESP command
COMMANDS.esp = function(args, speaker)
-- Toggle ESP state
if Settings.PlayerESP then
-- Disable ESP
Settings.PlayerESP = false
-- Clean up existing ESP
for _, obj in pairs(workspace:GetDescendants()) do
if obj.Name == "ESPHighlight" or obj.Name == "ESPLabel" then
obj:Destroy()
end
end
if getgenv().ESPUpdateConnection then
getgenv().ESPUpdateConnection:Disconnect()
getgenv().ESPUpdateConnection = nil
end
if Settings.NameESP then
local billboardGui = Instance.new("BillboardGui")
billboardGui.Name = "ESPLabel"
billboardGui.AlwaysOnTop = true
billboardGui.Size = UDim2.new(0, 100, 0, 30)
billboardGui.StudsOffset = Vector3.new(0, 3, 0)
billboardGui.Parent = player.Character.Head
if Settings.TracerESP then
-- Create tracers (lines to players)
local line = Drawing.new("Line")
line.Visible = true
line.Color = player.TeamColor.Color
line.Thickness = 1
line.Transparency = 0.5
Players.PlayerRemoving:Connect(function(player)
if Settings.PlayerESP and getgenv().ESPTracers and
getgenv().ESPTracers[player] then
getgenv().ESPTracers[player]:Remove()
getgenv().ESPTracers[player] = nil
end
end)
-- Xray command
COMMANDS.xray = function(args, speaker)
-- Toggle Xray state
if Settings.Xray then
-- Disable Xray
Settings.Xray = false
-- Fullbright command
COMMANDS.fullbright = function(args, speaker)
-- Toggle fullbright state
if Settings.Fullbright then
-- Disable fullbright
Settings.Fullbright = false
if getgenv().OriginalAmbient then
Lighting.Ambient = getgenv().OriginalAmbient
getgenv().OriginalAmbient = nil
end
if getgenv().OriginalOutdoorAmbient then
Lighting.OutdoorAmbient = getgenv().OriginalOutdoorAmbient
getgenv().OriginalOutdoorAmbient = nil
end
if getgenv().OriginalClockTime then
Lighting.ClockTime = getgenv().OriginalClockTime
getgenv().OriginalClockTime = nil
end
-- KillAura command
COMMANDS.killaura = function(args, speaker)
local range = tonumber(args[1]) or Settings.KillAuraRange
getgenv().KillAuraConnection = RunService.Heartbeat:Connect(function()
if not Settings.KillAura then
getgenv().KillAuraConnection:Disconnect()
getgenv().KillAuraConnection = nil
return
end
-- Check if in range
if isPlayerInRange(player, Settings.KillAuraRange) then
-- Kill the player
performPlayerAction(player, "kill")
game:GetService("Debris"):AddItem(line, 0.1)
end
-- InfiniteJump command
COMMANDS.infinitejump = function(args, speaker)
-- Toggle InfiniteJump state
if Settings.InfiniteJump then
-- Disable InfiniteJump
Settings.InfiniteJump = false
getgenv().InfiniteJumpConnection =
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if not Settings.InfiniteJump then
getgenv().InfiniteJumpConnection:Disconnect()
getgenv().InfiniteJumpConnection = nil
return
end
-- AntiTase command
COMMANDS.antitase = function(args, speaker)
-- Toggle AntiTase state
if Settings.AntiTase then
-- Disable AntiTase
Settings.AntiTase = false
-- AntiArrest command
COMMANDS.antiarrest = function(args, speaker)
-- Toggle AntiArrest state
if Settings.AntiArrest then
-- Disable AntiArrest
Settings.AntiArrest = false
-- AntiVoid command
COMMANDS.antivoid = function(args, speaker)
-- Toggle AntiVoid state
if Settings.AntiVoid then
-- Disable AntiVoid
Settings.AntiVoid = false
getgenv().AntiVoidConnection = RunService.Heartbeat:Connect(function()
if not Settings.AntiVoid then
getgenv().AntiVoidConnection:Disconnect()
getgenv().AntiVoidConnection = nil
return
end
-- AntiFling command
COMMANDS.antifling = function(args, speaker)
-- Toggle AntiFling state
if Settings.AntiFling then
-- Disable AntiFling
Settings.AntiFling = false
-- Apply initially
applyAntiFling(getCharacter(speaker))
getgenv().AntiFlingConnection =
speaker.CharacterAdded:Connect(function(char)
if not Settings.AntiFling then
getgenv().AntiFlingConnection:Disconnect()
getgenv().AntiFlingConnection = nil
return
end
-- AntiCrash command
COMMANDS.anticrash = function(args, speaker)
-- Toggle AntiCrash state
if Settings.AntiCrash then
-- Disable AntiCrash
Settings.AntiCrash = false
return "Disabled Anti-Crash"
else
-- Enable AntiCrash
Settings.AntiCrash = true
-- Install protections
local mt = getrawmetatable(game)
local oldNc = mt.__namecall
setreadonly(mt, false)
setreadonly(mt, true)
if hasGun then
-- Kill the shooter
performPlayerAction(player, "kill")
Notif("Anti-Shoot", "Killed " .. player.Name .. "
for shooting at you", 3)
break
end
end
end
-- AntiPunch command
COMMANDS.antipunch = function(args, speaker)
-- Toggle AntiPunch state
if Settings.AntiPunch then
-- Disable AntiPunch
Settings.AntiPunch = false
-- InfAmmo command
COMMANDS.infammo = function(args, speaker)
-- Toggle InfAmmo state
if Settings.InfAmmo then
-- Disable InfAmmo
Settings.InfAmmo = false
-- Check backpack
for _, tool in pairs(LocalPlayer.Backpack:GetChildren()) do
if tool:IsA("Tool") and tool:FindFirstChild("GunStates") then
local gunStates = require(tool.GunStates)
gunStates.MaxAmmo = math.huge
gunStates.CurrentAmmo = math.huge
gunStates.StoredAmmo = math.huge
end
end
-- Apply initially
applyInfAmmo()
return "Enabled Silent Aim" .. (headshot and " (Headshot mode)" or "")
end
end
-- OneShot command
COMMANDS.oneshot = function(args, speaker)
-- Toggle OneShot state
if Settings.InfDamage then
-- Disable OneShot
Settings.InfDamage = false
-- RapidFire command
COMMANDS.rapidfire = function(args, speaker)
-- Toggle RapidFire state
if Settings.RapidFire then
-- Disable RapidFire
Settings.RapidFire = false
-- Check backpack
for _, tool in pairs(LocalPlayer.Backpack:GetChildren()) do
if tool:IsA("Tool") and tool:FindFirstChild("GunStates") then
local gunStates = require(tool.GunStates)
gunStates.AutoFire = true
gunStates.FireRate = 0.05
end
end
-- Apply initially
applyRapidFire()
-- NoRecoil command
COMMANDS.norecoil = function(args, speaker)
-- Toggle NoRecoil state
if Settings.NoRecoil then
-- Disable NoRecoil
Settings.NoRecoil = false
-- Check backpack
for _, tool in pairs(LocalPlayer.Backpack:GetChildren()) do
if tool:IsA("Tool") and tool:FindFirstChild("GunStates") then
local gunStates = require(tool.GunStates)
gunStates.Recoil = 0
gunStates.RecoilShake = 0
end
end
-- Apply initially
applyNoRecoil()
-- AutoGuns command
COMMANDS.autoguns = function(args, speaker)
-- Toggle AutoGuns state
if Settings.AutoGuns then
-- Disable AutoGuns
Settings.AutoGuns = false
-- =======================================
-- CHAT COMMAND HANDLER
-- =======================================
if success then
-- Command executed successfully
if result then
Notif("Command", result, 3)
return true
end
return false
end
-- =======================================
-- LOOP KILL & AUTO SYSTEMS
-- =======================================
-- Check backpack
for _, tool in pairs(LocalPlayer.Backpack:GetChildren()) do
if tool.Name == "M9" then hasPistol = true end
if tool.Name == "Remington 870" then hasShotgun = true end
if tool.Name == "AK-47" then hasAK47 = true end
if tool.Name == "Riot Shield" then hasRiot = true end
end
-- =======================================
-- GUI COMMANDS & MENU SYSTEM
-- =======================================
-- Create GUI
local gui = Instance.new("ScreenGui")
gui.Name = "PrisonAdminGUI"
gui.ResetOnSpawn = false
titleBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = mainFrame.Position
end
end)
titleBar.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false
end
end)
gui.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement and dragging
then
dragInput = input
end
end)
game:GetService("RunService").RenderStepped:Connect(function()
if dragging and dragInput then
local delta = dragInput.Position - dragStart
mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset +
delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
-- Title text
local titleText = Instance.new("TextLabel")
titleText.Name = "TitleText"
titleText.Size = UDim2.new(1, -60, 1, 0)
titleText.Position = UDim2.new(0, 10, 0, 0)
titleText.BackgroundTransparency = 1
titleText.Text = "Prison Life Admin (v" .. currentVersion .. ")"
titleText.TextColor3 = Color3.fromRGB(255, 255, 255)
titleText.TextSize = 16
titleText.Font = Enum.Font.SourceSansBold
titleText.TextXAlignment = Enum.TextXAlignment.Left
titleText.Parent = titleBar
-- Close button
local closeButton = Instance.new("TextButton")
closeButton.Name = "CloseButton"
closeButton.Size = UDim2.new(0, 25, 0, 25)
closeButton.Position = UDim2.new(1, -30, 0, 2)
closeButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
closeButton.BorderSizePixel = 0
closeButton.Text = "X"
closeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
closeButton.TextSize = 16
closeButton.Font = Enum.Font.SourceSansBold
closeButton.Parent = titleBar
-- Tab container
local tabContainer = Instance.new("Frame")
tabContainer.Name = "TabContainer"
tabContainer.Size = UDim2.new(1, 0, 0, 30)
tabContainer.Position = UDim2.new(0, 0, 0, 30)
tabContainer.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
tabContainer.BorderSizePixel = 0
tabContainer.Parent = mainFrame
-- Create tabs
for i, tabName in ipairs(tabs) do
-- Tab button
local tabButton = Instance.new("TextButton")
tabButton.Name = tabName .. "Button"
tabButton.Size = UDim2.new(1/#tabs, 0, 1, 0)
tabButton.Position = UDim2.new((i-1)/#tabs, 0, 0, 0)
tabButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
tabButton.BorderSizePixel = 0
tabButton.Text = tabName
tabButton.TextColor3 = Color3.fromRGB(200, 200, 200)
tabButton.TextSize = 14
tabButton.Font = Enum.Font.SourceSans
tabButton.Parent = tabContainer
tabButtons[tabName] = tabButton
-- Tab frame
local tabFrame = Instance.new("ScrollingFrame")
tabFrame.Name = tabName .. "Frame"
tabFrame.Size = UDim2.new(1, 0, 1, -60)
tabFrame.Position = UDim2.new(0, 0, 0, 60)
tabFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
tabFrame.BorderSizePixel = 0
tabFrame.ScrollBarThickness = 6
tabFrame.Visible = i == 1 -- First tab visible by default
tabFrame.CanvasSize = UDim2.new(0, 0, 0, 1000) -- Will be adjusted
dynamically
tabFrame.ScrollingDirection = Enum.ScrollingDirection.Y
tabFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y
tabFrame.Parent = mainFrame
tabFrames[tabName] = tabFrame
commandCount = commandCount + 1
end
end
-- Initial population
updateCommandList()
-- Search functionality
searchBar.Changed:Connect(function(prop)
if prop == "Text" then
local filter = searchBar.Text
if filter == "Search commands..." then filter = "" end
updateCommandList(filter)
end
end)
-- Player name
local playerName = Instance.new("TextLabel")
playerName.Name = "PlayerName"
playerName.Size = UDim2.new(1, -80, 1, 0)
playerName.Position = UDim2.new(0, 40, 0, 0)
playerName.BackgroundTransparency = 1
playerName.Text = player.Name
playerName.TextColor3 = Color3.fromRGB(255, 255, 255)
playerName.TextSize = 14
playerName.Font = Enum.Font.SourceSans
playerName.TextXAlignment = Enum.TextXAlignment.Left
playerName.Parent = playerFrame
-- Player icon (square for now, can be replaced with actual player
icon)
local playerIcon = Instance.new("Frame")
playerIcon.Name = "PlayerIcon"
playerIcon.Size = UDim2.new(0, 30, 0, 30)
playerIcon.Position = UDim2.new(0, 5, 0, 5)
playerIcon.BackgroundColor3 = Color3.fromRGB(200, 200, 200)
playerIcon.BorderSizePixel = 0
playerIcon.Parent = playerFrame
if Settings.WhitelistedPlayers[player.Name] then
local whitelistIndicator = Instance.new("Frame")
whitelistIndicator.Name = "WhitelistIndicator"
whitelistIndicator.Size = UDim2.new(0, 10, 0, 10)
whitelistIndicator.Position = UDim2.new(1, -15, 0, 20)
whitelistIndicator.BackgroundColor3 = Color3.fromRGB(255, 255,
0)
whitelistIndicator.BorderSizePixel = 0
whitelistIndicator.Parent = playerFrame
end
if Settings.BlacklistedPlayers[player.Name] then
local blacklistIndicator = Instance.new("Frame")
blacklistIndicator.Name = "BlacklistIndicator"
blacklistIndicator.Size = UDim2.new(0, 10, 0, 10)
blacklistIndicator.Position = UDim2.new(1, -30, 0, 20)
blacklistIndicator.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
blacklistIndicator.BorderSizePixel = 0
blacklistIndicator.Parent = playerFrame
end
-- Initial population
updatePlayerList()
-- Search functionality
playerSearchBar.Changed:Connect(function(prop)
if prop == "Text" then
local filter = playerSearchBar.Text
if filter == "Search players..." then filter = "" end
updatePlayerList(filter)
end
end)
-- Hide context menu when clicking elsewhere
gui.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 and
contextMenu.Visible then
contextMenu.Visible = false
end
end)
Players.PlayerRemoving:Connect(function(player)
updatePlayerList(playerSearchBar.Text ~= "Search players..." and
playerSearchBar.Text or "")
end)
-- Settings container
local settingsContainer = Instance.new("Frame")
settingsContainer.Name = "SettingsContainer"
settingsContainer.Size = UDim2.new(1, -20, 1, -20)
settingsContainer.Position = UDim2.new(0, 10, 0, 10)
settingsContainer.BackgroundTransparency = 1
settingsContainer.Parent = settingsFrame
-- Settings layout
local settingsLayout = Instance.new("UIListLayout")
settingsLayout.Padding = UDim.new(0, 10)
settingsLayout.SortOrder = Enum.SortOrder.Name
settingsLayout.Parent = settingsContainer
-- Setting name
local settingName = Instance.new("TextLabel")
settingName.Name = "SettingName"
settingName.Size = UDim2.new(1, -60, 1, 0)
settingName.Position = UDim2.new(0, 10, 0, 0)
settingName.BackgroundTransparency = 1
settingName.Text = setting.name
settingName.TextColor3 = Color3.fromRGB(255, 255, 255)
settingName.TextSize = 14
settingName.Font = Enum.Font.SourceSans
settingName.TextXAlignment = Enum.TextXAlignment.Left
settingName.Parent = settingFrame
-- Toggle button
local toggleButton = Instance.new("TextButton")
toggleButton.Name = "ToggleButton"
toggleButton.Size = UDim2.new(0, 40, 0, 20)
toggleButton.Position = UDim2.new(1, -50, 0, 5)
toggleButton.BackgroundColor3 = Settings[setting.value] and
Color3.fromRGB(0, 200, 0) or Color3.fromRGB(200, 0, 0)
toggleButton.BorderSizePixel = 0
toggleButton.Text = Settings[setting.value] and "ON" or "OFF"
toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleButton.TextSize = 12
toggleButton.Font = Enum.Font.SourceSansBold
toggleButton.Parent = settingFrame
-- Info container
local infoContainer = Instance.new("Frame")
infoContainer.Name = "InfoContainer"
infoContainer.Size = UDim2.new(1, -20, 1, -20)
infoContainer.Position = UDim2.new(0, 10, 0, 10)
infoContainer.BackgroundTransparency = 1
infoContainer.Parent = infoFrame
-- Info layout
local infoLayout = Instance.new("UIListLayout")
infoLayout.Padding = UDim.new(0, 10)
infoLayout.SortOrder = Enum.SortOrder.LayoutOrder
infoLayout.Parent = infoContainer
-- Version info
local versionInfo = Instance.new("TextLabel")
versionInfo.Name = "VersionInfo"
versionInfo.Size = UDim2.new(1, 0, 0, 30)
versionInfo.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
versionInfo.BorderSizePixel = 0
versionInfo.Text = "Prison Life Admin v" .. currentVersion
versionInfo.TextColor3 = Color3.fromRGB(255, 255, 255)
versionInfo.TextSize = 14
versionInfo.Font = Enum.Font.SourceSansBold
versionInfo.LayoutOrder = 1
versionInfo.Parent = infoContainer
-- Execution info
local executionInfo = Instance.new("TextLabel")
executionInfo.Name = "ExecutionInfo"
executionInfo.Size = UDim2.new(1, 0, 0, 30)
executionInfo.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
executionInfo.BorderSizePixel = 0
executionInfo.Text = "Executed on: " .. ExecutionDate
executionInfo.TextColor3 = Color3.fromRGB(255, 255, 255)
executionInfo.TextSize = 14
executionInfo.Font = Enum.Font.SourceSans
executionInfo.LayoutOrder = 2
executionInfo.Parent = infoContainer
-- Command count
local commandCountLabel = Instance.new("TextLabel")
commandCountLabel.Name = "CommandCountLabel"
commandCountLabel.Size = UDim2.new(1, 0, 0, 30)
commandCountLabel.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
commandCountLabel.BorderSizePixel = 0
commandCountLabel.Text = "Total Commands: " .. commandCount
commandCountLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
commandCountLabel.TextSize = 14
commandCountLabel.Font = Enum.Font.SourceSans
commandCountLabel.LayoutOrder = 3
commandCountLabel.Parent = infoContainer
-- Stats section
local statsTitle = Instance.new("TextLabel")
statsTitle.Name = "StatsTitle"
statsTitle.Size = UDim2.new(1, 0, 0, 30)
statsTitle.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
statsTitle.BorderSizePixel = 0
statsTitle.Text = "Statistics"
statsTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
statsTitle.TextSize = 16
statsTitle.Font = Enum.Font.SourceSansBold
statsTitle.LayoutOrder = 4
statsTitle.Parent = infoContainer
-- Credits section
local creditsTitle = Instance.new("TextLabel")
creditsTitle.Name = "CreditsTitle"
creditsTitle.Size = UDim2.new(1, 0, 0, 30)
creditsTitle.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
creditsTitle.BorderSizePixel = 0
creditsTitle.Text = "Credits"
creditsTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
creditsTitle.TextSize = 16
creditsTitle.Font = Enum.Font.SourceSansBold
creditsTitle.LayoutOrder = 9
creditsTitle.Parent = infoContainer
mainFrame.MouseLeave:Connect(function()
mainFrame.BackgroundTransparency = 0.3
titleBar.BackgroundTransparency = 0.3
tabContainer.BackgroundTransparency = 0.3
end)
-- Show notification
Notif("GUI Loaded", "Press Right Control to toggle the GUI", 5)
return gui
end
-- =======================================
-- INITIALIZATION & STARTUP
-- =======================================
-- Run startup
local function startup()
-- Set up anti-kick
if Settings.EnableAntiKick then
setupAntiKick()
end
if Settings.VerboseMode then
print("----------")
print("Prison Life Admin v" .. currentVersion .. " loaded")
print("Execution time: " .. tostring(tick() - Execution_Runtime) .. "
seconds")
print("Total commands: " .. tostring(#COMMANDS))
print("----------")
end
end
return API