-- [[ Prison Tactical v3.1: Mobile Edition ]] --
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local CoreGui = game:GetService("CoreGui")
local Workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
local camera = Workspace.CurrentCamera
-- Видалення старого інтерфейсу
if CoreGui:FindFirstChild("PrisonTactical_Mobile") then
CoreGui.PrisonTactical_Mobile:Destroy()
end
local screenGui = Instance.new("ScreenGui", CoreGui)
screenGui.Name = "PrisonTactical_Mobile"
-- --- ГОЛОВНЕ ВІКНО (Зменшене для телефонів) ---
local main = Instance.new("Frame", screenGui)
main.Size = UDim2.new(0, 180, 0, 310)
main.Position = UDim2.new(0.5, -90, 0.4, -155)
main.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
main.Active = true
main.Draggable = true
main.Visible = true
Instance.new("UICorner", main)
-- --- КНОПКА СХОВАТИ/ПОКАЗАТИ (MINIMIZE) ---
local minBtn = Instance.new("TextButton", screenGui)
minBtn.Size = UDim2.new(0, 42, 0, 42)
minBtn.Position = UDim2.new(0.02, 0, 0.45, 0)
minBtn.Text = "X"
minBtn.BackgroundColor3 = Color3.fromRGB(150, 0, 0) -- Починає з червоного, бо меню відкрите
minBtn.TextColor3 = Color3.new(1, 1, 1)
minBtn.Font = Enum.Font.SourceSansBold
minBtn.TextSize = 18
minBtn.Active = true
minBtn.Draggable = true
local minCorner = Instance.new("UICorner", minBtn)
minCorner.CornerRadius = UDim.new(0, 8)
minBtn.MouseButton1Click:Connect(function()
main.Visible = not main.Visible
minBtn.BackgroundColor3 = main.Visible and Color3.fromRGB(150, 0, 0) or Color3.fromRGB(0, 150, 0)
minBtn.Text = main.Visible and "X" or "PT"
end)
-- Стан функцій
local flags = {
murderOnArrest = false,
shockerEscape = false,
targetPlayer = nil,
espEnabled = false
}
local function createToggle(name, text, pos)
local btn = Instance.new("TextButton", main)
btn.Size = UDim2.new(1, -14, 0, 32)
btn.Position = pos
btn.Text = text
btn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
btn.TextColor3 = Color3.new(1, 1, 1)
btn.Font = Enum.Font.SourceSansBold
btn.TextSize = 13
Instance.new("UICorner", btn)
btn.MouseButton1Click:Connect(function()
flags[name] = not flags[name]
btn.BackgroundColor3 = flags[name] and Color3.fromRGB(0, 150, 0) or Color3.fromRGB(50, 50, 50)
end)
end
-- Кнопки керування
createToggle("murderOnArrest", "Murder on Arrest", UDim2.new(0, 7, 0, 10))
createToggle("shockerEscape", "Shocker Escape", UDim2.new(0, 7, 0, 47))
createToggle("espEnabled", "Cops ESP", UDim2.new(0, 7, 0, 84))
-- Стоп-кнопки
local stopTP = Instance.new("TextButton", main)
stopTP.Size = UDim2.new(0.5, -9, 0, 28)
stopTP.Position = UDim2.new(0, 7, 0, 121)
stopTP.Text = "Stop TP"
stopTP.BackgroundColor3 = Color3.fromRGB(150, 50, 50)
stopTP.TextColor3 = Color3.new(1, 1, 1)
stopTP.Font = Enum.Font.SourceSansBold
stopTP.TextSize = 12
Instance.new("UICorner", stopTP)
stopTP.MouseButton1Click:Connect(function() flags.targetPlayer = nil end)
local stopView = Instance.new("TextButton", main)
stopView.Size = UDim2.new(0.5, -9, 0, 28)
stopView.Position = UDim2.new(0.5, 2, 0, 121)
stopView.Text = "Stop View"
stopView.BackgroundColor3 = Color3.fromRGB(80, 80, 150)
stopView.TextColor3 = Color3.new(1, 1, 1)
stopView.Font = Enum.Font.SourceSansBold
stopView.TextSize = 12
Instance.new("UICorner", stopView)
stopView.MouseButton1Click:Connect(function()
if player.Character and player.Character:FindFirstChild("Humanoid") then
camera.CameraSubject = player.Character.Humanoid
end
end)
-- Списочна зона
local listFrame = Instance.new("ScrollingFrame", main)
listFrame.Size = UDim2.new(1, -14, 0, 145)
listFrame.Position = UDim2.new(0, 7, 0, 155)
listFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
listFrame.CanvasSize = UDim2.new(0, 0, 6, 0)
listFrame.BorderSizePixel = 0
Instance.new("UICorner", listFrame)
-- --- ЛОГІКА ESP (Highlight + Name) ---
local function updateESP()
for _, p in pairs(Players:GetPlayers()) do
if p ~= player then
local char = p.Character
if char and p.TeamColor.Name == "Bright blue" then
if flags.espEnabled then
if not char:FindFirstChild("CopHighlight") then
-- Світіння
local hl = Instance.new("Highlight", char)
hl.Name = "CopHighlight"
hl.FillColor = Color3.fromRGB(0, 100, 255)
hl.FillTransparency = 0.5
hl.OutlineColor = Color3.new(1, 1, 1)
-- Нікнейм над головою
if char:FindFirstChild("Head") then
local bill = Instance.new("BillboardGui", char.Head)
bill.Name = "CopName"
bill.AlwaysOnTop = true
bill.Size = UDim2.new(0, 100, 0, 20)
bill.ExtentsOffset = Vector3.new(0, 3, 0)
local label = Instance.new("TextLabel", bill)
label.Text = p.Name
label.Size = UDim2.new(1, 0, 1, 0)
label.BackgroundTransparency = 1
label.TextColor3 = Color3.fromRGB(0, 180, 255)
label.TextStrokeTransparency = 0
label.Font = Enum.Font.SourceSansBold
label.TextSize = 14
end
end
else
if char:FindFirstChild("CopHighlight") then char.CopHighlight:Destroy() end
if char:FindFirstChild("Head") and char.Head:FindFirstChild("CopName") then char.Head.CopName:Destroy() end
end
end
end
end
end
-- --- ГОЛОВНИЙ ЦИКЛ ОБРОБКИ (Heartbeat) ---
local originalPos = nil
local isUnderground = false
RunService.Heartbeat:Connect(function()
updateESP()
local char = player.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local root = char.HumanoidRootPart
local hum = char.Humanoid
local nearestCopHasShocker = false
for _, cop in pairs(Players:GetPlayers()) do
if cop ~= player and cop.TeamColor.Name == "Bright blue" and cop.Character and cop.Character:FindFirstChild("HumanoidRootPart") then
local copChar = cop.Character
local dist = (root.Position - copChar.HumanoidRootPart.Position).Magnitude
-- Murder on Arrest
if flags.murderOnArrest and dist < 12 then
if copChar:FindFirstChild("Handcuffs") or (copChar:FindFirstChildOfClass("Tool") and copChar:FindFirstChildOfClass("Tool").Name == "Handcuffs") then
hum.Health = 0
return
end
end
-- Перевірка на шокер
if flags.shockerEscape and dist 0 then
root.CFrame = targetRoot.CFrame * CFrame.new(0, 0, 1.8) -- Рівно за спиною
else
flags.targetPlayer = nil
end
end
end)
-- --- ОНОВЛЕННЯ СПИСКУ КОПІВ (Мобільний стиль) ---
local function updateCopList()
for _, v in pairs(listFrame:GetChildren()) do if v:IsA("Frame") then v:Destroy() end end
local count = 0
for _, p in pairs(Players:GetPlayers()) do
if p.TeamColor.Name == "Bright blue" then
local container = Instance.new("Frame", listFrame)
container.Size = UDim2.new(1, -5, 0, 30)
container.Position = UDim2.new(0, 0, 0, count * 34)
container.BackgroundTransparency = 1
-- Кнопка вбити
local killBtn = Instance.new("TextButton", container)
killBtn.Size = UDim2.new(0.68, -4, 1, 0)
killBtn.Text = p.Name
killBtn.BackgroundColor3 = Color3.fromRGB(55, 55, 55)
killBtn.TextColor3 = Color3.new(1, 1, 1)
killBtn.Font = Enum.Font.SourceSansBold
killBtn.TextSize = 12
Instance.new("UICorner", killBtn)
killBtn.MouseButton1Click:Connect(function() flags.targetPlayer = p end)
-- Кнопка дивитися (View)
local viewBtn = Instance.new("TextButton", container)
viewBtn.Size = UDim2.new(0.32, 0, 1, 0)
viewBtn.Position = UDim2.new(0.68, 0, 0, 0)
viewBtn.Text = "View"
viewBtn.BackgroundColor3 = Color3.fromRGB(45, 90, 45)
viewBtn.TextColor3 = Color3.new(1, 1, 1)
viewBtn.Font = Enum.Font.SourceSansBold
viewBtn.TextSize = 12
Instance.new("UICorner", viewBtn)
viewBtn.MouseButton1Click:Connect(function()
if p.Character and p.Character:FindFirstChild("Humanoid") then
camera.CameraSubject = p.Character.Humanoid
end
end)
count = count + 1
end
end
end
-- Постійне автооновлення списку копів
task.spawn(function()
while task.wait(3) do
updateCopList()
end
end)
print("Prison Tactical Mobile V3.1 завантажено успішно!")