/// <summary> /// Creates packet for account without characters /// </summary> private static byte[] CreateNewAccountPacket() { var header = new byte[] { 0xb8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0xff, 0x05, 0x11 }; var toReturn = new byte[] { 0x00 }; for (var i = 0; i < 5; i++) { toReturn = i == 0 ? CreateEmptyCharSlot() : CombineByteArray(toReturn, CreateEmptyCharSlot()); } return(CombineByteArray(header, Crypt.Encrypt(toReturn))); }
/// <summary> /// Creates a client side dialog box with a 'OK' button and custom message which exits the game on response from player /// </summary> public static byte[] CreatePopup(string msg) { var header = new byte[] { 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0xff, 0xff, 0x0f, 0x7e, 0x2f, 0x6e, 0x33 }; if (msg.Length > 56) { msg = msg.Substring(0, 56); } var toReturn = CombineByteArray(GetBytesFrom(msg), GetBytesFrom(GetNullString(60 - msg.Length))); return(CombineByteArray(header, CombineByteArray(Crypt.Encrypt(toReturn), new byte[] { 0x00, 0x00 }))); }
/// <summary> /// Creates payment info packet /// </summary> public static byte[] CreatePaymentPacket(int cindex, string charName) { var packet = new byte[] { 0x00, 0x00 }; packet = CombineByteArray(packet, CreateReverseHexPacket(cindex)); var temp = new byte[] { 0x03, 0xff, 0x00, 0x18, 0xf5, 0x58, 0x2b, 0x00, 0x00 }; packet = CombineByteArray(packet, temp); packet = CombineByteArray(packet, GetBytesFrom(charName)); packet = CombineByteArray(packet, GetBytesFrom(GetNullString(21 - charName.Length))); packet = CombineByteArray(packet, GetBytesFrom(Config.ServerName + " is a free server!")); packet = CombineByteArray(packet, GetBytesFrom(GetNullString(13))); packet = CombineByteArray(CreateReverseHexPacket(packet.Length + 2), packet); return(Crypt.Encrypt(packet)); }
/// <summary> /// Creates all character display packet /// </summary> public static byte[] CreateCharacterPacket(string[] chars, string[] levels, string[] types, string[] wears) { if (chars[0] == " ") { return(CreateNewAccountPacket()); } var toReturn = new byte[] { 0x00 }; for (var i = 0; i < chars.Length; i++) { toReturn = i == 0 ? CreateCharDetailPacket(chars[i], Convert.ToInt32(levels[i]), Convert.ToInt32(types[i]), wears[i]) : CombineByteArray(toReturn, chars[i] != " " ? CreateCharDetailPacket(chars[i], Convert.ToInt32(levels[i]), Convert.ToInt32(types[i]), wears[i]) : CreateEmptyCharSlot()); } return(CombineByteArray(new byte[] { 0xb8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0xff, 0x05, 0x11 }, Crypt.Encrypt(toReturn))); }