Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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);
            }
        }