Пример #1
0
 private static void SetMessage(SplashScreen screen, string msg)
 {
     //screen.message.Text = msg;
 }
Пример #2
0
 private static void ThreadMain()
 {
     try
     {
         using (m_Screen = new SplashScreen())
         {
             Application.Run(m_Screen);
         }
         m_Screen = null;
     }
     catch
     {
     }
 }
Пример #3
0
        public static void Load()
        {
            Culture = new CultureInfo("en-US", false);
            Culture.NumberFormat.NumberDecimalSeparator = ".";
            Culture.NumberFormat.NumberGroupSeparator   = ",";

            /* Load localization files */
            string defLang = Config.GetAppSetting <string>("DefaultLanguage");

            if (defLang == null)
            {
                defLang = "ENU";
            }

            if (Client.IsOSI)
            {
                Ultima.Files.ReLoadDirectory();
                Ultima.Files.LoadMulPath();
            }

            if (!Language.Load(defLang))
            {
                MessageBox.Show(
                    $"WARNING: Razor was unable to load the file Language/Razor_lang.{defLang}\n.", "Language Load Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            m_Running = true;

            /* Load settings from configuration file */
            Ultima.Files.SetMulPath(Config.GetAppSetting <string>("UODataDir"));
            Ultima.Multis.PostHSFormat      = UsePostHSChanges;
            Client.Instance.ClientEncrypted = Config.GetAppSetting <int>("ClientEncrypted") == 1;
            Client.Instance.ServerEncrypted = Config.GetAppSetting <int>("ServerEncrypted") == 1;

            Language.LoadCliLoc();

            /* Initialize engine */
            SplashScreen.Message = LocString.Initializing;
            Initialize(typeof(Engine).Assembly);

            /* Load Profile */
            SplashScreen.Message = LocString.LoadingLastProfile;
            Config.LoadCharList();
            if (!Config.LoadLastProfile())
            {
                MessageBox.Show(
                    "The selected profile could not be loaded, using default instead.", "Profile Load Error",
                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            /* Start client */
            SplashScreen.Message = LocString.LoadingClient;
            string clientPath = Ultima.Files.GetFilePath("client.exe");

            if (clientPath == null || !File.Exists(clientPath))
            {
                MessageBox.Show(SplashScreen.Instance,
                                $"Unable to find the client specified.\n\"{(clientPath != null ? clientPath : "-null-")}\"", "Could Not Find Client",
                                MessageBoxButtons.OK, MessageBoxIcon.Stop);
                SplashScreen.End();
                return;
            }

            var result = Client.Instance.LaunchClient(clientPath);

            if (result != Client.Loader_Error.SUCCESS)
            {
                MessageBox.Show(SplashScreen.Instance,
                                String.Format("Unable to launch the client specified. (Error: {1})\n \"{0}\"",
                                              clientPath != null ? clientPath : "-null-", result),
                                "Could Not Start Client", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                SplashScreen.End();
                return;
            }

            string addr = Config.GetAppSetting <string>("LastServer");
            int    port = Config.GetAppSetting <int>("LastPort");

            IPAddress ip = Resolve(addr);

            if (ip == IPAddress.None || port == 0)
            {
                MessageBox.Show(SplashScreen.Instance, Language.GetString(LocString.BadServerAddr),
                                "Bad Server Address", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                SplashScreen.End();
                return;
            }

            Client.Instance.SetConnectionInfo(ip, port);

            SplashScreen.Message = LocString.WaitingForClient;
        }
Пример #4
0
        public static unsafe void Install(PluginHeader *plugin)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            AppDomain.CurrentDomain.AssemblyResolve += (sender, e) =>
            {
                string[] fields  = e.Name.Split(',');
                string   name    = fields[0];
                string   culture = fields[2];

                if (name.EndsWith(".resources") && !culture.EndsWith("neutral"))
                {
                    return(null);
                }

                AssemblyName askedassembly = new AssemblyName(e.Name);

                bool isdll = File.Exists(Path.Combine(RootPath, askedassembly.Name + ".dll"));

                return(Assembly.LoadFile(Path.Combine(RootPath, askedassembly.Name + (isdll ? ".dll" : ".exe"))));
            };

            SplashScreen.Start();
            m_ActiveWnd = SplashScreen.Instance;

            Client.Init(false);

            if (!(Client.Instance as ClassicUOClient).Install(plugin))
            {
                Process.GetCurrentProcess().Kill();
                return;
            }

            // load ultimasdk before or the Language.Load will throw the cliloc not found warning every time you run cuo
            string clientPath =
                ((OnGetUOFilePath)Marshal.GetDelegateForFunctionPointer(plugin->GetUOFilePath, typeof(OnGetUOFilePath))
                )();

            // just replicating the static .ctor
            Ultima.Files.ReLoadDirectory();
            Ultima.Files.LoadMulPath();

            Ultima.Files.SetMulPath(clientPath);
            Ultima.Multis.PostHSFormat      = UsePostHSChanges;
            Client.Instance.ClientEncrypted = false;
            Client.Instance.ServerEncrypted = false;


            /* Load localization files */
            if (!Language.Load("ENU"))
            {
                SplashScreen.End();
                MessageBox.Show(
                    "WARNING: Razor was unable to load the file Language/Razor_lang.ENU\n.",
                    "Language Load Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            m_Running = true;

            Language.LoadCliLoc();

            /* Initialize engine */
            SplashScreen.Message = LocString.Initializing;
            Initialize(typeof(Engine).Assembly);

            /* Load Profile */
            SplashScreen.Message = LocString.LoadingLastProfile;
            Config.LoadCharList();
            Overrides.Load();
            if (!Config.LoadLastProfile())
            {
                MessageBox.Show(
                    "The selected profile could not be loaded, using default instead.", "Profile Load Error",
                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            SplashScreen.Message = LocString.WaitingForClient;

            SplashScreen.End();

            Thread t = new Thread(() => { RunUI(); });

            t.SetApartmentState(ApartmentState.STA);
            t.IsBackground = true;
            t.Start();
        }
Пример #5
0
        internal static void Start(RazorEnhanced.Shard selected)
        {
            ClientCommunication.ClientEncrypted = selected.PatchEnc;
            ClientCommunication.ServerEncrypted = selected.OSIEnc;
            string clientPath = selected.ClientPath;
            string dataDir    = selected.ClientFolder;
            string addr       = selected.Host;
            int    port       = selected.Port;

            Ultima.Files.Directory = selected.ClientFolder;

            if (!Language.Load("ENU"))
            {
                SplashScreen.End();
                MessageBox.Show("Unable to load required file Language/Razor_lang.enu", "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                RazorEnhanced.Settings.General.WriteBool("NotShowLauncher", false);
                return;
            }

            if (dataDir != null && Directory.Exists(dataDir))
            {
                Ultima.Files.SetMulPath(dataDir);
            }
            else
            {
                MessageBox.Show("Unable to find the Data Folder " + dataDir, "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                RazorEnhanced.Settings.General.WriteBool("NotShowLauncher", false);
                return;
            }

            Language.LoadCliLoc();
            Initialize(typeof(Assistant.Engine).Assembly);

            ClientCommunication.SetConnectionInfo(IPAddress.None, -1);
            ClientCommunication.Loader_Error result = ClientCommunication.Loader_Error.UNKNOWN_ERROR;

            if (clientPath != null && File.Exists(clientPath))
            {
                result = ClientCommunication.LaunchClient(clientPath);
            }

            if (result != ClientCommunication.Loader_Error.SUCCESS)
            {
                if (clientPath == null && File.Exists(clientPath))
                {
                    MessageBox.Show(SplashScreen.Instance, "Unable to find the client " + clientPath, "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    MessageBox.Show(SplashScreen.Instance, "Unable to launch the client " + clientPath, "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                SplashScreen.End();
                RazorEnhanced.Settings.General.WriteBool("NotShowLauncher", false);
                return;
            }

            // if these are null then the registry entry does not exist (old razor version)
            m_ip = Resolve(addr);
            if (m_ip == IPAddress.None || port == 0)
            {
                MessageBox.Show(Language.GetString(LocString.BadServerAddr), "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                SplashScreen.End();
                RazorEnhanced.Settings.General.WriteBool("NotShowLauncher", false);
                return;
            }

            ClientBuild = FileVersionInfo.GetVersionInfo(clientPath).FileBuildPart;
            ClientMajor = FileVersionInfo.GetVersionInfo(clientPath).FileMajorPart;

            SplashScreen.Start();
            m_ActiveWnd = SplashScreen.Instance;

            ClientCommunication.SetConnectionInfo(m_ip, port);

            Ultima.Multis.PostHSFormat = UsePostHSChanges;

            MainWnd = new MainForm();
            Application.Run(MainWnd);

            m_Running = false;

            RazorEnhanced.Settings.General.SaveExitData();

            // Chiuto toolbar
            if (RazorEnhanced.ToolBar.ToolBarForm != null)
            {
                RazorEnhanced.ToolBar.ToolBarForm.Close();
            }

            // Chiuto Spellgrid
            if (RazorEnhanced.SpellGrid.SpellGridForm != null)
            {
                RazorEnhanced.SpellGrid.SpellGridForm.Close();
            }

            // Stoppo tick timer agent
            if (RazorEnhanced.Scripts.Timer != null)
            {
                RazorEnhanced.Scripts.Timer.Close();
            }

            // Stop forzato di tutti i thread agent
            RazorEnhanced.AutoLoot.AutoMode    = false;
            RazorEnhanced.Scavenger.AutoMode   = false;
            RazorEnhanced.BandageHeal.AutoMode = false;

            if (Assistant.Engine.MainWindow.OrganizerStop.Enabled == true)
            {
                Assistant.Engine.MainWindow.OrganizerStop.PerformClick();
            }

            if (Assistant.Engine.MainWindow.DressStopButton.Enabled == true)
            {
                Assistant.Engine.MainWindow.DressStopButton.PerformClick();
            }

            if (Assistant.Engine.MainWindow.RestockStop.Enabled == true)
            {
                Assistant.Engine.MainWindow.RestockStop.PerformClick();
            }

            RazorEnhanced.UI.EnhancedScriptEditor.End();

            ClientCommunication.Close();
        }
Пример #6
0
        public static void Main(string[] Args)
        {
            m_Running = true;
            Thread.CurrentThread.Name = "Razor Main Thread";

#if !DEBUG
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            Directory.SetCurrentDirectory(Config.GetInstallDirectory());
#endif

            CheckUpdaterFiles();

            if (ClientCommunication.InitializeLibrary(Engine.Version) == 0)
            {
                throw new InvalidOperationException("InitializeLibrary: This Razor installation is corrupted.");
            }

            if (!File.Exists(Path.Combine(Config.GetInstallDirectory(), "Updater.exe")))
            {
                throw new InvalidOperationException("UpdaterMissing: This Razor installation is corrupted.");
            }

            try { Engine.ShardList = Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "ShardList"); }
            catch { }

            DateTime lastCheck = DateTime.MinValue;
            try { lastCheck = DateTime.FromFileTime(Convert.ToInt64(Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "UpdateCheck"), 16)); } catch { }
            if (lastCheck + TimeSpan.FromHours(3.0) < DateTime.Now)
            {
                SplashScreen.Start();
                m_ActiveWnd = SplashScreen.Instance;

                CheckForUpdates();
                Config.SetRegString(Microsoft.Win32.Registry.CurrentUser, "UpdateCheck", String.Format("{0:X16}", DateTime.Now.ToFileTime()));
            }

            bool         patch       = Utility.ToInt32(Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "PatchEncy"), 1) != 0;
            bool         showWelcome = Utility.ToInt32(Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "ShowWelcome"), 1) != 0;
            ClientLaunch launch      = ClientLaunch.TwoD;
            int          attPID      = -1;
            string       dataDir;

            ClientCommunication.ClientEncrypted = false;

            // check if the new ServerEncryption option is in the registry yet
            dataDir = Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "ServerEnc");
            if (dataDir == null)
            {
                // if not, add it (copied from UseOSIEnc)
                dataDir = Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "UseOSIEnc");
                if (dataDir == "1")
                {
                    ClientCommunication.ServerEncrypted = true;
                    Config.SetRegString(Microsoft.Win32.Registry.CurrentUser, "ServerEnc", "1");
                }
                else
                {
                    Config.SetRegString(Microsoft.Win32.Registry.CurrentUser, "ServerEnc", "0");
                    ClientCommunication.ServerEncrypted = false;
                }

                Config.SetRegString(Microsoft.Win32.Registry.CurrentUser, "PatchEncy", "1");                   // reset the patch encryption option to TRUE
                patch = true;

                Config.DeleteRegValue(Microsoft.Win32.Registry.CurrentUser, "UseOSIEnc");                   // delete the old value
            }
            else
            {
                ClientCommunication.ServerEncrypted = Utility.ToInt32(dataDir, 0) != 0;
            }
            dataDir = null;

            bool advCmdLine = false;

            for (int i = 0; i < Args.Length; i++)
            {
                string arg = Args[i].ToLower();
                if (arg == "--nopatch")
                {
                    patch = false;
                }
                else if (arg == "--clientenc")
                {
                    ClientCommunication.ClientEncrypted = true;
                    advCmdLine = true;
                    patch      = false;
                }
                else if (arg == "--serverenc")
                {
                    ClientCommunication.ServerEncrypted = true;
                    advCmdLine = true;
                }
                else if (arg == "--welcome")
                {
                    showWelcome = true;
                }
                else if (arg == "--nowelcome")
                {
                    showWelcome = false;
                }
                else if (arg == "--pid" && i + 1 < Args.Length)
                {
                    i++;
                    patch  = false;
                    attPID = Utility.ToInt32(Args[i], 0);
                }
                else if (arg.Substring(0, 5) == "--pid" && arg.Length > 5)                     //support for uog 1.8 (damn you fixit)
                {
                    patch  = false;
                    attPID = Utility.ToInt32(arg.Substring(5), 0);
                }
                else if (arg == "--uodata" && i + 1 < Args.Length)
                {
                    i++;
                    dataDir = Args[i];
                }
                else if (arg == "--server" && i + 1 < Args.Length)
                {
                    i++;
                    string[] split = Args[i].Split(',', ':', ';', ' ');
                    if (split.Length >= 2)
                    {
                        Config.SetRegString(Microsoft.Win32.Registry.CurrentUser, "LastServer", split[0]);
                        Config.SetRegString(Microsoft.Win32.Registry.CurrentUser, "LastPort", split[1]);

                        showWelcome = false;
                    }
                }
                else if (arg == "--debug")
                {
                    ScavengerAgent.Debug  = true;
                    DragDropManager.Debug = true;
                }
            }

            if (attPID > 0 && !advCmdLine)
            {
                ClientCommunication.ServerEncrypted = false;
                ClientCommunication.ClientEncrypted = false;
            }

            if (!Language.Load("ENU"))
            {
                SplashScreen.End();
                MessageBox.Show("Fatal Error: Unable to load required file Language/Razor_lang.enu\nRazor cannot continue.", "No Language Pack", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }

            string defLang = Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "DefaultLanguage");
            if (defLang != null && !Language.Load(defLang))
            {
                MessageBox.Show(String.Format("WARNING: Razor was unable to load the file Language/Razor_lang.{0}\nENU will be used instead.", defLang), "Language Load Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            string clientPath = "";

            // welcome only needed when not loaded by a launcher (ie uogateway)
            if (attPID == -1)
            {
                if (!showWelcome)
                {
                    int cli = Utility.ToInt32(Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "DefClient"), 0);
                    if (cli < 0 || cli > 1)
                    {
                        launch     = ClientLaunch.Custom;
                        clientPath = Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, String.Format("Client{0}", cli - 1));
                        if (clientPath == null || clientPath == "")
                        {
                            showWelcome = true;
                        }
                    }
                    else
                    {
                        launch = (ClientLaunch)cli;
                    }
                }

                if (showWelcome)
                {
                    SplashScreen.End();

                    WelcomeForm welcome = new WelcomeForm();
                    m_ActiveWnd = welcome;
                    if (welcome.ShowDialog() == DialogResult.Cancel)
                    {
                        return;
                    }
                    patch   = welcome.PatchEncryption;
                    launch  = welcome.Client;
                    dataDir = welcome.DataDirectory;
                    if (launch == ClientLaunch.Custom)
                    {
                        clientPath = welcome.ClientPath;
                    }

                    SplashScreen.Start();
                    m_ActiveWnd = SplashScreen.Instance;
                }
            }

            if (dataDir != null && Directory.Exists(dataDir))
            {
                Ultima.Files.SetMulPath(dataDir);
            }

            Language.LoadCliLoc();

            SplashScreen.Message = LocString.Initializing;

            //m_TimerThread = new Thread( new ThreadStart( Timer.TimerThread.TimerMain ) );
            //m_TimerThread.Name = "Razor Timers";

            Initialize(typeof(Assistant.Engine).Assembly);                 //Assembly.GetExecutingAssembly()

            SplashScreen.Message = LocString.LoadingLastProfile;
            Config.LoadCharList();
            if (!Config.LoadLastProfile())
            {
                MessageBox.Show("The selected profile could not be loaded, using default instead.", "Profile Load Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            if (attPID == -1)
            {
                ClientCommunication.SetConnectionInfo(IPAddress.None, -1);

                ClientCommunication.Loader_Error result = ClientCommunication.Loader_Error.UNKNOWN_ERROR;

                SplashScreen.Message = LocString.LoadingClient;

                if (launch == ClientLaunch.TwoD)
                {
                    clientPath = Ultima.Files.GetFilePath("client.exe");
                }
                else if (launch == ClientLaunch.ThirdDawn)
                {
                    clientPath = Ultima.Files.GetFilePath("uotd.exe");
                }

                if (!advCmdLine)
                {
                    ClientCommunication.ClientEncrypted = patch;
                }

                if (clientPath != null && File.Exists(clientPath))
                {
                    result = ClientCommunication.LaunchClient(clientPath);
                }

                if (result != ClientCommunication.Loader_Error.SUCCESS)
                {
                    if (clientPath == null && File.Exists(clientPath))
                    {
                        MessageBox.Show(SplashScreen.Instance, String.Format("Unable to find the client specified.\n{0}: \"{1}\"", launch.ToString(), clientPath != null ? clientPath : "-null-"), "Could Not Start Client", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    }
                    else
                    {
                        MessageBox.Show(SplashScreen.Instance, String.Format("Unable to launch the client specified. (Error: {2})\n{0}: \"{1}\"", launch.ToString(), clientPath != null ? clientPath : "-null-", result), "Could Not Start Client", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    }
                    SplashScreen.End();
                    return;
                }

                string addr = Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "LastServer");
                int    port = Utility.ToInt32(Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "LastPort"), 0);

                // if these are null then the registry entry does not exist (old razor version)
                IPAddress ip = Resolve(addr);
                if (ip == IPAddress.None || port == 0)
                {
                    MessageBox.Show(SplashScreen.Instance, Language.GetString(LocString.BadServerAddr), "Bad Server Address", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    SplashScreen.End();
                    return;
                }

                ClientCommunication.SetConnectionInfo(ip, port);
            }
            else
            {
                string error  = "Error attaching to the UO client.";
                bool   result = false;
                try
                {
                    result = ClientCommunication.Attach(attPID);
                }
                catch (Exception e)
                {
                    result = false;
                    error  = e.Message;
                }

                if (!result)
                {
                    MessageBox.Show(SplashScreen.Instance, String.Format("{1}\nThe specified PID '{0}' may be invalid.", attPID, error), "Attach Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    SplashScreen.End();
                    return;
                }

                ClientCommunication.SetConnectionInfo(IPAddress.Any, 0);
            }

            Ultima.Multis.PostHSFormat = UsePostHSChanges;

            if (Utility.Random(4) != 0)
            {
                SplashScreen.Message = LocString.WaitingForClient;
            }
            else
            {
                SplashScreen.Message = LocString.RememberDonate;
            }

            m_MainWnd = new MainForm();
            Application.Run(m_MainWnd);

            m_Running = false;

            try { PacketPlayer.Stop(); } catch {}
            try { AVIRec.Stop(); } catch {}

            ClientCommunication.Close();
            Counter.Save();
            Macros.MacroManager.Save();
            Config.Save();
        }
Пример #7
0
 private static void SetMessage(SplashScreen screen, string msg)
 {
     //screen.message.Text = msg;
 }