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);
            }
        }
示例#2
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);
            }
        }
示例#3
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);
            }
        }
示例#4
0
 private void ChanagerGender(int headId, ETModel.UserInfo userInfo)
 {
     if (headId < 6)
     {
         userInfo.Gender = 1;
     }
     else
     {
         userInfo.Gender = 2;
     }
 }
示例#5
0
        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);
            }
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
        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);
            }
        }
示例#9
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);
            }
        }