예제 #1
0
        /// <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)));
        }
예제 #2
0
        /// <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 })));
        }
예제 #3
0
        /// <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));
        }
예제 #4
0
        /// <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)));
        }