예제 #1
0
        protected override async void Run(Session session, C2R_CowCowLogin message, Action <R2C_CowCowLogin> reply)
        {
            R2C_CowCowLogin response = new R2C_CowCowLogin();

            try
            {
                DBProxyComponent db = Game.Scene.GetComponent <DBProxyComponent>();
                var account         = await db.Query <Accounts>(_account => _account.Account == message.Account && _account.Password == message.Password);

                if (account.Count == 0)
                {
                    response.Error   = ErrorCode.ERR_LoginError;
                    response.Message = "用户名不存在!";
                    reply(response);
                    return;
                }
                Log.WriteLine($"UserName:{message.Account},Password:{message.Password}");

                Accounts accounts = (Accounts)account[0];
                //将已在线玩家踢下线
                await RealmHelper.KickOut(accounts.Id);

                //随机分配网管服务器
                StartConfig gateConfig  = Game.Scene.GetComponent <RealmGateAddressComponent>().GetAddress();
                Session     gateSession = Game.Scene.GetComponent <NetInnerComponent>().Get(gateConfig.GetComponent <InnerConfig>().IPEndPoint);

                //请求登录gate服务器密匙
                G2R_CowCowGetLoginKey g2R_GetLoginKey = (G2R_CowCowGetLoginKey)await gateSession.Call(new R2G_CowCowGetLoginKey()
                {
                    UserID = accounts.Id
                });

                response.Key     = g2R_GetLoginKey.Key;
                response.Address = gateConfig.GetComponent <OuterConfig>().Address2;
                response.Error   = 0;
                response.Message = "恭喜您登录成功";

                reply(response);
            }
            catch (Exception e)
            {
                response.Error   = ErrorCode.ERR_LoginError;
                response.Message = "登录失败!";
                ReplyError(response, e, reply);
            }
        }
예제 #2
0
        protected override async void Run(Session session, C2R_CowCowRegister message, Action <R2C_CowCowRegister> reply)
        {
            R2C_CowCowRegister response = new R2C_CowCowRegister();

            try
            {
                DBProxyComponent db = Game.Scene.GetComponent <DBProxyComponent>();

                //查询账号是否存在
                var accounts = await db.Query <Accounts>(_account => _account.Account == message.Account);

                if (accounts.Count > 0)
                {
                    response.Error = ErrorCode.ERR_AccountAlreadyRegister;
                    reply(response);
                    return;
                }

                //新建账号,之后如果操作用户信息,通过唯一ID查找并修改或删除等
                Accounts newAccounts = ComponentFactory.CreateWithId <Accounts>(IdGenerater.GenerateId());
                newAccounts.Account   = message.Account;
                newAccounts.Password  = message.Password;
                newAccounts.LoginTime = DateTime.Now;

                Log.WriteLine($"注册新账号:{newAccounts.Account},密码:{message.Password}");

                //新建用户信息
                UserInfo newUser = ComponentFactory.CreateWithId <UserInfo>(newAccounts.Id);
                newUser.NickName     = $"用户{message.Account}";
                newUser.HeadIcon     = message.Account;
                newUser.Sex          = 0;
                newUser.Diamond      = 10000;
                newUser.RegisterTime = DateTime.Now;

                await db.Save(newAccounts);

                await db.Save(newUser);

                await RealmHelper.KickOut(newAccounts.Id);

                //随机分配网管服务器
                StartConfig gateConfig  = Game.Scene.GetComponent <RealmGateAddressComponent>().GetAddress();
                Session     gateSession = Game.Scene.GetComponent <NetInnerComponent>().Get(gateConfig.GetComponent <InnerConfig>().IPEndPoint);

                //请求登录gate服务器密匙
                G2R_CowCowGetLoginKey g2R_GetLoginKey = (G2R_CowCowGetLoginKey)await gateSession.Call(new R2G_CowCowGetLoginKey()
                {
                    UserID = newAccounts.Id
                });

                response.Key     = g2R_GetLoginKey.Key;
                response.Address = gateConfig.GetComponent <OuterConfig>().Address2;
                response.Error   = 0;
                response.Message = "登录成功";
                reply(response);
            }
            catch (Exception e)
            {
                response.Error   = ErrorCode.ERR_AccountAlreadyRegister;
                response.Message = "注册失败!";
                ReplyError(response, e, reply);
            }
        }