示例#1
0
        public static LoginCommands GetGlobalLoginCommands()
        {
            var persister = new LoginCommandPersister();
            var cmds      = persister.ReadQueue(global: true);

            return(cmds);
        }
示例#2
0
        public static LoginCommands GetLoginCommands(string accountName, string serverName, string characterName)
        {
            var persister = new LoginCommandPersister(accountName: accountName, serverName: serverName, characterName: characterName);
            var cmds      = persister.ReadQueue(global: false);

            return(cmds);
        }
示例#3
0
        public static void SetLoginCommands(string accountName, string serverName, string characterName, string text, int waitTimeMs)
        {
            var persister = new LoginCommandPersister(accountName: accountName, serverName: serverName, characterName: characterName);
            var cmds      = ParseCommandsFromText(text);

            persister.WriteQueue(cmds, global: false);
        }
示例#4
0
        public static void SetGlobalLoginCommands(string text, int waitTimeMs)
        {
            var persister = new LoginCommandPersister();
            var cmds      = ParseCommandsFromText(text);

            persister.WriteQueue(cmds, global: true);
        }
        public void FilterCore_ClientDispatch(object sender, NetworkMessageEventArgs e)
        {
            if (e.Message.Type == 0xF7C8) // Enter Game
            {
                freshLogin = true;
            }

            if (freshLogin && e.Message.Type == 0xF7B1 && Convert.ToInt32(e.Message["action"]) == 0xA1) // Character Materialize (Any time is done portalling in, login or portal)
            {
                freshLogin = false;

                string characterName = GameRepo.Game.Character;
                if (string.IsNullOrEmpty(characterName))
                {
                    // Do not know why GameRepo.Game.Character is not yet populated, but it isn't
                    var launchInfo = LaunchControl.GetLaunchInfo();
                    if (launchInfo.IsValid)
                    {
                        characterName = launchInfo.CharacterName;
                    }
                }

                var persister = new LoginCommandPersister(GameRepo.Game.Account, GameRepo.Game.Server, characterName);

                log.WriteDebug("FilterCore_ClientDispatch: Character: '{0}'", GameRepo.Game.Character);

                _loginCmds = persister.ReadAndCombineQueues();

                if (_loginCmds.Commands.Count > 0)
                {
                    loginCompleteTime = DateTime.Now;

                    sendingLastEnter = false;
                    CoreManager.Current.RenderFrame += new EventHandler <EventArgs>(Current_RenderFrame);
                }
            }
        }
        public void FilterCore_ClientDispatch(object sender, NetworkMessageEventArgs e)
        {
            if (e.Message.Type == 0xF7C8) // Enter Game
            {
                freshLogin = true;
            }

            if (freshLogin && e.Message.Type == 0xF7B1 && Convert.ToInt32(e.Message["action"]) == 0xA1) // Character Materialize (Any time is done portalling in, login or portal)
            {
                freshLogin = false;

                var persister = new LoginCommandPersister(GameRepo.Game.Account, GameRepo.Game.Server, GameRepo.Game.Character);

                _loginCmds = persister.ReadAndCombineQueues();

                if (_loginCmds.Commands.Count > 0)
                {
                    loginCompleteTime = DateTime.Now;

                    sendingLastEnter = false;
                    CoreManager.Current.RenderFrame += new EventHandler <EventArgs>(Current_RenderFrame);
                }
            }
        }
        public void FilterCore_CommandLineText(object sender, ChatParserInterceptEventArgs e)
        {
            bool   writeChanges = true;
            bool   global       = false;
            string cmdtext      = e.Text;

            if (cmdtext.Contains("/mfglobal"))
            {
                cmdtext = cmdtext.Replace(" /mfglobal", " /mf");
                cmdtext = cmdtext.Replace("/mfglobal ", "/mf ");
                cmdtext = cmdtext.Replace("/mfglobal", "/mf");
                global  = true;
            }
            if (cmdtext.StartsWith("/mf log "))
            {
                string logmsg = TextRemainder(cmdtext, "/mf log ");
                log.WriteInfo(logmsg);

                e.Eat = true;
            }
            else if (cmdtext.StartsWith("/mf alcmq add ") || cmdtext.StartsWith("/mf olcmq add "))
            {
                string cmd = TextRemainder(cmdtext, "/mf alcmq add ");
                _loginCmds.Commands.Enqueue(cmd);
                Debug.WriteToChat("After Login Complete Message Queue added: " + cmd);

                e.Eat = true;
            }
            else if (cmdtext == "/mf alcmq clear" || cmdtext == "/mf olcmq clear")
            {
                _loginCmds.Commands.Clear();
                Debug.WriteToChat("After Login Complete Message Queue cleared");

                e.Eat = true;
            }
            else if (cmdtext.StartsWith("/mf alcmq wait set "))
            {
                string valstr = TextRemainder(cmdtext, "/mf alcmq wait set ");
                _loginCmds.WaitMillisencds = int.Parse(valstr);
                Debug.WriteToChat("After Login Complete Message Queue Wait time set: " + valstr + "ms");

                e.Eat = true;
            }
            else if (cmdtext.StartsWith("/mf olcwait set ")) // Backwards Compatability
            {
                string valstr = TextRemainder(cmdtext, "/mf olcwait set ");
                _loginCmds.WaitMillisencds = int.Parse(valstr);
                Debug.WriteToChat("After Login Complete Message Queue Wait time set: " + valstr + "ms");

                e.Eat = true;
            }
            else if (cmdtext == "/mf alcmq wait clear" || cmdtext == "/mf olcwait clear")
            {
                _loginCmds.ClearWait();
                Debug.WriteToChat(string.Format("After Login Complete Wait time reset to default {0} ms", LoginCommands.DefaultMillisecondsToWaitAfterLoginComplete));

                e.Eat = true;
            }
            else if (cmdtext == "/mf alcmq show" || cmdtext == "/mf olcmq show" || cmdtext == "/mf alcmq list" || cmdtext == "/mf olcmq list")
            {
                var rdr   = new LoginCommandPersister(GameRepo.Game.Account, GameRepo.Game.Server, GameRepo.Game.Character);
                var queue = rdr.ReadQueue(global);
                Debug.WriteToChat(string.Format("LoginCmds: {0}", queue.Commands.Count));
                foreach (string cmd in queue.Commands)
                {
                    Debug.WriteToChat(string.Format("cmd: {0}", cmd));
                }
                Debug.WriteToChat(string.Format("Wait: {0}", queue.WaitMillisencds));
                e.Eat        = true;
                writeChanges = false;
            }
            if (e.Eat && writeChanges)
            {
                var persister = new LoginCommandPersister(GameRepo.Game.Account, GameRepo.Game.Server, GameRepo.Game.Character);
                persister.WriteQueue(_loginCmds, global);
            }
        }