コード例 #1
0
        //注册
        //@协议参数,用户名,密码 @返回协议:-1表示失败,0表示成功
        public void MsgRegister(Conn conn, ProtocolBase protocolBase)
        {
            ProtocolPbprotobuf protocol  = (ProtocolPbprotobuf)protocolBase;
            string             protoName = protocol.GetName();
            string             protoType = protocol.GetTypeStr();
            string             id        = protocol.buf.Register.Id;
            string             pw        = protocol.buf.Register.Pw;
            string             strFormat = "[收到注册协议] : " + conn.GetAdress();

            Console.WriteLine(strFormat + " 用户名:" + id + " 密码:" + pw);

            //构建返回协议
            ProtocolPbprotobuf protocolRet = new ProtocolPbprotobuf();

            if (DataMgr.DataMgr.instance.Register(id, pw))
            {
                protocolRet.SetResponse(ProtocolPbprotobuf.QueryName.Register.ToString(),
                                        0, "Register success");
            }
            else
            {
                protocolRet.SetResponse(ProtocolPbprotobuf.QueryName.Register.ToString(),
                                        -1, "Register fail");
            }
            //创建角色
            // DataMgr.DataMgr.instance.CreatePlayer(id);  考虑一下
            //返回协议给客户端
            conn.Send(protocolRet);
        }
コード例 #2
0
        //登录
        //@协议参数id,pw; @返回协议:-1失败,0成功
        public void MsgLogin(Conn conn, ProtocolBase protocolBase)
        {
            ProtocolPbprotobuf protocol  = (ProtocolPbprotobuf)protocolBase;
            string             protoName = protocol.GetName();
            string             id        = protocol.buf.Login.Id;
            string             pw        = protocol.buf.Login.Pw;
            string             strFormat = "[收到登录协议] : " + conn.GetAdress();

            Console.WriteLine(strFormat + " 用户名: " + id + " 密码: " + pw);

            //构建返回协议
            ProtocolPbprotobuf protocolRet = new ProtocolPbprotobuf();

            //验证
            if (!DataMgr.DataMgr.instance.CheckPassword(id, pw))
            {
                protocolRet.SetResponse(ProtocolPbprotobuf.QueryName.Login.ToString(),
                                        -1, "login fail");
                conn.Send(protocolRet);
                return;
            }
            Console.WriteLine("存在账户");
            //是否已登录
            ProtocolPbprotobuf protocolLogout = new ProtocolPbprotobuf();

            protocolLogout.SetName(ProtocolPbprotobuf.QueryName.Logout.ToString());
            if (!Player.KickOff(id, protocolLogout))     //不查询,直接踢
            {
                protocolRet.SetResponse(ProtocolPbprotobuf.QueryName.Login.ToString(),
                                        -1,
                                        "踢人失败 T_T");
                conn.Send(protocolRet);
            }
            //获取玩家数据
            PlayerData playerData = DataMgr.DataMgr.instance.GetPlayerData(id);

            if (playerData == null)
            {
                protocolRet.SetResponse(ProtocolPbprotobuf.QueryName.Login.ToString(),
                                        1,                // (int)Code.NoPlayer,
                                        "get PlayerData fail T_T");
                conn.Send(protocolRet);
                return;
            }
            Console.WriteLine("存在角色");
            conn._player      = new Player(id, conn);
            conn._player.data = playerData;
            //事件触发
            ServNet.ServNet._instance.HandlePlayerEvent.OnLogin(conn._player);
            //返回
            protocolRet.SetPlayerData(id, playerData.partIndex);
            protocolRet.SetResponse(ProtocolPbprotobuf.QueryName.Login.ToString(), 0, "login success");
            conn.Send(protocolRet);
            return;
        }
コード例 #3
0
        //测试用:获取分数
        //返回协议:int 分数
        public void MsgGetScore(Player player, ProtocolBase protocolBase)
        {
            ProtocolPbprotobuf protocolRet = new ProtocolPbprotobuf();

            protocolRet.SetResponse("GetScore", 0, "", player.data.score);
            player.Send(protocolRet);
            Console.WriteLine("MsgGetScore : " + player.id + ":" + player.data.score);
        }
コード例 #4
0
        //删除Scene角色
        public void DelPlayer(string id)
        {
            lock (_list){
                ScenePlayer p = GetScenePlayer(id);
                if (p != null)
                {
                    _list.Remove(p);
                }
            }
            ProtocolPbprotobuf protocol = new ProtocolPbprotobuf();

            protocol.SetResponse(ProtocolPbprotobuf.QueryName.PlayerLeave.ToString(), 0, id);
            ServNet.ServNet._instance.Broadcast(protocol);
        }
コード例 #5
0
        //登出功能
        //返回协议:0正常下线
        public void MsgLogout(Conn conn, ProtocolBase protocolBase)
        {
            ProtocolPbprotobuf protocolRet = new ProtocolPbprotobuf();

            protocolRet.SetResponse(ProtocolPbprotobuf.QueryName.Logout.ToString(), code: 0, msg: "Logout");
            if (conn._player == null)
            {
                conn.Send(protocolRet);
                conn.Close();
            }
            else
            {
                conn.Send(protocolRet);
                conn._player.Logout();
            }
        }