The script works fine, but it doesnt keep the player in jail if they reset. Heres the script
JailPos = script.Parent.JailPosition.Value
FreemanPosition = Vector3.new(5, 4, 191)
JailedFolder = script.Parent.JailedPlayers
function TeleportPlayer(Plyer,Pos)
if Plyer.Character ~= nil then
local HMRP = Plyer.Character:FindFirstChild("HumanoidRootPart")
if HMRP then
HMRP.CFrame = CFrame.new(Pos)
end
end
end
function PlayerFromName(Nam)
local Search = game.Players:FindFirstChild(Nam)
if Search then return Search else return nil end
end
function GiveJailGui(Plyname)
local Play = PlayerFromName(Plyname)
if Play then
if Play.PlayerGui then
local JG = script.JailedGui:Clone()
JG.Parent = Play.PlayerGui
JG.GUpdater.Disabled = false
end end end
function GiveFreemanGui(Plyname)
local Play = PlayerFromName(Plyname)
if Play then
if Play.PlayerGui then
local FG = script.PlayerFree:Clone()
FG.Parent = Play.PlayerGui
FG.CloseScript.Disabled = false
end end end
function ClearName(PlyName)
local fin = JailedFolder:GetChildren()
for i = 1,#fin do if fin[i].Name == PlyName then
fin[i]:Destroy()
end end
end
function HandleJailTime(PlyName,TimeToServe)
ClearName(PlyName)
local Timer = Instance.new("IntValue")
Timer.Name = PlyName
Timer.Parent = JailedFolder
Timer.Value = TimeToServe
coroutine.wrap(function()
for i = 1,TimeToServe do
Timer.Value = Timer.Value - 1
wait(1)
end
Timer.Value = 0 wait(1) Timer:Destroy()
end)()
end
function JailPlayer(Caller,PlyN)
local JPlayer = PlayerFromName(PlyN)
if JPlayer then
if JPlayer.Backpack then JPlayer.Backpack:ClearAllChildren() end
if not JPlayer.PlayerGui:FindFirstChild("JailedGui") then
HandleJailTime(PlyN,90)
TeleportPlayer(JPlayer,JailPos)
GiveJailGui(PlyN)
end end
end
script.Parent.OnServerEvent:connect(function(Caller,Prisoner,format)
if Caller then if Prisoner ~= nil then if format ~= nil then
if format == "Jail" then
JailPlayer(Caller,Prisoner)
elseif format == "Confirm" then
local CGui = script.JConfirmGui:Clone()
local CopPGUI = Caller:FindFirstChild("PlayerGui")
if CopPGUI then
if not CopPGUI:FindFirstChild("JConfirmGui") then
CGui.Parent = CopPGUI
CGui.TargetPlayer.Value = Prisoner.Name
CGui.ArrestPlayer.Disabled = false
end end
elseif format == "Freeman" then
TeleportPlayer(Caller,FreemanPosition)
ClearName(Caller.Name)
GiveFreemanGui(Caller.Name)
elseif format == "BackToJail" then
TeleportPlayer(Caller,JailPos)
elseif format == "BackToJailNP" then -- where when the player respawns, they should be in jail still, which for some reason does not.
TeleportPlayer(Caller,JailPos)
GiveJailGui(Caller.Name)
elseif format == "ClearJGUIs" then
local ser = Caller:FindFirstChild("PlayerGui") if ser then
local search = ser:GetChildren()
for i = 1,#search do
if search[i].Name == "JConfirmGui" or search[i].Name == "JailedGui" or search[i].Name == "PlayerFree" then
search[i]:Destroy()
end end end
end
end end end
end)

3 comments
Maybe you can attach it as a script so it's easier to read?
use code block pls
Okay