public override B2C_JoinBattle DoResponse(C2B_JoinBattle request, Client client) { if (!ProtoTool.CompareVersion(request.Version)) { return(new B2C_JoinBattle { Code = ErrorCode.VersionError }); } var result = ErrorCode.Error; var req = Appliaction.Current.Client.R <B2L_CheckSession, L2B_CheckSession>(); req.RequestMessage.SessionKey = request.Session; req.RequestMessage.UserID = request.UserID; req.OnCompleted = (s, r) => { result = r.Code; }; req.SendRequest(); if (result == ErrorCode.OK) { client.UserState = request.UserID; if (!MonitorPool.S.Get <MapSimulaterManager>().BindUser(request.UserID, client.ID)) { result = ErrorCode.NOFoundUserOnBattleServer; } } return(new B2C_JoinBattle { Code = result }); }
public override L2G_Reg DoResponse(G2L_Reg request, Client client) { if (!ProtoTool.CompareVersion(request.Version)) { return(new L2G_Reg { Code = ErrorCode.VersionError }); } client.HaveAdmission = true; client.UserState = request.ServerID; var server = new GameServerInfo { ServerID = request.ServerID, Host = request.Host, Port = request.Port }; var success = ServerManager .S.AddGateServer( client.ID, request.CurrentPlayer, server, request.ServiceHost, request.ServicesProt ); if (!success) { return(new L2G_Reg { Code = ErrorCode.Error }); } client.OnDisconnect += OnDisconnect; return(new L2G_Reg { Code = ErrorCode.OK }); }
public override G2C_Login DoResponse(C2G_Login request, Client client) { if (!ProtoTool.CompareVersion(request.Version)) { return(new G2C_Login { Code = ErrorCode.VersionError }); } if (string.IsNullOrWhiteSpace(request.Session)) { return new G2C_Login { Code = ErrorCode.Error } } ; var req = Appliaction.Current.Client.CreateRequest <G2L_CheckUserSession, L2G_CheckUserSession>(); req.RequestMessage.Session = request.Session; req.RequestMessage.UserID = request.UserID; ErrorCode resultCode = ErrorCode.Error; req.OnCompleted = (s, res) => { if (s && res.Code == ErrorCode.OK) { //kick other var clients = Appliaction.Current.ListenServer.CurrentConnectionManager.AllConnections; foreach (var i in clients) { if (i.UserState != null && (long)i.UserState == request.UserID) { i.Close(); } } resultCode = ErrorCode.OK; client.HaveAdmission = true; client.UserState = request.UserID; } }; req.SendRequest(); if (client.HaveAdmission) { Managers.UserData data; var manager = MonitorPool.S.Get <UserDataManager>(); if (!manager.TryToGetUserData(request.UserID, out data)) { return(new G2C_Login { Code = ErrorCode.NoGamePlayerData }); } return(new G2C_Login { Code = ErrorCode.OK, Package = data.GetPackage(), Hero = data.GetHero(), Coin = data.Coin, Gold = data.Gold }); } else { return(new G2C_Login { Code = resultCode }); } } }
public override L2C_Login DoResponse(C2L_Login request, Client client) { if (!ProtoTool.CompareVersion(request.Version)) { return(new L2C_Login { Code = ErrorCode.VersionError }); } using (var db = Appliaction.Current.GetDBContext()) { var pwd = DBTools.GetPwd(request.Password, db); var query = db.TbaCCount .Where(t => t.UserName == request.UserName && t.Password == pwd) .SingleOrDefault(); if (query == null) { return(new L2C_Login { Code = ErrorCode.LoginFailure }); } else { var session = DateTime.UtcNow.Ticks.ToString(); Appliaction.Current.SetSession(query.ID, session); query.LastLoginDateTime = DateTime.UtcNow; query.LoginCount += 1; db.SubmitChanges(); var mapp = ServerManager.Singleton.GetGateServerMappingByServerID(query.ServerID); if (mapp == null) { return(new L2C_Login { Code = ErrorCode.NOFoundServerID }); } UserServerInfo info; if (BattleManager.Singleton.GetBattleServerByUserID(query.ID, out info)) { var task = new Task_L2B_ExitUser { UserID = query.ID }; var server = ServerManager.Singleton.GetBattleServerMappingByServerID(info.BattleServerID); if (server != null) { var connection = Appliaction.Current.GetServerConnectByClientID(server.ClientID); if (connection != null) { var message = NetProtoTool.ToNetMessage(MessageClass.Task, task); connection.SendMessage(message); } } } return(new L2C_Login { Code = ErrorCode.OK, Server = mapp.ServerInfo, Session = session, UserID = query.ID }); } } }
public override L2C_Reg DoResponse(C2L_Reg request, Client client) { if (!ProtoTool.CompareVersion(request.Version)) { return(new L2C_Reg { Code = ErrorCode.VersionError }); } if (string.IsNullOrWhiteSpace(request.UserName) || string.IsNullOrWhiteSpace(request.Password)) { return(new L2C_Reg { Code = ErrorCode.RegInputEmptyOrNull }); } using (var db = Appliaction.Current.GetDBContext()) { var query = db.TbaCCount.Where(t => t.UserName == request.UserName).Count(); if (query > 0) { return(new L2C_Reg { Code = ErrorCode.RegExistUserName }); } else { var free = ServerManager.S.GetFreeGateServer(); if (free == null) { return(new L2C_Reg() { Code = ErrorCode.NoFreeGateServer }); } var serverID = free.ServerInfo.ServerID; var pwd = DBTools.GetPwd(request.Password, db); var acc = new DataBaseContext.TbaCCount { UserName = request.UserName, Password = pwd, CreateDateTime = DateTime.UtcNow, LoginCount = 0, LastLoginDateTime = DateTime.UtcNow, ServerID = serverID }; db.TbaCCount.InsertOnSubmit(acc); db.SubmitChanges(); //var userID = Convert.ToInt64( db.InsertWithIdentity(acc)); var session = DateTime.UtcNow.Ticks.ToString(); Appliaction.Current.SetSession(acc.ID, session); var mapping = ServerManager.Singleton.GetGateServerMappingByServerID(acc.ServerID); if (mapping == null) { return(new L2C_Reg { Code = ErrorCode.NOFoundServerID }); } return(new L2C_Reg { Code = ErrorCode.OK, Session = session, UserID = acc.ID, Server = mapping.ServerInfo }); } } }