local doJail local jailableArea function ulx.jail( calling_ply, target_plys, seconds, reason, should_unjail) local affected_plys = {} for i=1, #target_plys do local v = target_plys[ i ] if not should_unjail then if ulx.getExclusive( v, calling_ply ) then ULib.tsayError( calling_ply, ulx.getExclusive( v, calling_ply ), true ) elseif not jailableArea( v:GetPos() ) then ULib.tsayError( calling_ply, v:Nick() .. " is not in an area where a jail can be placed!", true ) else doJail( v, seconds) table.insert( affected_plys, v ) end elseif v.jail then v.jail.unjail() v.jail = nil table.insert( affected_plys, v ) end end if not should_unjail then local str = "#A jailed #T" if seconds > 0 then str = str .. " for #i seconds" end if reason and reason ~= "" then str = str .. " (#s)" end ulx.fancyLogAdmin( calling_ply, str, target_ply, seconds ~= 0 or reason, reason ) end end local jail = ulx.command( CATEGORY_NAME, "ulx jail", ulx.jail, "!jail" ) jail:addParam{ type=ULib.cmds.PlayersArg } jail:addParam{ type=ULib.cmds.NumArg, min=0, default=0, hint="seconds, 0 is forever", ULib.cmds.round, ULib.cmds.optional } jail:addParam{ type=ULib.cmds.BoolArg, invisible=true } jail:addParam{ type=ULib.cmds.StringArg, hint="reason", ULib.cmds.optional, ULib.cmds.takeRestOfLine, completes=ulx.common_kick_reasons } jail:defaultAccess( ULib.ACCESS_ADMIN ) jail:help( "Jails target(s)." ) jail:setOpposite( "ulx unjail", {_, _, _, true}, "!unjail" )