Example #1
0
 public void GetDataCenter()
 {
     while (true)
     {
         try
         {
             OnCallBack(ConnectType.Message, "正在获取服务器信息..");
             _Datacenter = WebServiceComm.GetDatacenter();
             OnCallBack(ConnectType.GetDataCenterSuccess, _Datacenter.Worlds);
         }
         catch (Exception ex)
         {
             Trace.WriteLine(ex.ToString());
         }
         OnCallBack(ConnectType.Message, "无法连接到服务器 , 3秒后重试 !");
         Thread.Sleep(1000);
         OnCallBack(ConnectType.Message, "无法连接到服务器 , 2秒后重试 !");
         Thread.Sleep(1000);
         OnCallBack(ConnectType.Message, "无法连接到服务器 , 1秒后重试 !");
         Thread.Sleep(1000);
     }
 }
Example #2
0
        public void LoginUser()
        {
            UserProfile  _loginUser   = null;
            ServerStatus serverStatus = null;

            try
            {
                try
                {
                    serverStatus = WebServiceComm.GetServerStatus(_worldSelect.StatusServerUrl);
                }
                catch
                {
                    OnCallBack(ConnectType.LoginFaild, "获取服务器状态出错 !");
                    return;
                }
                if (serverStatus.IsFull)
                {
                    OnCallBack(ConnectType.LoginFaild, "服务器已满!");
                    return;
                }
                try
                {
                    _loginUser = WebServiceComm.LoginAccount(_Datacenter.AuthServer, _strUserName, _strPassWord);
                }
                catch
                {
                    OnCallBack(ConnectType.LoginFaild, "登录失败!");
                    return;
                }
                if (_loginUser.SubscriptionUser == null || _loginUser.SubscriptionUser.Count < 1)
                {
                    OnCallBack(ConnectType.LoginFaild, "未找到账户!");
                    return;
                }
                else if (_loginUser.SubscriptionUser.Count > 1)
                {
                    CheckUser cu = new CheckUser(_loginUser.SubscriptionUser);
                    cu.ShowDialog();
                    _loginUser.SelectUser = cu.SelectUser;
                    cu.Dispose();
                }
                if (_loginUser.SelectUser == null)
                {
                    _loginUser.SelectUser = _loginUser.SubscriptionUser[0];
                }

                if (_loginUser.SelectUser.Status.Equals("Banned"))
                {
                    //被禁用用户
                    OnCallBack(ConnectType.LoginFaild, "用户已被停用 !");
                    return;
                }

                int i = 0;
                while (true)
                {
                    i++;
                    serverStatus.GetRandomUrl();
                    //登陆排队
                    var takeNumber = WebServiceComm.TakeANumber(_loginUser.SelectUser.SubscriptionName, _loginUser.Ticket, serverStatus.QueueURL);
                    Thread.Sleep(1000);
                    if (takeNumber.NowServingNumber >= takeNumber.QueueNumber || i > 10)
                    {
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                OnCallBack(ConnectType.Error, ex);
                //登录失败,服务器无法连接!
                return;
            }
            UserList userLists = new UserList();

            userLists.DefaultUser           = new User();
            userLists.DefaultUser.UserName  = _strUserName;
            userLists.DefaultUser.PassWord  = _strPassWord;
            userLists.DefaultUser.WorldName = _worldSelect.Name;
            userLists.Save();
            OnCallBack(ConnectType.LoginSuccess, GetProductTokens(_loginUser.SelectUser.ProductTokens));

            List <string> arg = new List <string>();

            //加密后的用户名
            arg.Add("-a");
            arg.Add(_loginUser.SelectUser.SubscriptionName);
            //服务器地址
            arg.Add("-h");
            arg.Add(serverStatus.LoginServer);
            //猜测是加密后的角色信息
            arg.Add("--glsticketdirect");
            arg.Add(_loginUser.Ticket);
            //聊天服务器 198.252.160.45:2900
            arg.Add("--chatserver");
            arg.Add(_worldSelect.ChatServerUrl);
            //未知
            arg.Add("--rodat");
            arg.Add("on");

            //语言
            arg.Add("--language");
            arg.Add("English");
            //dicArg.Add(" --language ZH_CN ");

            //游戏类型--或许和指环王用的一样的引擎
            arg.Add("--gametype");
            arg.Add("DDO");
            //角色登录验证服务器
            arg.Add("--authserverurl");
            arg.Add("https://gls.ddo.com/GLS.AuthServer/Service.asmx");
            //验证存活时间?
            arg.Add("--glsticketlifetime");
            arg.Add("21600");
            //貌似是客服地址
            arg.Add("--supporturl");
            arg.Add("https://tss.turbine.com/TSSTrowser/trowser.aspx");
            //BUG提交地址2018-11-29新加
            arg.Add("--bugurl");
            arg.Add("http://ddobugs.turbine.com?task=ticket");
            //未知
            arg.Add("--supportserviceurl");
            arg.Add("https://tss.turbine.com/TSSTrowser/SubmitTicket.asmx");
            try
            {
                Process.Start("dndclient.exe", string.Join(" ", arg.ToArray()));
            }
            catch (Exception ex)
            {
                OnCallBack(ConnectType.Error, ex);
            }
        }