public async void ChangeMyLastJionRoom(long userId) { try { UserInfo Info = Game.Scene.GetComponent <PlayerManagerComponent>().Get(userId) ?? await Game.Scene.GetComponent <DBProxyComponent>().Query <UserInfo>(userId); Info.GetComponent <MyLastJionRoom>().MyLastJionRoomList.ForEach(u => Console.WriteLine($"我即将清除我的最后房间信息的游戏id为{u.GameId}场Id为{u.AreaId}房间id{u.RoomId}")); if (Info.GetComponent <MyLastJionRoom>().MyLastJionRoomList.Count == 0) { return; } Info.GetComponent <MyLastJionRoom>().MyLastJionRoomList.Clear(); await Game.Scene.GetComponent <DBProxyComponent>().Save(Info); } catch (Exception e) { Log.Error(e.Message); throw; } }
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); } }
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); } }