/// <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); // ×ֶδóС }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }