protected override async void Run(Session session, R2G_PlayerKickOut_Req message, Action <G2R_PlayerKickOut_Res> reply) { G2R_PlayerKickOut_Res response = new G2R_PlayerKickOut_Res(); try { ETModel.UserInfo userInfo = Game.Scene.GetComponent <PlayerManagerComponent>().Get(message.UserID); RealmHelper.KickNotification(message.UserID); await Task.Delay(1000); long userSessionId = userInfo.GetComponent <UnitGateComponent>().GateSessionActorId; Game.Scene.GetComponent <NetOuterComponent>().Remove(userSessionId); Log.Info($"将玩家{message.UserID}连接断开"); reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
protected override async void Run(Session session, C2R_Register_Req message, Action <R2C_Register_Res> reply) { R2C_Register_Res response = new R2C_Register_Res(); try { DBProxyComponent dbProxy = Game.Scene.GetComponent <DBProxyComponent>(); List <ComponentWithId> result = await dbProxy.Query <AccountInfo>(_account => _account.Account == message.Account); if (result.Count > 0) { response.Error = ErrorCode.ERR_AccountAlreadyRegister; response.Message = "当前账号已经被注册 !!!"; reply(response); return; } AccountInfo newAccount = ComponentFactory.CreateWithId <AccountInfo>(IdGenerater.GenerateId()); newAccount.Account = message.Account; newAccount.Password = message.Password; Log.Info($"注册新账号:{MongoHelper.ToJson(newAccount)}"); ETModel.UserInfo newUser = UserInfoFactory.Create(newAccount.Id, session); if (newUser.GetComponent <MailBoxComponent>() != null) { newUser.RemoveComponent <MailBoxComponent>(); } await newUser.AddComponent <MailBoxComponent>().AddLocation(); newUser.PlayerId = RandomHelper.GenerateRandomPlayerId(6); newUser.Account = message.Account; newUser.Nickname = $"{ RandomHelper.GenerateRandomCode(4):0000}"; newUser.HeadId = RandomHelper.GetRandom().Next(1, 11); if (newUser.HeadId < 6) { newUser.Gender = 1; } else { newUser.Gender = 2; } newUser.Gold = 100000; newUser.IsTourist = false; await dbProxy.Save(newAccount); await dbProxy.Save(newUser); reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
protected override async void Run(Session session, C2G_LoginGate message, Action <G2C_LoginGate> reply) { G2C_LoginGate response = new G2C_LoginGate(); try { PokerGateSessionKeyCpt pokerGateSessionKey = Game.Scene.GetComponent <PokerGateSessionKeyCpt>(); long key = pokerGateSessionKey.Get(message.Key); if (key == 0) { response.Error = ErrorCode.ERR_ConnectGateKeyError; response.Message = "登录网关服务器失败。"; reply(response); return; } pokerGateSessionKey.Remove(message.Key); DBProxyComponent dbProxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); ETModel.UserInfo userInfo = await dbProxyComponent.Query <ETModel.UserInfo>(message.UserId); userInfo.GetComponent <UnitGateComponent>().GateSessionActorId = session.Id; if (session.GetComponent <SessionUserComponent>() == null) { session.AddComponent <SessionUserComponent>().userInfo = userInfo; } session.GetComponent <SessionUserComponent>().sessionId = session.Id; await session.AddComponent <MailBoxComponent, string>(ActorInterceptType.GateSession).AddLocation(); StartConfigComponent config = Game.Scene.GetComponent <StartConfigComponent>(); IPEndPoint realmIPEndPoint = config.RealmConfig.GetComponent <InnerConfig>().IPEndPoint; Session realmSession = Game.Scene.GetComponent <NetInnerComponent>().Get(realmIPEndPoint); await realmSession.Call(new G2R_PlayerOnline_Req() { UserID = message.UserId, GateAppID = config.StartConfig.AppId }); Game.Scene.GetComponent <PlayerManagerComponent>().Add(message.UserId, session.GetComponent <SessionUserComponent>(), session.Id); userInfo.IsOnline = true; await dbProxyComponent.Save(userInfo); reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
private void ChanagerGender(int headId, ETModel.UserInfo userInfo) { if (headId < 6) { userInfo.Gender = 1; } else { userInfo.Gender = 2; } }
protected override async void Run(Session session, C2G_TouristsLogin_Req message, Action <G2C_TouristsLogin_Res> reply) { G2C_TouristsLogin_Res response = new G2C_TouristsLogin_Res(); try { AccountInfo newAccount = ComponentFactory.CreateWithId <AccountInfo>(IdGenerater.GenerateId()); newAccount.Account = GetRandomString(6); newAccount.Password = MakePassword(6); DBProxyComponent dbProxy = Game.Scene.GetComponent <DBProxyComponent>(); List <ComponentWithId> result = await dbProxy.Query <AccountInfo>(_account => _account.Account == newAccount.Account); if (result.Count > 0) { newAccount.Account += RandomHelper.GetRandom().Next(0, 9); } ETModel.UserInfo newUser = UserInfoFactory.Create(newAccount.Id, session); newUser.PlayerId = RandomHelper.GenerateRandomCode(6); newUser.Account = newAccount.Account; newUser.Nickname = $"游客{ RandomHelper.GenerateRandomCode(4):0000}"; newUser.HeadId = RandomHelper.GetRandom().Next(1, 11); if (newUser.HeadId < 6) { newUser.Gender = 1; } else { newUser.Gender = 2; } newUser.Gold = 0; newUser.IsTourist = true; await dbProxy.Save(newAccount); await dbProxy.Save(newUser); response.Account = newAccount.Account; response.Password = newAccount.Password; reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
public UserInfo CoventUserData(ETModel.UserInfo _userInfo) { UserInfo userInfo = new UserInfo() { Account = _userInfo.Account, PlayerId = _userInfo.PlayerId, Nickname = _userInfo.Nickname, HeadId = _userInfo.HeadId, Gold = _userInfo.Gold, Gender = _userInfo.Gender, Score = _userInfo.Scroe }; return(userInfo); }
public static ETModel.UserInfo Create(long userId, Session session) { ETModel.UserInfo userInfo = ComponentFactory.CreateWithId <ETModel.UserInfo>(userId); userInfo.AddComponent <MyRecord>(); userInfo.AddComponent <MyMailboxInfo>(); userInfo.RegistrTime = DateTime.Now; userInfo.AddComponent <UnitGateComponent, long>(session.Id); userInfo.AddComponent <MyLastJionRoom>(); return(userInfo); }
protected override async void Run(Session session, C2G_GetUserInfo_Req message, Action <G2C_GetUserInfo_Res> reply) { G2C_GetUserInfo_Res response = new G2C_GetUserInfo_Res(); try { if (!GateHelper.SingSession(session)) { response.Error = ErrorCode.ERR_SessionError; response.Message = " 非法的 siesson 链接请求"; return; } ETModel.UserInfo userInfo = Game.Scene.GetComponent <PlayerManagerComponent>().Get(message.UserId); if (userInfo == null) { response.Error = ErrorCode.ERR_GetUserInfoError; response.Message = $"查询用户信息失败,用户名{message.UserId}"; reply(response); return; } response.UserInfo = new UserInfo() { Account = userInfo.Account, PlayerId = userInfo.PlayerId, Nickname = userInfo.Nickname, HeadId = userInfo.HeadId, Gold = userInfo.Gold, Gender = userInfo.Gender, IsTourist = userInfo.IsTourist, }; reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
protected override void Run(Session session, C2G_MailAsk_Req message, Action <G2C_MailReturn_Res> reply) { G2C_MailReturn_Res response = new G2C_MailReturn_Res(); try { if (!GateHelper.SingSession(session)) { response.Error = ErrorCode.ERR_SessionError; response.Message = " 当前的session已经断开 !!!"; reply(response); return; } ETModel.UserInfo userInfo = Game.Scene.GetComponent <PlayerManagerComponent>().Get(message.UserId); if (userInfo == null) { response.Error = ErrorCode.ERR_BindBankCardAskError; response.Message = "用户不在线。"; reply(response); return; } response.Info = new Google.Protobuf.Collections.RepeatedField <MailInfo>(); userInfo.GetComponent <MyMailboxInfo>().MyMail.ForEach(u => response.Info.Add(new MailInfo() { Content = u.Content, Timestamp = u.SendTime.ToString("yy-MM-dd HH:mm"), Title = u.Title })); reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }