private static void SendServerList(ref NetworkStream ns, Client client) { ServerList sl = Program.server_list; MemoryStream ms = new MemoryStream(6 + 40 * sl.ServerCount); short server_count = (short)sl.ServerCount; ms.WriteByte(0xA8); // Game Server List CMD WriteBE16(ms, (short)(6 + 40 * server_count)); // MsgLen ms.WriteByte(0x00); // System Info Flag (0x64: Spy on client, 0xCC: no spy) WriteBE16(ms, server_count); // # of Servers short index = 0; foreach (ServerInfo server in sl.Servers) { if (client.CompareVersionInSARange()) //UO:SA Beta hack { WriteBE16(ms, 0x3D); } else { WriteBE16(ms, index); } index++; byte[] name = GetBytes(server.Name, 32); ms.Write(name, 0, 32); // 32 bytes ms.WriteByte(0); // percent full ms.WriteByte(0); // timezone WriteBE(ms, server.ip); } byte[] tmp = ms.ToArray(); ns.Write(tmp, 0, tmp.Length); }
public static void ServerSelectPacket(ref NetworkStream ns, Client client) { int index = ReadBE16(ns); if (client.CompareVersionInSARange()) //UO:SA Beta hack { index = 0; } if (index >= Program.server_list.ServerCount) { return; } SendConnectGameServer(ref ns, index, client); }
public static void SendConnectGameServer(ref NetworkStream ns, int index, Client client) { MemoryStream ms = new MemoryStream(11); ServerInfo server = Program.server_list.Servers[index]; ms.WriteByte(0x8C); WriteBEflipped(ms, server.ip); WriteBE16(ms, (short)server.port); //Pol like seed ms.WriteByte(0xFE); ms.WriteByte(0xFE); if (client.CompareVersion(Client.VER60142)) { ms.WriteByte(0xFD); } else if (client.CompareVersionInSARange()) //UO:SA Beta hack (for 0xb9 packet) { ms.WriteByte(0xFD); } else { ms.WriteByte(0xFE); } //if (client.isUOKR) // ms.WriteByte(0xFC); //else if (client.CompareVersion(Client.VER6017)) { ms.WriteByte(0xFD); } else { ms.WriteByte(0xFE); } byte[] tmp = ms.ToArray(); ns.Write(tmp, 0, tmp.Length); }
private static void SendServerList(ref NetworkStream ns, Client client) { ServerList sl = Program.server_list; MemoryStream ms = new MemoryStream(6 + 40 * sl.ServerCount); short server_count = (short)sl.ServerCount; ms.WriteByte(0xA8); // Game Server List CMD WriteBE16(ms, (short)(6 + 40*server_count)); // MsgLen ms.WriteByte(0x00); // System Info Flag (0x64: Spy on client, 0xCC: no spy) WriteBE16(ms, server_count); // # of Servers short index = 0; foreach (ServerInfo server in sl.Servers) { if (client.CompareVersionInSARange()) //UO:SA Beta hack WriteBE16(ms, 0x3D); else WriteBE16(ms, index); index++; byte[] name = GetBytes(server.Name, 32); ms.Write(name, 0, 32); // 32 bytes ms.WriteByte(0); // percent full ms.WriteByte(0); // timezone WriteBE(ms, server.ip); } byte[] tmp = ms.ToArray(); ns.Write(tmp, 0, tmp.Length); }
public static void SendConnectGameServer(ref NetworkStream ns, int index, Client client) { MemoryStream ms = new MemoryStream(11); ServerInfo server = Program.server_list.Servers[index]; ms.WriteByte(0x8C); WriteBEflipped(ms, server.ip); WriteBE16(ms, (short)server.port); //Pol like seed ms.WriteByte(0xFE); ms.WriteByte(0xFE); if (client.CompareVersion(Client.VER60142)) ms.WriteByte(0xFD); else if (client.CompareVersionInSARange()) //UO:SA Beta hack (for 0xb9 packet) ms.WriteByte(0xFD); else ms.WriteByte(0xFE); //if (client.isUOKR) // ms.WriteByte(0xFC); //else if (client.CompareVersion(Client.VER6017)) ms.WriteByte(0xFD); else ms.WriteByte(0xFE); byte[] tmp = ms.ToArray(); ns.Write(tmp, 0, tmp.Length); }
public static void ServerSelectPacket(ref NetworkStream ns, Client client) { int index = ReadBE16(ns); if (client.CompareVersionInSARange()) //UO:SA Beta hack index = 0; if (index >= Program.server_list.ServerCount) return; SendConnectGameServer(ref ns, index, client); }