public static void CaptureNow() { string filename; string timestamp; string name = "Unknown"; string path = Config.GetString("CapPath"); string type = Config.GetString("ImageFormat").ToLower(); if (World.Player != null) { name = World.Player.Name; } if (name == null || name.Trim() == "" || name.IndexOfAny(Path.GetInvalidPathChars()) != -1) { name = "Unknown"; } if (Config.GetBool("CapTimeStamp")) { timestamp = String.Format("{0} ({1}) - {2}", name, World.ShardName, Engine.MistedDateTime.ToString(@"M/dd/yy - HH:mm:ss")); } else { timestamp = ""; } name = String.Format("{0}_{1}", name, Engine.MistedDateTime.ToString("M-d_HH.mm")); try { Engine.EnsureDirectory(path); } catch { try { path = Config.GetUserDirectory("ScreenShots"); Config.SetProperty("CapPath", path); } catch { path = ""; } } int count = 0; do { filename = Path.Combine(path, String.Format("{0}{1}.{2}", name, count != 0 ? count.ToString() : "", type)); count--; // cause a - to be put in front of the number }while (File.Exists(filename)); try { IntPtr hBmp = ClientCommunication.CaptureScreen(Config.GetBool("CapFullScreen"), timestamp); using (Image img = Image.FromHbitmap(hBmp)) img.Save(filename, GetFormat(type)); DeleteObject(hBmp); } catch { } Engine.MainWindow.ReloadScreenShotsList(); }
public static void CaptureNow() { string filename; string playerName = "Unknown"; string path = Config.GetString("CapPath"); string type = Config.GetString("ImageFormat").ToLower(); if (World.Player != null) playerName = World.Player.Name; if (playerName == null || playerName.Trim() == "" || playerName.IndexOfAny(Path.GetInvalidPathChars()) != -1) playerName = "Unknown"; string imageTimestampTag = Config.GetBool("CapTimeStamp") ? $"{playerName} ({World.ShardName}) - {Engine.MistedDateTime:M/dd/yy - HH:mm:ss}" : ""; playerName = !string.IsNullOrEmpty(LastMobileDeathName) ? $"{playerName}_{LastMobileDeathName}_{Engine.MistedDateTime:M-d_HH.mm}" : $"{playerName}_{Engine.MistedDateTime:M-d_HH.mm}"; try { Engine.EnsureDirectory(path); } catch { try { path = Config.GetUserDirectory("ScreenShots"); Config.SetProperty("CapPath", path); } catch { path = ""; } } int count = 0; do { filename = Path.Combine(path, $"{playerName}{(count != 0 ? count.ToString() : "")}.{type}"); count--; // cause a - to be put in front of the number } while (File.Exists(filename)); try { IntPtr hBmp = Platform.CaptureScreen(Client.Instance.GetWindowHandle(), Config.GetBool("CapFullScreen"), imageTimestampTag); using (Image img = Image.FromHbitmap(hBmp)) img.Save(filename, GetFormat(type)); DeleteObject(hBmp); } catch { // ignored } LastMobileDeathName = string.Empty; Engine.MainWindow.SafeAction(s => s.ReloadScreenShotsList()); }
public static void Record() { if (m_Recording || Playing || World.Player == null) { return; } btnRec.Text = "Stop Recording (PV)"; btnPlay.Enabled = btnStop.Enabled = false; m_HouseDataWritten.Clear(); string filename; string name = "Unknown"; string path = Config.GetString("RecFolder"); if (World.Player != null) { name = World.Player.Name; } if (name == null || name.Trim() == "" || name.IndexOfAny(Path.GetInvalidPathChars()) != -1) { name = "Unknown"; } name = String.Format("{0}_{1}", name, Engine.MistedDateTime.ToString("M-d_HH.mm")); try { Engine.EnsureDirectory(path); } catch { try { path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "RazorScreenShots"); Config.SetProperty("RecFolder", path); } catch { path = ""; } } int count = 0; do { filename = Path.Combine(path, String.Format("{0}{1}.rpv", name, count != 0 ? count.ToString() : "")); count--; // cause a - to be put in front of the number }while (File.Exists(filename)); m_Recording = true; m_StartTime = m_LastTime = DateTime.UtcNow; try { //m_OutStream = new BinaryWriter( new FileStream( filename, FileMode.Create, FileAccess.ReadWrite, FileShare.None ) ); m_GZOut = new GZBlockOut(filename, 2048); m_GZOut.Raw.Write((byte)PlayerVersion); m_GZOut.Raw.Seek(16, SeekOrigin.Current); // md5 m_GZOut.Raw.Write((long)m_StartTime.ToFileTime()); m_GZOut.Raw.Write((int)(0)); // length m_GZOut.BufferAll = true; m_GZOut.Compressed.Write(World.Player.Name); m_GZOut.Compressed.Write(World.ShardName); byte[] addr; try { addr = ClientCommunication.LastConnection.GetAddressBytes(); } catch { addr = new byte[4] { 0, 0, 0, 0 }; } m_GZOut.Compressed.Write(addr, 0, 4); SaveWorldState(); m_GZOut.BufferAll = false; m_GZOut.Flush(); } catch (Exception e) { MessageBox.Show(Engine.MainWindow, Language.GetString(LocString.RecError), "Rec Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Engine.LogCrash(e); } }