local ScreenMat = CreateMaterial("ScreenMat", "Fillrate", {})
local function screengrab(open_menu)
file.CreateDir("screengrabs")
hook.Add("PostRender", "Screengrab", function()
local frame_count = FrameNumber()
render.UpdateScreenEffectTexture(1)
ScreenMat:SetTexture("$basetexture", render.GetScreenEffectTexture(1):GetName())
cam.Start2D()
surface.SetMaterial(ScreenMat)
surface.SetDrawColor(255, 255, 255, 255)
surface.DrawTexturedRect(0, 0, ScrW(), ScrH())
surface.SetDrawColor(0, 255, 0, 255)
surface.DrawRect(0, 0, 10, 10)
file.Write(string.format("screengrabs/%i.jpg", os.time()), render.Capture{
format = "jpg",
quality = 100,
x = 0, y = 0,
w = ScrW(), h = ScrH(),
})
cam.End2D()
if frame_count ~= FrameNumber() then
while true do end
end
if open_menu then
gui.ActivateGameUI()
end
hook.Remove("PostRender", "Screengrab")
end)
end
concommand.Add("screengrab", function()
local escape_menu = gui.IsGameUIVisible()
if escape_menu then
gui.HideGameUI()
end
screengrab(escape_menu)
end)
Comments