MakeScreenshot(string name), declared in scripts/1_Core/proto/proto.c, does nothing in a normal game session. The call is accepted, but no file is written and nothing is logged. It works only when the game is started with the -autotest command-line parameter.
This blocks script features that need a picture of the game view, such as an in-game camera or a photo attached to an in-game message. Adding -autotest on the player side is not a client-friendly workaround. Without -connect or -join, vanilla DayZGame.OnInitialize() then calls AutoTestLaunch() instead of opening the main menu, and the game quits if -mission is not set. The parameter also adds the AUTOTEST script define to every module and turns on extended RPT logging, like -dologs.
When it works, the result differs from the documentation:
The file is always an uncompressed 24-bit BMP (BI_RGB, bottom-up) at render resolution, whatever extension the name has. At 3840×2160 that is 24,883,254 bytes per shot. The documentation says DDS.
A name without $ is saved as $profile:ScreenShots/DD.MM.YYYY HH.MM.SS.mmm-<name>.bmp. The documentation says $profile:ScreenShotes/DATE TIME-NAME.dds.
A $ path is used as is, and missing folders are not created. The write then fails with Screenshot failed while for write <path> and Screenshot save into file failed, copying into clipboard, and the image replaces whatever the player had on the Windows clipboard.
Only the last request in a frame is kept. Two calls in the same frame give one file.
The function returns nothing and raises no event, so a script has to poll FileExist() to learn when the file is ready.
ImageWidget.LoadImageFile() cannot read BMP, so the shot cannot be shown in the UI without converting it first.