Пример #1
0
    //登陆协议处理
    public static void MsgLogin(ClientState c, MsgBase msgBase)
    {
        MsgLogin msg = (MsgLogin)msgBase;

        //密码校验
        if (!DbManager.CheckPassword(msg.id, msg.pw))
        {
            msg.result = 1;
            NetManager.Send(c, msg);
            return;
        }

        //不允许再次登陆
        if (c.player != null)
        {
            msg.result = 1;
            NetManager.Send(c, msg);
            return;
        }

        //如果已经登陆,踢下线
        if (PlayerManager.IsOnline(msg.id))
        {
            //发送踢下线协议
            Player  other   = PlayerManager.GetPlayer(msg.id);
            MsgKick msgKick = new MsgKick();
            msgKick.reason = 0;
            other.Send(msgKick);
            //断开连接
            NetManager.Close(other.state);
        }

        //获取玩家数据
        PlayerData playerData = DbManager.GetPlayerData(msg.id);

        if (playerData == null)
        {
            msg.result = 1;
            NetManager.Send(c, msg);
            return;
        }

        //构建Player
        Player player = new Player(c);

        player.id   = msg.id;
        player.data = playerData;
        PlayerManager.AddPlayer(msg.id, player);
        c.player = player;
        //返回协议
        msg.result = 0;
        player.Send(msg);
    }
Пример #2
0
        //登录处理
        public static void MsgLogin(ClientState state, MsgBase msgBase)
        {
            MsgLogin msgLogin = (MsgLogin)msgBase;

            //密码效验
            if (!DbManager.CheckPassword(msgLogin.id, msgLogin.pw))
            {
                Console.WriteLine(" Incorrect Password Or Account Number ");

                msgLogin.result = 1;

                NetManager.Send(state, msgLogin);

                return;
            }

            //不容许再次登录
            if (state.player != null)
            {
                Console.WriteLine(" Repeated Login Is Not Allowed ");

                msgLogin.result = 1;

                NetManager.Send(state, msgLogin);

                return;
            }

            //如果已经登录,踢下线
            if (PlayerManager.IsOnline(msgLogin.id))
            {
                Player player = PlayerManager.GetPlayer(msgLogin.id);

                MsgKick msgKick = new MsgKick();

                msgKick.reason = 0;

                NetManager.Send(state, msgKick);
            }

            //获取玩家数据
            PlayerData playerData = DbManager.GetPlayerData(msgLogin.id);

            if (playerData == null)
            {
                msgLogin.result = 1;

                NetManager.Send(state, msgLogin);

                return;
            }

            //构建Player玩家
            Player player1 = new Player(state);

            player1.id = msgLogin.id;

            player1.data = playerData;

            PlayerManager.AddPlayer(msgLogin.id, player1);

            state.player = player1;

            //返回协议
            msgLogin.result = 0;

            player1.Send(msgLogin);
        }