示例#1
0
        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();
        }
示例#2
0
        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());
        }
示例#3
0
        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);
            }
        }