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); } }
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); } }