Example #1
0
        /// <summary>
        ///
        /// </summary>
        internal AccountLoginAck(ServerInfo[] serverInfo)
            : base(0x708, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((uint)0x0C000000);
            WriterStream.Write((sbyte)0x0);

            // дÈëChannelsÐÅÏ¢
            for (int iIndex = 0; iIndex < serverInfo.Length; iIndex++)
            {
                WriterStream.Write((sbyte)(48 + iIndex));
                WriterStream.WriteAsciiNull(serverInfo[iIndex].ServerName);
                WriterStream.Write((int)serverInfo[iIndex].ServerGuid);
            }


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);       // ×ֶδóС
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        internal Friend0x7E1_Action0x06_Ack(Friend[] friendListArray)
            : base(0x7E1, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((byte)0x06);
            WriterStream.Write((byte)friendListArray.Length);

            foreach (Friend friendList in friendListArray)
            {
                WriterStream.Write((ushort)friendList.FriendGuid);
                WriterStream.Write((ushort)0x0000);

                if (friendList.IsOnline == true)      // is Online ??
                {
                    WriterStream.Write((byte)0x07);   // Online
                }
                else
                {
                    WriterStream.Write((byte)0x08);             // Offline
                }
                WriterStream.WriteAsciiNull(friendList.FriendName);
            }

            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        internal GetServerNameListAck(ServerInfo[] serverInfo, int iChannelGuid)
            : base(0x704, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((int)iChannelGuid);
            WriterStream.Write((sbyte)serverInfo.Length);

            for (int iIndex = 0; iIndex < serverInfo.Length; iIndex++)
            {
                WriterStream.Write((ushort)serverInfo[iIndex].ServerGuid);

                WriterStream.Write((sbyte)0x0);
                WriterStream.Write((ushort)0x0);

                WriterStream.WriteAsciiNull(serverInfo[iIndex].ServerName);
            }


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #4
0
        /// <summary>
        ///
        /// </summary>
        internal Clan0x7E0_Action0x30_Ack(long iClientId, long iClanRank, Clan clan)
            : base(0x7E0, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((byte)0x30);        //
            WriterStream.Write((ushort)iClientId); //
            WriterStream.Write((ushort)0x0100);    //
            WriterStream.Write((ushort)clan.Back); // clan background
            WriterStream.Write((ushort)clan.Logo); // clanlogo
            WriterStream.Write((byte)0x01);        //clan grade
            WriterStream.Write((byte)iClanRank);   // clan rank

            for (int iIndex = 0; iIndex < 146; iIndex++)
            {
                WriterStream.Write((byte)0x00);   // clan skills
            }
            WriterStream.WriteAsciiNull(clan.ClanName);
            WriterStream.Write((byte)0x00);           //
            WriterStream.Write((ushort)0x0000);       //
            WriterStream.Write((ushort)0x0000);       //
            WriterStream.Write((ushort)0x0000);       //
            WriterStream.Write((ushort)0x0000);       //
            WriterStream.WriteAsciiNull(clan.Slogan); // clan slogan


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #5
0
        /// <summary>
        ///
        /// </summary>
        internal Clan0x7E0_Action0x72_Ack(ClanMember[] clanMembers)
            : base(0x7E0, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            if (clanMembers == null && clanMembers.Length == 0)
            {
                WriterStream.Write((byte)0x0F);
                WriterStream.Write((uint)0x00000001);
            }
            else
            {
                WriterStream.Write((byte)0x72);     // Send clan members

                foreach (ClanMember clanMember in clanMembers)
                {
                    WriterStream.Write((byte)clanMember.ClanRank);    //clan rank
                    WriterStream.Write((byte)clanMember.ServerGuid);  //channel (0xff = offline) //channel (0x01 = channel 1)
                    WriterStream.Write((ushort)0x0000);
                    WriterStream.Write((ushort)0x0000);
                    WriterStream.Write((ushort)clanMember.Level);
                    WriterStream.Write((ushort)clanMember.ClassId);
                    WriterStream.WriteAsciiNull(clanMember.CharacterName);
                }
            }


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #6
0
        /// <summary>
        ///
        /// </summary>
        internal MessengerChatAck(long charid, string strName, string strMessage)
            : base(0x7E2, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((ushort)charid);
            WriterStream.Write((ushort)0x0000);

            long beginPosition = WriterStream.Position;

            WriterStream.WriteAsciiNull(strName);

            long endPosition = WriterStream.Position;

            long nameSize = endPosition - beginPosition;

            for (int iIndex = 0; iIndex < 31 - nameSize; iIndex++)
            {
                WriterStream.Write((byte)0x00);
            }

            WriterStream.WriteAsciiNull(strMessage);   //


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #7
0
        /// <summary>
        ///
        /// </summary>
        internal Friend0x7E1_Action0x04_Ack(string strName)
            : base(0x7E1, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((byte)0x04);
            WriterStream.WriteAsciiNull(strName);


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #8
0
        /// <summary>
        ///
        /// </summary>
        internal Clan0x7E0_Action0x82_Ack(string strName)
            : base(0x7E0, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((byte)0x82);   // Leave Clan
            WriterStream.WriteAsciiNull(strName);


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #9
0
        /// <summary>
        ///
        /// </summary>
        internal Clan0x7E0_Action0x34_Ack(string strNews)
            : base(0x7E0, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((byte)0x34);  // Change news
            WriterStream.WriteAsciiNull(strNews);


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #10
0
        /// <summary>
        ///
        /// </summary>
        internal ClanChatAck(string strName, string strText)
            : base(0x787, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.WriteAsciiNull(strName);
            WriterStream.WriteAsciiNull(strText);   //


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #11
0
        /// <summary>
        ///
        /// </summary>
        internal DeleteCharacterAck(string strCharacterName, uint iDeleteTime)
            : base(0x0714, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((uint)iDeleteTime);
            WriterStream.WriteAsciiNull(strCharacterName);


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #12
0
        /// <summary>
        ///
        /// </summary>
        internal Clan0x7E0_Action0x81_Ack(string strKickName, string strCharName)
            : base(0x7E0, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((byte)0x81);     // xxx have kicket to yyyy
            WriterStream.WriteAsciiNull(strKickName);
            WriterStream.WriteAsciiNull(strCharName);


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #13
0
        /// <summary>
        ///
        /// </summary>
        internal Clan0x7E0_Action0x83_Ack(string strCharName, long iRank)
            : base(0x7E0, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((byte)0x83);   // up/down rank
            WriterStream.WriteAsciiNull(strCharName);
            WriterStream.Write((uint)iRank);


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #14
0
        /// <summary>
        ///
        /// </summary>
        internal Clan0x7E0_Action0x84_Ack(long iLevel, long iClassId, string strName)
            : base(0x7E0, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((byte)0x84);   //
            WriterStream.Write((ushort)iLevel);
            WriterStream.Write((ushort)iClassId);
            WriterStream.WriteAsciiNull(strName);


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #15
0
        /// <summary>
        ///
        /// </summary>
        internal RequestWorldAck(IPEndPoint ipEndPoint, long iAccountsGuid)
            : base(0x711, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((ushort)ipEndPoint.Port);
            WriterStream.Write((uint)iAccountsGuid);
            WriterStream.Write((uint)0x87654321);
            WriterStream.WriteAsciiNull(ipEndPoint.Address.ToString());


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #16
0
        /// <summary>
        ///
        /// </summary>
        internal GetCharactersAck(PacketCharacter[] characterArray) : base(0x0712, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС(Ö»°üÀ¨ÈËÎïµÄÊýÁ¿£¬ÏêϸÊý¾Ý²»ËµÃ÷)
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((sbyte)characterArray.Length);

            for (int iIndex = 0; iIndex < characterArray.Length; iIndex++)
            {
                WriterStream.WriteAsciiNull(characterArray[iIndex].m_CharacterName);    // Character Name
                WriterStream.Write((sbyte)characterArray[iIndex].m_Sex);                // SEX
                WriterStream.Write((ushort)characterArray[iIndex].m_Level);             // LEVEL
                WriterStream.Write((ushort)characterArray[iIndex].m_ClassID);           // CLASS ID
                WriterStream.Write((uint)characterArray[iIndex].m_DeleteTime);          // DELETE TIME
                WriterStream.Write((sbyte)0x00);                                        // IS PLATINUM?  00-NO;01-YES;02-YES BUT USER IS NOT
                WriterStream.Write((uint)characterArray[iIndex].m_Face);                // FACE
                WriterStream.Write((uint)characterArray[iIndex].m_HairStyle);           // HAIR
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[2].m_ItemID);  // CAP
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[2].m_Refine);  // CAP REFINE
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[3].m_ItemID);  // BODY
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[3].m_Refine);  // BODY REFINE
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[5].m_ItemID);  // GLOVES
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[5].m_Refine);  // GLOVES REFINE
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[6].m_ItemID);  // BOOTS
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[6].m_Refine);  // BOOTS REFINE
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[1].m_ItemID);  // FACE
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[1].m_Refine);  // FACE REFINE
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[4].m_ItemID);  // BACK
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[4].m_Refine);  // BACK REFINE
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[7].m_ItemID);  // WEAPON
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[7].m_Refine);  // WEAPON REFINE
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[8].m_ItemID);  // SUBWEAPON
                WriterStream.Write((ushort)characterArray[iIndex].m_Item[8].m_Refine);  // SUBWEAPON REFINE
            }


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #17
0
        /// <summary>
        ///
        /// </summary>
        internal GetServerIPAck(ServerInfo serverInfo, int iAccountsGuid)
            : base(0x70A, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((sbyte)serverInfo.FullPercent);
            WriterStream.Write((uint)iAccountsGuid);
            WriterStream.Write((uint)0x87654321);
            WriterStream.WriteAsciiNull(serverInfo.Address.Address.ToString());
            WriterStream.Write((ushort)serverInfo.Address.Port);


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #18
0
        /// <summary>
        ///
        /// </summary>
        internal Clan0x7E0_Action0x33_Ack(Clan clan, long iClanRank)
            : base(0x7E0, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((byte)0x33);                 // 0x33 you have invited to clan
            WriterStream.Write((ushort)0x09CF);
            WriterStream.Write((byte)0x00);
            WriterStream.Write((byte)0x00);

            WriterStream.Write((ushort)clan.Back);        // Clan Background
            WriterStream.Write((ushort)clan.Logo);        // Clan logo
            WriterStream.Write((byte)clan.Grade);         // Clan grade
            WriterStream.Write((byte)iClanRank);          // Clan rank (0 = red rokie / 6 = master)
            WriterStream.Write((byte)clan.CP);            // Clan Points
            WriterStream.Write((uint)0x00000000);
            WriterStream.Write((uint)0x00000000);         // Clan found
            WriterStream.Write((byte)0x00);
            WriterStream.Write((uint)0x00000000);
            WriterStream.Write((ushort)0x0000);

            for (int iIndex = 34; iIndex < 156; iIndex++)
            {
                WriterStream.Write((byte)0x00);
            }

            WriterStream.Write((ushort)0x0000);
            WriterStream.Write((byte)0x00);
            WriterStream.WriteAsciiNull(clan.ClanName);
            WriterStream.WriteAsciiNull(clan.Slogan);
            WriterStream.WriteAsciiNull(clan.News);


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #19
0
        /// <summary>
        ///
        /// </summary>
        internal Clan0x7E0_Action0x75_Ack(long iRank, long iServerGuid, long iLevel, long iJob, string strCharName)
            : base(0x7E0, 0 /*6 + ?*/)
        {
            WriterStream.Write((ushort)0 /*6 + ?*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((byte)0x75);        // up rank
            WriterStream.Write((byte)iRank);       //
            WriterStream.Write((byte)iServerGuid); // channel
            WriterStream.Write((short)0x0000);     //
            WriterStream.Write((short)0x0000);     //
            WriterStream.Write((short)iLevel);     //
            WriterStream.Write((short)iJob);       //
            WriterStream.WriteAsciiNull(strCharName);


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }