Example #1
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 #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 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 #4
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 #5
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 #6
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 #7
0
        /// <summary>
        ///
        /// </summary>
        public void EndWrite(uint iUpdateCount)
        {
            WriterStream.Seek(4, SeekOrigin.Begin);
            WriterStream.Write((uint)iUpdateCount);

            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)ByteOrder.NetToHost((ushort)(WriterStream.Length - 2 /*Size本身的大小*/)));
        }
Example #8
0
        /// <summary>
        ///
        /// </summary>
        public Zone_RemoveCurrentZone()
            : base((long)ZoneOpCodeToZoneCluster.CMSG_REMOVE_CURRENT_ZONE, 0 /*4 + ?*/)
        {
            WriterStream.Write((ushort)0 /*4 + ?*/);        // 字段大小
            WriterStream.Write((ushort)base.PacketID);      // 字段编号


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #9
0
        /// <summary>
        ///
        /// </summary>
        public ZoneCluster_LoginDomain(string strDomainPassword, string strZoneClusterPassword)
            : base((long)ZoneClusterOpCodeToDomain.CMSG_LOGIN_DOMAIN, 0 /*4 + ?*/)
        {
            WriterStream.Write((ushort)0 /*4 + ?*/);        // 字段大小
            WriterStream.Write((ushort)base.PacketID);      // 字段编号

            WriterStream.WriteUTF8Null(strDomainPassword);
            WriterStream.WriteUTF8Null(strZoneClusterPassword);

            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #10
0
        /// <summary>
        ///
        /// </summary>
        public Word_TradeStatus(uint uiTradeStatus)
            : base((long)WordOpCode.SMSG_TRADE_STATUS, 0)
        {
            WriterStream.Write((ushort)0 /* 2 + ? */);                // Size
            WriterStream.Write((ushort)WordOpCode.SMSG_TRADE_STATUS); // ID
            //////////////////////////////////////////////////////////////////////////

            WriterStream.Write((uint)uiTradeStatus);

            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)ByteOrder.NetToHost((ushort)(WriterStream.Length - 2 /*Size本身的大小*/)));
        }
Example #11
0
        /// <summary>
        ///
        /// </summary>
        public Word_CharRenameResponseError(byte errorInfo)
            : base((long)WordOpCode.SMSG_CHAR_RENAME, 0)
        {
            WriterStream.Write((ushort)0 /* 2 + ? */);                    // Size
            WriterStream.Write((ushort)WordOpCode.SMSG_CHAR_RENAME);      // ID
            //////////////////////////////////////////////////////////////////////////

            WriterStream.Write((byte)errorInfo);

            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)ByteOrder.NetToHost((ushort)(WriterStream.Length - 2 /*Size本身的大小*/)));
        }
Example #12
0
        /// <summary>
        ///
        /// </summary>
        public Word_CharCreateResponse(  )
            : base((long)WordOpCode.SMSG_CHAR_CREATE, 0)
        {
            WriterStream.Write((ushort)0 /* 2 + ? */);                // Size
            WriterStream.Write((ushort)WordOpCode.SMSG_CHAR_CREATE);  // ID
            //////////////////////////////////////////////////////////////////////////

            WriterStream.Write((byte)ResponseCodes.CHAR_CREATE_SUCCESS);

            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)ByteOrder.NetToHost((ushort)(WriterStream.Length - 2 /*Size本身的大小*/)));
        }
Example #13
0
        /// <summary>
        ///
        /// </summary>
        public Zone_LoginZoneCluster(string strZoneClusterPassword, string strZonePassword)
            : base((long)ZoneOpCodeToZoneCluster.CMSG_LOGIN_ZONE_CLUSTER, 0 /*4 + ?*/)
        {
            WriterStream.Write((ushort)0 /*4 + ?*/);        // 字段大小
            WriterStream.Write((ushort)base.PacketID);      // 字段编号

            WriterStream.WriteUTF8Null(strZoneClusterPassword);
            WriterStream.WriteUTF8Null(strZonePassword);

            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #14
0
        /// <summary>
        ///
        /// </summary>
        public Realm_RequestSession(long iLoginId, string strAccountName)
            : base((long)RealmOpCode.SMSG_REQUEST_SESSION, 0)
        {
            WriterStream.Write((byte)RealmOpCode.SMSG_REQUEST_SESSION);
            WriterStream.Write((ushort)0);
            //////////////////////////////////////////////////////////////////////////

            WriterStream.Write((uint)iLoginId);
            WriterStream.WriteUTF8Null(strAccountName);

            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(1, SeekOrigin.Begin);
            WriterStream.Write((ushort)(WriterStream.Length - ProcessNet.REALM_HEAD_SIZE));
        }
Example #15
0
        /// <summary>
        ///
        /// </summary>
        public Word_AddonInfo(byte[] unPacked)
            : base((long)WordOpCode.SMSG_ADDON_INFO, 0)
        {
            WriterStream.Write((ushort)0 /* 2 + 4 */);                 // Size
            WriterStream.Write((ushort)WordOpCode.SMSG_ADDON_INFO);    // ID
            //////////////////////////////////////////////////////////////////////////

            string name    = string.Empty;
            ushort Enable  = 0; // based on the parsed files from retool
            uint   crc     = 0;
            uint   unknown = 0;

            PacketReader packetReader = new PacketReader(unPacked, unPacked.Length, 0);

            while (packetReader.Position < packetReader.Size)
            {
                name    = packetReader.ReadUTF8StringSafe();
                Enable  = packetReader.ReadUInt16();
                crc     = packetReader.ReadUInt32();
                unknown = packetReader.ReadUInt32();

                if (name == null || name == string.Empty)
                {
                    continue;
                }

                LOGs.WriteLine(LogMessageType.MSG_HACK, "Word_AddonInfo...... {0} {1} {2} {3} {4} {5}", name, Enable, crc, unknown, packetReader.Position, packetReader.Size);

                // Hacky fix, Yea I know its a hacky fix I will make a proper handler one's I got the crc crap
                //if ( crc != 0x4C1C776D ) // CRC of public key version 2.0.1
                {
                    //LOGs.WriteLine( LogMessageType.MSG_HACK, "Word_AddonInfo...... 0 " );
                    //WriterStream.Write( PublicKey, 0, PublicKey.Length/*264 大小*/ ); // part of the hacky fix
                }
                //else
                {
                    LOGs.WriteLine(LogMessageType.MSG_HACK, "Word_AddonInfo...... 1 ");
                    WriterStream.Write((byte)0x02);
                    WriterStream.Write((byte)0x01);
                    WriterStream.Write((byte)0x00);
                    WriterStream.Write((uint)0x00);
                    WriterStream.Write((byte)0x00);
                }
            }

            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)ByteOrder.NetToHost((ushort)(WriterStream.Length - 2 /*Size本身的大小*/)));
        }
Example #16
0
        /// <summary>
        ///
        /// </summary>
        public Word_ChannelNumMembersQueryResponse(string strChannelName, byte bFlags, uint uiNumMembers)
            : base((long)WordOpCode.SMSG_CHANNEL_NUM_MEMBERS_QUERY_RESPONSE, 0)
        {
            WriterStream.Write((ushort)0 /* 2 + ? */);                                      // Size
            WriterStream.Write((ushort)WordOpCode.SMSG_CHANNEL_NUM_MEMBERS_QUERY_RESPONSE); // ID
            //////////////////////////////////////////////////////////////////////////

            WriterStream.WriteUTF8Null(strChannelName);
            WriterStream.Write((byte)bFlags);
            WriterStream.Write((uint)uiNumMembers);

            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)ByteOrder.NetToHost((ushort)(WriterStream.Length - 2 /*Size本身的大小*/)));
        }
Example #17
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 #18
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 #19
0
        /// <summary>
        ///
        /// </summary>
        internal Unknown0x07E5_Action0x01Ack()
            : base(0x7E5, 9 /*6 + 3*/)
        {
            WriterStream.Write((ushort)9 /*6 + 3*/);        // ×ֶδóС
            WriterStream.Write((ushort)base.PacketID);      // ×ֶαàºÅ
            WriterStream.Write((ushort)0x00);               // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write((byte)0x01);
            WriterStream.Write((ushort)0x0000);


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(0, SeekOrigin.Begin);
            WriterStream.Write((ushort)WriterStream.Length);
        }
Example #20
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 #21
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 #22
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 #23
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 #24
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 #25
0
        /// <summary>
        ///
        /// </summary>
        public Realm_LoginRealmServer()
            : base((long)RealmOpCode.SMSG_REGISTER_REALM, 0)
        {
            WriterStream.Write((byte)RealmOpCode.SMSG_REGISTER_REALM);
            WriterStream.Write((ushort)0);
            //////////////////////////////////////////////////////////////////////////

            WriterStream.WriteUTF8Null(ProcessServer.ConfigInfo.WowConfig.WorldName);
            WriterStream.WriteUTF8Null(ProcessServer.ConfigInfo.WowConfig.WorldServerHost + ":" + ProcessServer.ConfigInfo.WowConfig.WorldServerPort.ToString());
            WriterStream.WriteUTF8Null(ProcessServer.ConfigInfo.WowConfig.Icon);
            WriterStream.Write((uint)ProcessServer.ConfigInfo.WowConfig.Colour);
            WriterStream.Write((uint)ProcessServer.ConfigInfo.WowConfig.TimeZone);
            WriterStream.Write((float)ProcessServer.ConfigInfo.WowConfig.Population);

            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek(1, SeekOrigin.Begin);
            WriterStream.Write((ushort)(WriterStream.Length - ProcessNet.REALM_HEAD_SIZE));
        }
Example #26
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 #27
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 #28
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 #29
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 #30
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);
        }