Exemplo n.º 1
0
    public void Login(string accountName, string password, Action <bool> action)
    {
        Debug.Log("[C_Login_Login_0x0101]");
        _onLogin = action;
        var data = new C_Login_Login_0x0101 {
            _accountName = accountName, _password = password
        };

        Singleton._serverCallback.AddCallback <S_Login_Login_0x0101>(OnLogin);
        Singleton._messageManager.Send(data);
    }
Exemplo n.º 2
0
 void Update()
 {
     //if (!connected) //如果与服务器断开了,就需要再连接一下
     //	peer.Connect(serverAddress, applicationName);
     if (peer == null)
     {
         return;
     }
     peer.Service();        //获取服务器的响应,需要每时每刻都获取,保持连接状态
     if (Input.GetKeyDown(KeyCode.Space))
     {
         Debug.LogError("send!!!");
         // parameter 0对应id,1对应数据
         var parameter = new Dictionary <byte, object>();
         var data      = new C_Login_Login_0x0101 {
             _accountName = "1", _password = "******"
         };
         parameter.Add(0, data.GetMessageID());
         var temp = Singleton._serializer.Serialize <C_Login_Login_0x0101>(data);
         parameter.Add(1, temp);
         peer.OpCustom(0, parameter, true);
     }
 }
Exemplo n.º 3
0
        void OnLogin(Client peer, C_Login_Login_0x0101 msg)
        {
            Singleton._log.InfoFormat("[{0}] 帐号 {1} 登录!", msg.GetMessageID().ToHex()
                                      , (msg == null ? "null" : msg._accountName));
            var          rs    = Singleton._sqlServer.CheckAccount(msg._accountName, msg._password);
            ELoginResult newRs = ELoginResult.Failed_AccountNotExist;

            switch (rs)
            {
            case Sql.EAccountResult.AccountNotExist:
                newRs = ELoginResult.Failed_AccountNotExist;
                break;

            case Sql.EAccountResult.PasswordNotCorrect:
                newRs = ELoginResult.Failed_Unknown;
                break;

            case Sql.EAccountResult.Success:
                newRs = ELoginResult.Success;
                break;
            }
            if (newRs == ELoginResult.Success)
            {
                if (Singleton._clients.ContainsKey(msg._accountName))
                {
                    // 如果同名则踢出前面登录客户端
                    var client = Singleton._clients[msg._accountName];
                    // 在Disconnect中会移除这个名字
                    Singleton._log.Info("connectId = " + peer.ConnectionId + ", 移除 " + msg._accountName);
                    Singleton._clients.Remove(msg._accountName);
                    client.Disconnect();
                }

                Singleton._log.Info("connectId = " + peer.ConnectionId + ", 添加 " + msg._accountName);
                Singleton._clients[msg._accountName] = peer;
                peer._accountName = msg._accountName;

                // 登录赠送金币1, 每天只限一次
                var p = Singleton._sqlServer.GetPlayerData(msg._accountName);
                // 设置登录时间
                p._lastLoginTime = Singleton._timeUtil.DateTimeToStamp(System.DateTime.Now);
                var time = Singleton._timeUtil.StampToDateTime(p._lastObtainGoldTime);
                var now  = System.DateTime.Now;
                Singleton._log.Info("now=" + now + ", last=" + time);
                if (Singleton._timeUtil.GetTimeGap(now, time) >= 24 * 3600 || // 如果时间间隔超过24小时
                    (time.Day - now.Day > 0))    // 或者在24小时以内但不在同一天登录的
                {
                    p._lastObtainGoldTime = Singleton._timeUtil.DateTimeToStamp(System.DateTime.Now);
                    Singleton._log.Info("增加金币数1!");
                    var a = Singleton._sqlServer.GetAssetData(msg._accountName);
                    a._gold += 1;
                    Singleton._sqlServer.ChangeAsset(a);
                }
                Singleton._sqlServer.SavePlayer(p);
            }

            // 返回数据
            Send(peer, new S_Login_Login_0x0101 {
                _rs = newRs
            });

            // 测试
            // System.Threading.Thread.Sleep(3000);
            // peer.Disconnect();
            // SendFromServer(peer, new S_Item_Gift_0x0401{ _itemId = 1, _count = 10});
        }