//释放技能 //参数: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); }
//客户端请求加入指定房间 //参数:房间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); } }