예제 #1
0
        bool CratePlayer(string playerName, int accountId, out int playerId)
        {
            playerId = CommonDefine.InvalidPlayerId;
            if (!OpenSql())
            {
                return(false);
            }

            mCommondStringBuilder.Clear();
            mCommondStringBuilder.Append("INSERT INTO[dbo].[Player] ([PlayerName],[accountId]) VALUES('");
            mCommondStringBuilder.Append(playerName);
            mCommondStringBuilder.Append("',");
            mCommondStringBuilder.Append(accountId);
            mCommondStringBuilder.Append(")");

            string sqlStr = mCommondStringBuilder.ToString();

            try
            {
                SqlCommand    checkCommond = new SqlCommand(sqlStr, mConnection);
                SqlDataReader sqlReader    = checkCommond.ExecuteReader();
                if (sqlReader.Read())
                {
                    playerId = sqlReader.GetInt32(0);
                }
                sqlReader.Close();
                LBLogger.Info(LogTag, "创建玩家执行 " + playerId + "  " + sqlStr);
            }
            catch (Exception ex)
            {
                LBLogger.Error(LogTag, "创建玩家异常:" + accountId + " " + sqlStr + " Ex:" + ex.Message);
            }
            return(playerId != CommonDefine.InvalidPlayerId);
        }
예제 #2
0
        int GetAccountId(string accountName, string password)
        {
            mCommondStringBuilder.Clear();
            mCommondStringBuilder.Append("SELECT AccountId FROM dbo.Account Where AccountName = '");
            mCommondStringBuilder.Append(accountName);
            mCommondStringBuilder.Append("' AND Password = '******'");

            string sqlStr    = mCommondStringBuilder.ToString();
            int    accountId = -1;

            try
            {
                SqlCommand    checkCommond = new SqlCommand(sqlStr, mConnection);
                SqlDataReader sqlReader    = checkCommond.ExecuteReader();
                if (sqlReader.Read())
                {
                    accountId = sqlReader.GetInt32(0);
                }
                sqlReader.Close();
                LBLogger.Info(LogTag, "账号登录验证成功 " + accountId + "  " + sqlStr);
            }
            catch (Exception ex)
            {
                LBLogger.Error(LogTag, "账号登录验证异常:" + accountName + " " + password + " " + sqlStr + " Ex:" + ex.Message);
            }
            finally
            {
            }
            return(accountId);
        }
예제 #3
0
        public static void OnOperateRequest(MyPeer peer, OperationRequest operationRequest)
        {
            RqEnterRoom rqEnterRoom = Deserialization(operationRequest.Parameters);

            if (null == rqEnterRoom)
            {
                LBLogger.Info(LogTag, "解析请求进入房间消息失败");
            }
            else
            {
                LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByConnectionId(peer.ConnectionId);
                LBLogger.Info(LogTag, "临时日志   " + curPlayer.PlayerId + "  " + curPlayer.ConnectionId);
                if (null == curPlayer)
                {
                    LBLogger.Info(LogTag, "不存在的账号请求进入房间,连接id:" + peer.ConnectionId);
                }
                else
                {
                    if (LBRoomManager.Instance.IsPlayerInRoom(curPlayer.PlayerId))
                    {
                        LBLogger.Info(LogTag, "请求进入房间,但是已经在房间中");
                    }
                    else
                    {
                        if (!LBRoomManager.Instance.PlayerEnterRoom(rqEnterRoom.RoomId, curPlayer.PlayerId))
                        {
                            LBLogger.Info(LogTag, "请求进入房间失败");
                        }
                    }
                }
            }
        }
예제 #4
0
        public int CreateRoom(string roomName)
        {
            LBRoom newRoom = mCachedRoom.GetObject();

            LBLogger.Info(LogTag, "创建完房间 " + newRoom.RoomId);
            mRoomDic[newRoom.RoomId] = newRoom;
            newRoom.SetRoomName(roomName);
            return(newRoom.RoomId);
        }
예제 #5
0
        LBScene GetSceneByRoomId(int roomId)
        {
            int sceneId;

            if (!mRoomIdSceneIdDic.TryGetValue(roomId, out sceneId))
            {
                LBLogger.Info(LogTag, "通过房间号没有找到对应的场景 " + roomId);
                return(null);
            }
            return(GetSceneBySceneId(sceneId));
        }
예제 #6
0
        public static void OnOperateRequest(MyPeer peer, OperationRequest operationRequest)
        {
            LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByConnectionId(peer.ConnectionId);

            if (null == curPlayer)
            {
                LBLogger.Info("RqLoadFinish", "账号不存在 " + peer.ConnectionId);
                return;
            }
            LBSceneManager.Instance.PlayerLoadFinish(curPlayer.PlayerId);
        }
예제 #7
0
        public LBScene GetSceneByPlayerId(int playerId)
        {
            int sceneId = 0;

            if (!mPlayerIdSceneIdDic.TryGetValue(playerId, out sceneId))
            {
                LBLogger.Info(LogTag, "通過玩家id沒有找到對應的場景 " + playerId);
                return(null);
            }

            return(GetSceneBySceneId(sceneId));
        }
        public static void OnOperateRequest(MyPeer peer, OperationRequest operationRequest)
        {
            LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByConnectionId(peer.ConnectionId);

            if (curPlayer == null)
            {
                return;
            }
            if (LBRoomManager.Instance.PlayerRoomReady(curPlayer.PlayerId))
            {
            }
            else
            {
                LBLogger.Info("RqRoomReadyPlayHandler", "发起准备,失败 " + peer.ConnectionId);
            }
        }
예제 #9
0
        public void AccountCreate(string accountName, string password, int peerConnectionId)
        {
            LBLogger.Info(LogTag, "请求创建账号");
            LBAccount curAccount = GetAccountByName(accountName);

            if (null != curAccount)
            {
                MyPeer peer = LBPeerManager.Instance.GetPeer(peerConnectionId);
                if (null != peer)
                {
                    peer.SendCustomEvent(RpId.CreateAccountResult, RpCreateAccountResult.Serialization(false, RpCreateAccountResult.CreateAccountErrorCode.AccountExist));
                }
            }
            else
            {
                LBSqlManager.Instance.CreateAccount(accountName, password, peerConnectionId);
            }
        }
예제 #10
0
        public void CreateAccount(string accountName, string password, int peerConnectionId)
        {
            if (!OpenSql())
            {
                return;
            }

            int accountId = GetAccountId(accountName, password);

            if (-1 != accountId)
            {
                LBAccountManager.Instance.CreateAccountResult(false, accountId, accountName, password, peerConnectionId);
                return;
            }

            mCommondStringBuilder.Clear();
            mCommondStringBuilder.Append("INSERT INTO[dbo].[Account] ([AccountName],[Password]) VALUES('");
            mCommondStringBuilder.Append(accountName);
            mCommondStringBuilder.Append("','");
            mCommondStringBuilder.Append(password);
            mCommondStringBuilder.Append("')");

            string sqlStr    = mCommondStringBuilder.ToString();
            bool   insertRet = false;

            try
            {
                SqlCommand sqlCommand = new SqlCommand(sqlStr, mConnection);
                int        ret        = sqlCommand.ExecuteNonQuery();
                insertRet = ret != 0;
                LBLogger.Info(LogTag, "账号创建成功 " + ret + "  " + sqlStr);
            }
            catch (Exception ex)
            {
                LBLogger.Error(LogTag, "账号创建异常:" + accountName + " " + password + " " + sqlStr + " " + ex.Message);
            }

            if (insertRet)
            {
                accountId = GetAccountId(accountName, password);
                insertRet = accountId != -1;
            }
            LBAccountManager.Instance.CreateAccountResult(insertRet, accountId, accountName, password, peerConnectionId);
        }
        public static void OnOperateRequest(MyPeer peer, OperationRequest operationRequest)
        {
            LBLogger.Info(LogTag, "请求创建账号");
            RqCreateAccount rqCreateAccount = Deserialization(operationRequest.Parameters);

            if (null != rqCreateAccount)
            {
                LBAccountManager.Instance.AccountCreate(rqCreateAccount.AccountName, rqCreateAccount.Password, peer.ConnectionId);
            }
            else
            {
                if (ParseErrorCode == RqLoginErrorCode.Null)
                {
                    LBLogger.Error(LogTag, "登录游戏解析失败,但是没有错误码");
                    return;
                }
                peer.SendCustomEvent(RpId.CreateAccountResult, RpCreateAccountResult.Serialization(false, RpCreateAccountResult.CreateAccountErrorCode.ParseError));
            }
        }
예제 #12
0
        public static void OnOperateRequest(MyPeer peer, OperationRequest operationRequest)
        {
            RqLeaveRoom rqEnterRoom = Deserialization(operationRequest.Parameters);

            if (null == rqEnterRoom)
            {
                LBLogger.Info(LogTag, "请求离开Room,解析失败");
                peer.SendCustomEvent(RpId.LeaveRoom, RpLeaveRoom.Serialization(false));
            }
            else
            {
                LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByConnectionId(peer.ConnectionId);
                if (null == curPlayer)
                {
                    LBLogger.Info(LogTag, "请求离开Room,当前玩家不存在");
                    peer.SendCustomEvent(RpId.LeaveRoom, RpLeaveRoom.Serialization(false));
                }
                else
                {
                    if (!LBRoomManager.Instance.IsPlayerInRoom(curPlayer.PlayerId))
                    {
                        LBLogger.Info(LogTag, "请求离开房间,但是当前不在房间中 ");
                        peer.SendCustomEvent(RpId.LeaveRoom, RpLeaveRoom.Serialization(false));
                    }
                    else
                    {
                        bool leaveResult = LBRoomManager.Instance.PlayerLeaveRoom(curPlayer.PlayerId);
                        if (leaveResult)
                        {
                            LBLogger.Info(LogTag, "请求离开房间成功");
                            peer.SendCustomEvent(RpId.LeaveRoom, RpLeaveRoom.Serialization(true));
                        }
                        else
                        {
                            LBLogger.Info(LogTag, "请求离开失败");
                            peer.SendCustomEvent(RpId.LeaveRoom, RpLeaveRoom.Serialization(false));
                        }
                    }
                }
            }
        }
예제 #13
0
        public static void OnOperateRequest(MyPeer peer, OperationRequest operationRequest)
        {
            RqCreateRoom rqCreateRoom = Deserialization(operationRequest.Parameters);

            if (null == rqCreateRoom)
            {
                LBLogger.Info(LogTag, "请求创建房间,消息解析失败");
                peer.SendCustomEvent(RpId.CreateRoom, RpCreateRoom.Serialization(false, CommonDefine.InvalidRoomId, string.Empty));
            }
            else
            {
                LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByConnectionId(peer.ConnectionId);
                if (null == curPlayer)
                {
                    LBLogger.Info(LogTag, "请求创建房间,账号未登陆,连接ID:" + peer.ConnectionId);
                    peer.SendCustomEvent(RpId.CreateRoom, RpCreateRoom.Serialization(false, CommonDefine.InvalidRoomId, string.Empty));
                }
                else
                {
                    if (LBRoomManager.Instance.IsPlayerInRoom(curPlayer.PlayerId))
                    {
                        LBLogger.Info(LogTag, "无法创建,因为当前已经处于房间");
                        peer.SendCustomEvent(RpId.CreateRoom, RpCreateRoom.Serialization(false, CommonDefine.InvalidRoomId, string.Empty));
                    }
                    else
                    {
                        int roomId = LBRoomManager.Instance.CreateRoom(rqCreateRoom.RoomName);
                        if (CommonDefine.InvalidRoomId == roomId)
                        {
                            LBLogger.Info(LogTag, "创建房间失败");
                            peer.SendCustomEvent(RpId.CreateRoom, RpCreateRoom.Serialization(false, CommonDefine.InvalidRoomId, string.Empty));
                        }
                        else
                        {
                            LBLogger.Info(LogTag, "创建房间成功 " + roomId);
                            peer.SendCustomEvent(RpId.CreateRoom, RpCreateRoom.Serialization(true, roomId, rqCreateRoom.RoomName));
                        }
                    }
                }
            }
        }
예제 #14
0
        bool GetPlayerInfo(int accountId, out int playerId, out string playerName)
        {
            playerId   = CommonDefine.InvalidPlayerId;
            playerName = string.Empty;
            if (!OpenSql())
            {
                return(false);
            }

            mCommondStringBuilder.Clear();
            mCommondStringBuilder.Append("SELECT PlayerId, PlayerName FROM dbo.Player Where AccountId = ");
            mCommondStringBuilder.Append(accountId.ToString());

            string sqlStr = mCommondStringBuilder.ToString();

            try
            {
                SqlCommand    checkCommond = new SqlCommand(sqlStr, mConnection);
                SqlDataReader sqlReader    = checkCommond.ExecuteReader();
                if (sqlReader.Read())
                {
                    playerId = sqlReader.GetInt32(0);
                    LBLogger.Info(LogTag, "玩家登录执行 Read success " + playerId);
                    playerName = sqlReader.GetString(1);
                }
                sqlReader.Close();
                LBLogger.Info(LogTag, "玩家登录执行 " + playerId + "  " + sqlStr);
            }
            catch (Exception ex)
            {
                LBLogger.Error(LogTag, "玩家登录验证异常:" + accountId + " " + sqlStr + " Ex:" + ex.Message);
            }


            return(playerId != CommonDefine.InvalidPlayerId);
        }
예제 #15
0
        public void AccountLoginResult(bool success, int accountId, string accountName, string password, int peerConnectionId)
        {
            LBLogger.Info(LogTag, "数据服务器返回结果 " + success + " " + accountId + " " + peerConnectionId);
            LBAccount curAccount = GetAccountByName(accountName);

            if (null != curAccount)
            {
                //客户端发送了多条登录消息?
                LBLogger.Error(LogTag, "收到账号登录结果时,当前账号已经存,账号名 " + accountName);
                return;
            }
            curAccount = GetAccountById(accountId);
            if (null != curAccount)
            {
                //客户端发送了多条登录消息?
                LBLogger.Error(LogTag, "收到账号登录结果时,当前账号已经存。账号ID " + accountName + "  为什么mAccountNameDic中没有账号?");
                return;
            }
            MyPeer peer = LBPeerManager.Instance.GetPeer(peerConnectionId);

            if (null == peer)
            {
                //客户端主动断开连接了?
                LBLogger.Info(LogTag, "没有找到网络连接 " + peerConnectionId);
                return;
            }
            if (success)
            {
                LBAccount account = mAccountCacheMgr.GetObject();
                account.SetAccountInfo(accountName, password, accountId, peerConnectionId);
                mAccountIdDic[accountId]     = account;
                mAccountNameDic[accountName] = account;
                mPeerIdDic[peerConnectionId] = account;
            }
            peer.SendCustomEvent(RpId.LoginResult, RpLoginResult.Serialization(success, RpLoginResult.LoginErrorCode.PasswordError));
        }
예제 #16
0
 /// <summary>
 /// 刷新房间号
 /// </summary>
 void RefreshRoomId()
 {
     RoomId = ++RoomCount;
     LBLogger.Info(LogTag, "刷新房间ID " + RoomId);
 }
예제 #17
0
 /// <summary>
 /// 踢出当前玩家
 /// </summary>
 public void KickAccount()
 {
     LBLogger.Info(LogTag, "踢出账号 " + PeerConnectionId);
     PeerConnectionId = -1;
     LBPeerManager.Instance.KickoutPeer(PeerConnectionId);
 }
예제 #18
0
 /// <summary>
 /// 账号登录
 /// </summary>
 /// <param name="password"></param>
 /// <param name="peerId"></param>
 public void Login(int peerId)
 {
     LBLogger.Info(LogTag, "账号登录 " + " " + peerId);
     PeerConnectionId = peerId;
 }