Пример #1
0
        /// <summary>
        /// Create a packet buffer
        /// </summary>
        /// <returns></returns>
        public byte[] CreateBuff()
        {
            byte[] block = new byte[0x253]; // Create our null byte array
            PacketWriter PW = new PacketWriter(block); // Initialize the writer

            PW.WriteByteArray(0, EngineUtils.PacketUtils.calcPacket(block.Length, 0x920)); // Write the packet header
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0); // Write the string success cmd
            PW.WriteString(39, charname); // Write the character's name, you can use some html code like: <#ff0000> or <glow>

            if(clanid.Length > 4)
            { // Player's clan id must be under 4 letters
                Error.Invoke("Clan id is too long"); // Optional
                PW.WriteString(156, "null"); // Optional
            }
            else
            {
                PW.WriteString(156, clanid);
            } // Write the clan's ID, still don't know what is it exactly, I just use "CL#1", its a 4 lenght string

            PW.WriteString(160, clanname); // Write the clan name
            PW.WriteSByte(0x26, (SByte)chartype); // Choose the desired character (luna, etc..)
            PW.WriteSByte(247, (SByte)_age); // Write the age
            PW.WriteInt16(248, (Int16)_level); // Write the level
            PW.WriteInt16(250, (Int16)_license); // Write the license
            PW.WriteInt32(252, (Int32)zoneid); // Write the country (France, etc...) check the list in mate_zip.txt
            PW.WriteString(256, zoneinfo); // Write the zone info
            PW.WriteString(377, biostr); // Write the bio

            return block;
        }
        /// <summary>
        /// Create 'InventoryItems' packet
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public byte[] CreateBuff()
        {
            byte[] block = new byte[0x118F]; // Create our null byte array
            PacketWriter PW = new PacketWriter(block); // Initialize the writer

            PW.WriteByteArray(0, EngineUtils.PacketUtils.calcPacket(block.Length, 0x833)); // Write the packet header
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0); // Write the string success cmd

            switch (chartype)
            {
                case EngineEnum.PlayerEnum.CharactersType.CHARACTER_ROOKIE:
                    CreateItemList(block, EngineEnum.PlayerEnum.CharactersType.CHARACTER_ROOKIE);
                    break;
                case EngineEnum.PlayerEnum.CharactersType.CHARACTER_LUNA:
                    CreateItemList(block, EngineEnum.PlayerEnum.CharactersType.CHARACTER_LUNA);
                    break;
                case EngineEnum.PlayerEnum.CharactersType.CHARACTER_RUSH:
                    CreateItemList(block, EngineEnum.PlayerEnum.CharactersType.CHARACTER_RUSH);
                    break;
                case EngineEnum.PlayerEnum.CharactersType.CHARACTER_TIPPY:
                    CreateItemList(block, EngineEnum.PlayerEnum.CharactersType.CHARACTER_TIPPY);
                    break;
                case EngineEnum.PlayerEnum.CharactersType.CHARACTER_KLAUS: // There is still no avaiable items for klaus
                case EngineEnum.PlayerEnum.CharactersType.CHARACTER_KARA: // There is still no avaiable items for kara
                    break;
            }

            return block;
        }
Пример #3
0
        /// <summary>
        /// Create 'CashBalance' packet
        /// </summary>
        /// <returns></returns>
        public byte[] CreateBuff()
        {
            byte[] block = new byte[0x21]; // Create our null byte array
            PacketWriter PW = new PacketWriter(block); // Initialize the reader

            PW.WriteByteArray(0, EngineUtils.PacketUtils.calcPacket(block.Length, 0x8E0)); // Create the packet header
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0); // Write the success string cmd
            PW.WriteInt32(29, _gpotatos); // Write the gpotatos number

            return block;
        }
        /// <summary>
        /// Create 'EnterChannel' packet
        /// </summary>
        /// <returns></returns>
        public byte[] CreateBuff()
        {
            byte[] block = new byte[0x20]; // Write our null byte array
            PacketWriter PW = new PacketWriter(block); // Initialize the writer

            PW.WriteByteArray(0, EngineUtils.PacketUtils.calcPacket(block.Length, 0x7D8)); // Write the packet header
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0); // Write the success string cmd
            PW.WriteSByte(29, 1); // Not sure? Selected channel?
            PW.WriteSByte(30, 1); // Not sure? Selected channel?

            return block;
        }
Пример #5
0
        /// <summary>
        /// Create 'LevelInfo' packet
        /// </summary>
        /// <returns></returns>
        public byte[] CreateBuff()
        {
            byte[] block = new byte[0x29]; // Create our null byte array
            PacketWriter PW = new PacketWriter(block); // Initialize the writer

            PW.WriteByteArray(0, EngineUtils.PacketUtils.calcPacket(block.Length, 0x831)); // Write the packet header
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0); // Write the string success cmd
            PW.WriteInt32(29, _exp); // Write the player's experience
            PW.WriteInt32(33, _level); // Write the player's level
            PW.WriteInt32(37, _license); // Write the player's licence number

            return block;
        }
Пример #6
0
        /// <summary>
        /// Create 'PlayerInfo' packet
        /// </summary>
        /// <returns></returns>
        public byte[] CreateBuff()
        {
            byte[] block = new byte[0xD7]; // Create our null byte array
            PacketWriter PW = new PacketWriter(block); // Initialize the writer

            PW.WriteByteArray(0, EngineUtils.PacketUtils.calcPacket(block.Length, 0x90A)); // Write the packet header
            PW.WriteSByte(5, 4); // I don't know yet what is it
            PW.WriteSByte(9, 0x2D); // I don't know yet what is it
            PW.WriteString(11, EngineEnum.PacketEnum.PacketCommand.success_0); // Write the success cmd string
            PW.WriteSByte(41, 5); // I don't know yet what is it
            PW.WriteSByte(45, 1); // I don't know yet what is it
            PW.WriteSByte(47, 0x32); // I don't know yet what is it
            PW.WriteString(49, "ID1_Testo_2"); // I don't know yet what is it
            PW.WriteString(90, "ID1_Test"); // I don't know yet what is it
            PW.WriteSByte(99, 2); // I don't know yet what is it
            PW.WriteSByte(101, 0xC); // I don't know yet what is it
            PW.WriteSByte(103, 5); // I don't know yet what is it
            PW.WriteSByte(105, 5); // I don't know yet what is it
            PW.WriteSByte(107, _level); // Write the player level
            PW.WriteSByte(115, 4); // I don't know yet what is it
            PW.WriteSByte(117, 0xC); // I don't know yet what is it
            PW.WriteSByte(119, 5); // I don't know yet what is it
            PW.WriteInt32(123, 6); // I don't know yet what is it
            PW.WriteInt32(127, 7); // I don't know yet what is it
            PW.WriteSByte(131, 0x40); // I don't know yet what is it
            PW.WriteSByte(133, 0x10); // I don't know yet what is it
            PW.WriteSByte(135, 7); // I don't know yet what is it
            PW.WriteSByte(139, 8); // I don't know yet what is it
            PW.WriteSByte(143, 9); // I don't know yet what is it
            PW.WriteSByte(147, 10); // I don't know yet what is it
            PW.WriteInt16(152, 11266); // I don't know yet what is it
            PW.WriteInt16(200, 3076); // I don't know yet what is it
            PW.WriteSByte(203, 2); // I don't know yet what is it
            PW.WriteSByte(207, 3); // I don't know yet what is it
            PW.WriteSByte(211, 3); // I don't know yet what is it

            return block;
        }
        /// <summary>
        /// Send balance info to the player.
        /// </summary>
        /// <param name="gpotatos"></param>
        /// <returns></returns>
        public static byte[] CashBalance_Buff(Int32 gpotatos)
        {
            byte[] block = new byte[0x21]; // Create the packet's data base
            byte[] c_block = EngineUtils.PacketUtils.calcPacket(0x21, 0x8E0); // Calc the packet's header

            // Initializing the packet writer
            PacketWriter PW = new PacketWriter(block);

            // Write the packet's header
            PW.WriteByteArray(0, c_block);

            // Write the packet's data
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0);
            PW.WriteInt32(29, gpotatos);

            return block;
        }
        /// <summary>
        /// Send balance infos to the client.
        /// </summary>
        /// <param name="coins"></param>
        /// <param name="rupees"></param>
        /// <param name="gpotatos"></param>
        /// <param name="trickpoints"></param>
        /// <returns></returns>
        public static byte[] BalanceInfo_Buff(Int32 coins, Int32 rupees, Int32 gpotatos, Int32 trickpoints)
        {
            byte[] block = new byte[0x2D]; // Create the packet's data base
            byte[] c_block = EngineUtils.PacketUtils.calcPacket(0x2D, 0x82F); // Calc the packet's header

            // Initializing the packet writer
            PacketWriter PW = new PacketWriter(block);

            // Write the packet's header
            PW.WriteByteArray(0, c_block);

            // Write the packet's data
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0);
            PW.WriteSByte(12, 0);
            PW.WriteUInt32(29, (UInt32)rupees);
            PW.WriteUInt32(33, (UInt32)coins);
            PW.WriteUInt32(37, (UInt32)gpotatos);
            PW.WriteUInt32(41, (UInt32)trickpoints);

            return block;
        }
Пример #9
0
        /// <summary>
        /// Create 'TrickList' packet
        /// </summary>
        /// <returns></returns>
        public byte[] CreateBuff()
        {
            byte[] block = new byte[0x95]; // Create our null byte array
            PacketWriter PW = new PacketWriter(block); // Initialize the writer

            PW.WriteByteArray(0, EngineUtils.PacketUtils.calcPacket(block.Length, 0x839)); // Write the packet header
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0); // Write the success string cmd

            // Create our trick list
            Tricks.Add(EngineEnum.PlayerEnum.TrickCode.GRIND);
            Tricks.Add(EngineEnum.PlayerEnum.TrickCode.DASH);
            Tricks.Add(EngineEnum.PlayerEnum.TrickCode.BACK_SKATING);
            Tricks.Add(EngineEnum.PlayerEnum.TrickCode.BUTTING);
            Tricks.Add(EngineEnum.PlayerEnum.TrickCode.POWER_SLIDE);
            Tricks.Add(EngineEnum.PlayerEnum.TrickCode.BACK_FLIP);
            Tricks.Add(EngineEnum.PlayerEnum.TrickCode.FRONT_FLIP);
            Tricks.Add(EngineEnum.PlayerEnum.TrickCode.AIR_TWIST);
            Tricks.Add(EngineEnum.PlayerEnum.TrickCode.POWER_SWING);
            Tricks.Add(EngineEnum.PlayerEnum.TrickCode.GRIP_TURN);
            Tricks.Add(EngineEnum.PlayerEnum.TrickCode.JUMPING_STEER);
            Tricks.Add(EngineEnum.PlayerEnum.TrickCode.POWER_JUMP);
            Tricks.Add(EngineEnum.PlayerEnum.TrickCode.WALL_RIDE);

            PW.WriteSByte(30, 0xD); // Write tricks number

            // Write each trick in our packet
            for (int i = 32, j = 0; i < 149 && j < Tricks.Count; i += 9, j++)
            {
                PW.WriteInt16(i, (Int16)Tricks[j]);
            }
            // Write each trick level in our packet
            for (int i = 0x24, j = 0; i < 0x95 && j < tricksLevel.Count(); i += 9, j++)
            {
                PW.WriteInt32(i, (Int32)tricksLevel[j]);
            }
            // Apply each trick (1/0 - Apply Yes/No)
            for (int i = 40; i < 149; i += 9) // TODO: Put this in the database
            {
                PW.WriteSByte(i, 1);
            }

            return block;
        }
        /// <summary>
        /// Create mate's infos.
        /// </summary>
        /// <param name="char_type"></param>
        /// <param name="char_name"></param>
        /// <param name="clan_name"></param>
        /// <param name="clan_id"></param>
        /// <param name="age"></param>
        /// <param name="level"></param>
        /// <param name="license"></param>
        /// <param name="zone_info"></param>
        /// <param name="zone_id"></param>
        /// <param name="bio_str"></param>
        /// <returns></returns>
        public static byte[] InfoChar_Buff(int char_type, string char_name, string clan_name, string clan_id, int age, int level, short license, string zone_info, int zone_id, string bio_str)
        {
            byte[] block = new byte[0x253]; // Create the packet's data base
            byte[] c_block = EngineUtils.PacketUtils.calcPacket(0x253, 0x920); // Calc the packet's header

            // Initializing the packet writer
            PacketWriter PW = new PacketWriter(block);

            // Write the packet's header
            PW.WriteByteArray(0, c_block);

            // Write the packet's data
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0);
            PW.WriteString(39, char_name); // Write the character's name, you can use some html code like: <#ff0000> or <glow>
            PW.WriteString(156, clan_id); // Write the clan's ID, still don't know what is it exactly, I just use "CL#1", its a 4 lenght string
            PW.WriteString(160, clan_name); // Write the clan name
            PW.WriteSByte(0x26, (SByte)char_type); // Choose the desired character (luna, etc..)
            PW.WriteSByte(247, (SByte)age); // Write the age
            PW.WriteInt16(248, (Int16)level); // Write the level
            PW.WriteInt16(250, (Int16)license); // Write the liscence
            PW.WriteInt32(252, (Int32)zone_id); // Write the zone (France, etc...) check the list in mate_zip.txt
            PW.WriteString(256, zone_info); // Write the zone info
            PW.WriteString(377, bio_str); // Write the bio

            return block;
        }
        /// <summary>
        /// Load inventory items.
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static byte[] Inventory_Buff(EngineEnum.WorldEnum.CharactersType type)
        {
            byte[] block = new byte[0x118F]; // Create the packet's data base
            byte[] c_block = EngineUtils.PacketUtils.calcPacket(0x118F, 0x833); // Calc the packet's header

            // Initializing the packet writer
            PacketWriter PW = new PacketWriter(block);

            // Write the packet's header
            PW.WriteByteArray(0, c_block);

            // Write the packet's data
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0);

            switch(type)
            {
                case EngineEnum.WorldEnum.CharactersType.CHARACTER_ROOKIE:
                    LoadItemList(block, EngineEnum.WorldEnum.CharactersType.CHARACTER_ROOKIE);
                    break;
                case EngineEnum.WorldEnum.CharactersType.CHARACTER_LUNA:
                    LoadItemList(block, EngineEnum.WorldEnum.CharactersType.CHARACTER_LUNA);
                    break;
                case EngineEnum.WorldEnum.CharactersType.CHARACTER_RUSH:
                    LoadItemList(block, EngineEnum.WorldEnum.CharactersType.CHARACTER_RUSH);
                    break;
                case EngineEnum.WorldEnum.CharactersType.CHARACTER_TIPPY:
                    LoadItemList(block, EngineEnum.WorldEnum.CharactersType.CHARACTER_TIPPY);
                    break;
                case EngineEnum.WorldEnum.CharactersType.CHARACTER_KLAUS: // There is still no avaiable items for klaus
                case EngineEnum.WorldEnum.CharactersType.CHARACTER_KARA: // There is still no avaiable items for kara
                    break;
            }

            return block;
        }
Пример #12
0
        /// <summary>
        /// Create 'ServerList' packet
        /// </summary>
        /// <returns></returns>
        public byte[] CreateBuff()
        {
            byte[] block = new byte[0x4F]; // Create our null byte array
            PacketWriter PW = new PacketWriter(block); // Initialize the writer

            PW.WriteByteArray(0, EngineUtils.PacketUtils.calcPacket(block.Length, 0x3F4)); // Write the packet header
            PW.WriteSByte(5, 1); // I don't know what is it
            PW.WriteSByte(7, serverid); // Write the server id number - Int16?
            PW.WriteSByte(9, 2); // I don't know what is it
            PW.WriteSByte(11, 3); // I don't know what is it
            PW.WriteSByte(13, 4); // I don't know what is it
            PW.WriteString(15, _ip); // Write the msg ip
            PW.WriteString(31, _ip); // Write the lobby ip
            PW.WriteString(47, _ip); // Write the mmo ip
            PW.WriteInt16(63, (Int16)lobbyport); // Write the lobby port
            PW.WriteInt16(67, (Int16)msgport); // Write the msg port
            PW.WriteInt16(71, (Int16)mmoport); // Write the mmo port
            PW.WriteInt16(75, (Int16)unkclientnumb); // Still don't know what is it, something to do with players
            PW.WriteInt16(77, (Int16)maximumusers); // Write maximum users that can join the server

            return block;
        }
        /// <summary>
        /// Create a channel list (only one channel at the moment).
        /// </summary>
        /// <param name="channel_name"></param>
        /// <returns></returns>
        public static byte[] ChannelList_Buff(string channel_name)
        {
            byte[] block = new byte[0x40]; // Create the packet's data base
            byte[] c_block = EngineUtils.PacketUtils.calcPacket(0x40, 0x7D6); // Calc the packet's header

            // Initializing the packet writer
            PacketWriter PW = new PacketWriter(block);

            // Write the packet's header
            PW.WriteByteArray(0, c_block);

            // Write the packet's data
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0);
            PW.WriteUInt16(29, 1);
            PW.WriteUInt16(31, 1);
            PW.WriteString(32, channel_name);
            PW.WriteUInt32(44, 5);
            PW.WriteUInt32(48, 6);
            PW.WriteUInt32(52, 7);
            PW.WriteUInt32(56, 9);
            PW.WriteUInt32(60, 10);

            if(channel_name.Length > 11) {
                EngineConsole.Log.Error("channel name too long");
            }

            return block;
        }
        /// <summary>
        /// Used to log the user.
        /// </summary>
        /// <param name="auth_key"></param>
        /// <returns></returns>
        public static byte[] Login_Buff(string auth_key)
        {
            byte[] block = new byte[0x2F]; // Create the packet's data base
            byte[] c_block = EngineUtils.PacketUtils.calcPacket(0x2F, 0x3F1); // Calc our packet header..

            // Initialize the packet writer
            PacketWriter PW = new PacketWriter(block);

            // Write the packet's header stack
            PW.WriteByteArray(0, c_block);

            // Write the packet's data stack
            PW.WriteSByte(5, 1); // I don't know what is it
            PW.WriteString(9, auth_key); // Write the player's auth key
            PW.WriteInt32(42, 700); // I don't know what is it
            PW.WriteSByte(46, 1); // I don't know what is it

            return block;
        }
        /// <summary>
        /// Create a trick list.
        /// </summary>
        /// <param name="grind_level"></param>
        /// <param name="backflip_level"></param>
        /// <param name="frontflip_level"></param>
        /// <param name="airtwist_level"></param>
        /// <param name="powerswing_level"></param>
        /// <param name="gripturn_level"></param>
        /// <param name="dash_level"></param>
        /// <param name="backskating_level"></param>
        /// <param name="jumpingsteer_level"></param>
        /// <param name="butting_level"></param>
        /// <param name="powerslide_level"></param>
        /// <param name="powerjump_level"></param>
        /// <param name="wallride_level"></param>
        /// <returns></returns>
        public static byte[] TrickList_Buff(int grind_level, int backflip_level, int frontflip_level, int airtwist_level, int powerswing_level, int gripturn_level, int dash_level, int backskating_level, int jumpingsteer_level, int butting_level, int powerslide_level, int powerjump_level, int wallride_level)
        {
            byte[] block = new byte[0x95]; // Create the packet's data base
            byte[] c_block = EngineUtils.PacketUtils.calcPacket(0x95, 0x839); // Calc the packet's header

            // Initializing the packet writer
            PacketWriter PW = new PacketWriter(block);

            // Write the packet's header
            PW.WriteByteArray(0, c_block);

            // Write the packet's data
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0);

            // Write the trick list
            PW.WriteSByte(30, 0xD); // Tricks number
            PW.WriteInt16(32, (Int16)EngineEnum.WorldEnum.TrickCode.GRIND);
            PW.WriteSByte(40, 1); // Apply the trick
            PW.WriteInt16(41, (Int16)EngineEnum.WorldEnum.TrickCode.DASH);
            PW.WriteSByte(49, 1); // Apply the trick
            PW.WriteInt16(50, (Int16)EngineEnum.WorldEnum.TrickCode.BACK_SKATING);
            PW.WriteSByte(58, 1); // Apply the trick
            PW.WriteInt16(59, (Int16)EngineEnum.WorldEnum.TrickCode.BUTTING);
            PW.WriteSByte(67, 1); // Apply the trick
            PW.WriteInt16(68, (Int16)EngineEnum.WorldEnum.TrickCode.POWER_SLIDE);
            PW.WriteSByte(76, 1); // Apply the trick
            PW.WriteInt16(77, (Int16)EngineEnum.WorldEnum.TrickCode.BACK_FLIP);
            PW.WriteSByte(85, 1); // Apply the trick
            PW.WriteInt16(86, (Int16)EngineEnum.WorldEnum.TrickCode.FRONT_FLIP);
            PW.WriteSByte(94, 1); // Apply the trick
            PW.WriteInt16(95, (Int16)EngineEnum.WorldEnum.TrickCode.AIR_TWIST);
            PW.WriteSByte(103, 1); // Apply the trick
            PW.WriteInt16(104, (Int16)EngineEnum.WorldEnum.TrickCode.POWER_SWING);
            PW.WriteSByte(112, 1); // Apply the trick
            PW.WriteInt16(113, (Int16)EngineEnum.WorldEnum.TrickCode.GRIP_TURN);
            PW.WriteSByte(121, 1); // Apply the trick
            PW.WriteInt16(122, (Int16)EngineEnum.WorldEnum.TrickCode.JUMPING_STEER);
            PW.WriteSByte(130, 1); // Apply the trick
            PW.WriteInt16(131, (Int16)EngineEnum.WorldEnum.TrickCode.POWER_JUMP);
            PW.WriteSByte(139, 1); // Apply the trick
            PW.WriteInt16(140, (Int16)EngineEnum.WorldEnum.TrickCode.WALL_RIDE);
            PW.WriteSByte(148, 1); // Apply the trick

            // Write trick levels
            PW.WriteInt32(0x24, grind_level);
            PW.WriteInt32(0x2D, dash_level);
            PW.WriteInt32(0x36, backskating_level);
            PW.WriteInt32(0x3F, butting_level);
            PW.WriteInt32(0x48, powerslide_level);
            PW.WriteInt32(0x51, backflip_level);
            PW.WriteInt32(0x5A, frontflip_level);
            PW.WriteInt32(0x63, airtwist_level);
            PW.WriteInt32(0x6C, powerswing_level);
            PW.WriteInt32(0x75, gripturn_level);
            PW.WriteInt32(0x7E, powerjump_level);
            PW.WriteInt32(0x87, wallride_level);
            PW.WriteInt32(0x90, gripturn_level);

            return block;
        }
        /// <summary>
        /// Enter in Park Town.
        /// </summary>
        /// <returns></returns>
        public static byte[] EnterChannel_Buff()
        {
            byte[] block = new byte[0x20]; // Create the packet's data base
            byte[] c_block = EngineUtils.PacketUtils.calcPacket(0x20, 0x7D8); // Calc the packet's header

            // Initializing the packet writer
            PacketWriter PW = new PacketWriter(block);

            // Write the packet's header
            PW.WriteByteArray(0, c_block);

            // Write the packet's data
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0);
            PW.WriteSByte(29, 1);
            PW.WriteSByte(30, 1);

            return block;
        }
        /// <summary>
        /// Create the server list.
        /// </summary>
        /// <param name="ip"></param>
        /// <param name="lobby_port"></param>
        /// <param name="msg_port"></param>
        /// <param name="mmo_port"></param>
        /// <param name="unk_clientnumb"></param>
        /// <param name="unk_clientnumb_2"></param>
        /// <returns></returns>
        public static byte[] ServerList_Buff(string ip, int msg_port, int lobby_port, int mmo_port, Int16 unk_clientnumb, Int16 unk_clientnumb_2)
        {
            byte[] block = new byte[0x4F]; // Create the packet's data base
            byte[] c_block = EngineUtils.PacketUtils.calcPacket(0x4F, 0x3F4); // Calc our packet header..

            // Initialize the packet writer
            PacketWriter PW = new PacketWriter(block);

            // Write the packet's header stack
            PW.WriteByteArray(0, c_block);

            // Write the packet's data stack
            PW.WriteSByte(5, 1); // I don't know what is it
            PW.WriteSByte(7, 100); // I don't know what is it
            PW.WriteSByte(9, 2); // I don't know what is it
            PW.WriteSByte(11, 3); // I don't know what is it
            PW.WriteSByte(13, 4); // I don't know what is it
            PW.WriteString(15, ip); // Write the lobby ip
            PW.WriteString(31, ip); // Write the mmo ip
            PW.WriteString(47, ip); // Write the msg ip
            PW.WriteInt16(63, (Int16)lobby_port); // Write the lobby port
            PW.WriteInt16(67, (Int16)msg_port); // Write the msg port
            PW.WriteInt16(71, (Int16)mmo_port); // Write the mmo port
            PW.WriteInt16(75, (Int16)unk_clientnumb); // Still don't know what is it, something to do with players
            PW.WriteInt16(77, (Int16)unk_clientnumb_2); // Still don't know what is it, something to do with players

            return block;
        }
        /// <summary>
        /// Still don't really know what can do this packet.
        /// </summary>
        /// <returns></returns>
        public static byte[] PlayerInfo_Buff()
        {
            byte[] block = new byte[0xD7]; // Create the packet's data base
            byte[] c_block = EngineUtils.PacketUtils.calcPacket(0xD7, 0x90A); // Calc the packet's header

            // Initializing the packet writer
            PacketWriter PW = new PacketWriter(block);

            // Write the packet's header
            PW.WriteByteArray(0, c_block);

            // Write the packet's data
            PW.WriteSByte(5, 4);
            PW.WriteSByte(9, 0x2D);
            PW.WriteString(11, EngineEnum.PacketEnum.PacketCommand.success_0);
            PW.WriteSByte(41, 5);
            PW.WriteSByte(45, 1);
            PW.WriteSByte(47, 0x32);
            PW.WriteString(49, "ID1_Testo_2"); // Thanks itsexe :)
            PW.WriteString(90, "ID1_Test"); // Thanks itsexe :)
            PW.WriteSByte(99, 2);
            PW.WriteSByte(101, 0xC);
            PW.WriteSByte(103, 5);
            PW.WriteSByte(105, 5);
            PW.WriteSByte(107, 45);
            PW.WriteSByte(115, 4);
            PW.WriteSByte(117, 0xC);
            PW.WriteSByte(119, 5);
            PW.WriteInt32(123, 6);
            PW.WriteInt32(127, 7);
            PW.WriteSByte(131, 0x40);
            PW.WriteSByte(133, 0x10);
            PW.WriteSByte(135, 7);
            PW.WriteSByte(139, 8);
            PW.WriteSByte(143, 9);
            PW.WriteSByte(147, 10);
            PW.WriteInt16(152, 11266);
            PW.WriteInt16(200, 3076);
            PW.WriteSByte(203, 2);
            PW.WriteSByte(207, 3);
            PW.WriteSByte(211, 3);

            return block;
        }
        /// <summary>
        /// Create a player character list.
        /// </summary>
        /// <param name="isFirstTime"></param>
        /// <param name="char_type"></param>
        /// <param name="char_name"></param>
        /// <returns></returns>
        public static byte[] PlayerCharacterList_Buff(bool isFirstTime, EngineEnum.WorldEnum.CharactersType char_type, string char_name)
        {
            byte[] block = new byte[0x120]; // Create the packet's data base
            byte[] c_block = EngineUtils.PacketUtils.calcPacket(0x120, 0x90E); // Calc the packet's header

            // Initializing the packet writer
            PacketWriter PW = new PacketWriter(block);

            // Write the packet's header
            PW.WriteByteArray(0, c_block);

            // Write the packet's data
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0);
            PW.WriteString(30, char_name); // Write the character's name, you can use some html code like: <#ff0000> or <glow>
            PW.WriteInt32(73, isFirstTime ? 1 : 0); // Create a character/or no
            PW.WriteUInt32(75, 0); // I don't know what is it
            PW.WriteUInt32(79, (UInt32)char_type); // Choose the desired character (luna, etc..)
            PW.WriteUInt32(83, 0); // I don't know what is it

            return block;
        }
        /// <summary>
        /// Response used many times.
        /// </summary>
        /// <param name="header"></param>
        /// <returns></returns>
        public static byte[] SetSuccess(short header)
        {
            byte[] block = new byte[0x0D]; // Create the packet's data base
            byte[] c_block = EngineUtils.PacketUtils.calcPacket(0x0D, header); // Calc the packet's header

            // Initializing the packet writer
            PacketWriter PW = new PacketWriter(block);

            // Write the packet's header
            PW.WriteByteArray(0, c_block);

            // Write the packet's data
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0);

            return block;
        }
        /// <summary>
        /// Send level infos to the client.
        /// </summary>
        /// <param name="level"></param>
        /// <param name="license"></param>
        /// <param name="exp"></param>
        /// <returns></returns>
        public static byte[] LevelInfo_Buff(Int32 level, Int32 license, Int32 exp)
        {
            byte[] block = new byte[0x29]; // Create the packet's data base
            byte[] c_block = EngineUtils.PacketUtils.calcPacket(0x29, 0x831); // Calc the packet's header

            // Initializing the packet writer
            PacketWriter PW = new PacketWriter(block);

            // Write the packet's header
            PW.WriteByteArray(0, c_block);

            // Write the packet's data
            PW.WriteString(5, EngineEnum.PacketEnum.PacketCommand.success_0);
            PW.WriteInt32(29, exp);
            PW.WriteInt32(33, level);
            PW.WriteInt32(37, license);

            return block;
        }