private void GatewaySocket_PacketReceived(Packet packet) { switch ((OpCodes.GatewayServer)packet.Opcode) { #region OpCodes.GatewayServer.ServerList case OpCodes.GatewayServer.ServerList: Servers.Clear(); while (packet.ReadByte() != 0) { packet.ReadByte(); //server ID packet.ReadAscii(); //Server Name } while (packet.ReadByte() == 1) { var serverId = packet.ReadShort(); var serverName = packet.ReadAscii(); var currentCapacity = packet.ReadShort(); var maxCapacity = packet.ReadShort(); var status = packet.ReadByte(); Servers.Add(new ServerList(serverId, serverName, currentCapacity, maxCapacity, status)); } break; #endregion #region OpCodes.GatewayServer.LoginReply case OpCodes.GatewayServer.LoginReply: if (packet.ReadByte() == 1) { var sessionId = packet.ReadUInt(); _agentServerIp = packet.ReadAscii(); _agentServerPort = packet.ReadUShort(); _doAgentServerConnect = true; var response = new Packet((ushort)OpCodes.GatewayServer.LoginReply, true); response.WriteByte(1); response.WriteUInt(sessionId); response.WriteAscii("127.0.0.1"); response.WriteUShort(_mLocalPort); packet = response; packet.Lock(); } break; #endregion } if (InvokeMethodWithSkip(GatewayPacketReceived, packet)) { return; //Skip } SendFromServer(packet); }