コード例 #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
        //测试用:增加分数功能
        public void MsgAddScore(Player player, ProtocolBase protocolBase)
        {
            ProtocolPbprotobuf protocol  = (ProtocolPbprotobuf)protocolBase;
            string             protoName = protocol.GetName();

            //处理
            player.data.score += 1;
            Console.WriteLine("MsgAddScore : " + player.id + " : " + player.data.score.ToString());
        }
コード例 #3
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;
        }
コード例 #4
0
        //更新信息
        public void MsgUpdateInfo(Player player, ProtocolBase protocolBase)
        {
            ProtocolPbprotobuf protocol  = new ProtocolPbprotobuf();
            string             protoName = protocol.GetName();

            foreach (var value in protocol.buf.PlayerInfos.Values)
            {
                Scene.Scene.instance.UpdateInfo(value.Id, value.Pos.X, value.Pos.Y, value.Pos.Z);
                //广播
                ProtocolPbprotobuf protocolRet = new ProtocolPbprotobuf();
                protocolRet.SetName(ProtocolPbprotobuf.QueryName.UpdateInfo.ToString());
                protocolRet.buf.PlayerInfos[value.Id] = new PlayerInfo()
                {
                    Id       = value.Id,
                    NickName = "",
                    Pos      = new Pos()
                    {
                        X = value.Pos.X, Y = value.Pos.Y, Z = value.Pos.Z
                    }
                };
                ServNet.ServNet._instance.Broadcast(protocolRet);
            }
        }