//释放技能
        //参数:posX,posY,posZ,rotX,rotY,rotZ,skillType
        //返回协议:广播 释放者id,posX,posY,posZ,rotX,rotY,rotZ,skillType
        public void MsgReleaseSkill(Player player, ProtocolBase protocol)
        {
            if (player.tempData.status != PlayerTempData.Statue.Fight)
            {
                return;
            }
            int    start     = 0;
            string protoName = protocol.GetString(start, ref start);
            float  posX      = protocol.GetFloat(start, ref start);
            float  posY      = protocol.GetFloat(start, ref start);
            float  posZ      = protocol.GetFloat(start, ref start);
            float  rotX      = protocol.GetFloat(start, ref start);
            float  rotY      = protocol.GetFloat(start, ref start);
            float  rotZ      = protocol.GetFloat(start, ref start);
            int    skillType = protocol.GetInt(start, ref start);

            //加上id后广播
            Room         room        = player.tempData.room;
            ProtocolBase protocolRet = ServNet.instance.proto.Decode(null, 0, 0);

            protocolRet.AddString("ReleaseSkill");
            protocolRet.AddString(player.id);
            protocolRet.AddFloat(posX);
            protocolRet.AddFloat(posY);
            protocolRet.AddFloat(posZ);
            protocolRet.AddFloat(rotX);
            protocolRet.AddFloat(rotY);
            protocolRet.AddFloat(rotZ);
            protocolRet.AddInt(skillType);
            RoomSystem.instance.BroadcastInRoom(room, protocolRet);
        }
Ejemplo n.º 2
0
        //客户端请求加入指定房间
        //参数:房间index
        //用index来确定应该进入的房间是不准确的,因为如果中途房间被关闭了,就会进入错误的房间...
        //返回协议:0代表成功,-1代表失败,-2代表已开战,-3代表房间满
        public void MsgEnterRoom(Player player, ProtocolBase protocol)
        {
            int    start     = 0;
            string protoName = protocol.GetString(start, ref start);
            int    index     = protocol.GetInt(start, ref start);

            ProtocolBase backProtocol = ServNet.instance.proto.Decode(null, 0, 0);

            backProtocol.AddString("EnterRoom");

            if (index < 0 || index >= World.instance.roomList.Count)
            {
                Console.WriteLine("指定房间不存在," + player.id + " 无法进入房间");
                backProtocol.AddInt(-1);
                player.Send(backProtocol);
                return;
            }

            Room room = World.instance.roomList[index];

            if (room.status != Room.Status.Prepare)
            {
                Console.WriteLine("指定房间不是准备状态," + player.id + " 无法进入房间");
                backProtocol.AddInt(-2);
                player.Send(backProtocol);
                return;
            }
            if (RoomSystem.instance.AddPlayerToRoom(room, player))
            {
                RoomSystem.instance.BroadcastInRoom(room, room.GetRoomInfoBack());
                backProtocol.AddInt(0);
                player.Send(backProtocol);
            }
            else
            {
                Console.WriteLine("房间已满," + player.id + " 无法进入房间");
                backProtocol.AddInt(-3);
                player.Send(backProtocol);
            }
        }