OP_ChannelMessage (Client->Server), work in progress.
Main Bottleneck is at the very bottom. 		
//TODO: Reading ChannelMessage string is suppose to be variable sized and not a 64 FixedLengthString.
Client->Server Packet logs
	Quote:
	
	
		
			
				[04-22-2016 :: 15:07:44] [Packet :: Client -> Server] [OP_ChannelMessage - 0x0045] [Size: 286] 
[04-22-2016 :: 15:07:44] [Packet :: Client -> Server (Dump)] [OP_ChannelMessage - 0x0045] [Size: 286]  
   0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
  16: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
  32: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
  48: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
  64: 4A 6F 6E 64 73 00 00 00 - 00 00 00 00 00 00 00 00  | Jonds........... 
  80: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
  96: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
 112: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
 128: 00 00 00 00 05 00 00 00 - 00 00 00 00 46 46 46 46  | ............FFFF 
 144: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF 
 160: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF 
 176: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF 
 192: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF 
 208: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF 
 224: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF 
 240: 46 46 46 46 78 00 00 00 - 00 00 00 00 00 00 00 00  | FFFFx........... 
 256: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
 272: 00 00 00 00 00 00 00 00 - 00 00 00 00              | ............ 
 
[04-22-2016 :: 15:07:44] [Zone Server] Client::ChannelMessageReceived() Channel:5 message:'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF  FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF  FFFFFFFFFFFFFx'
			
		 | 
	
	
 Server->Client Packet logs
	Quote:
	
	
		
			
				[04-22-2016 :: 15:07:44] [Packet :: Server -> Client] [OP_ChannelMessage - 0x0045] [Size: 248] 
[04-22-2016 :: 15:07:44] [Packet :: Server -> Client (Dump)] [OP_ChannelMessage - 0x0045] [Size: 248]  
   0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
  16: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
  32: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
  48: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
  64: 4A 6F 6E 64 73 00 00 00 - 00 00 00 00 00 00 00 00  | Jonds........... 
  80: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
  96: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
 112: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
 128: 00 00 00 00 05 00 00 00 - 64 00 00 00 46 46 46 46  | ........d...FFFF 
 144: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF 
 160: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF 
 176: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF 
 192: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF 
 208: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF 
 224: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF 
 240: 46 46 46 46 78 00                                  | FFFFx. 
			
		 | 
	
	
 Client Send Chat message
	Code:
			public void DoChannelMessage()
		{
			
//			/*000*/	char	targetname[64];		// Tell recipient
//			/*064*/	char	sender[64];			// The senders name (len might be wrong)
//			/*128*/	uint32	language;			// Language
//			/*132*/	uint32	chan_num;			// Channel
//			/*144*/	uint32	skill_in_language;	// The players skill in this language? might be wrong
//			/*148*/	char	message[0];			// Variable length message
		
		string TestMessage = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFx";
		int TestMessageLength = TestMessage.Length * 2;
		int RequestSize = 74 + TestMessageLength;
		byte[] ChannelMessageRequest = new byte[RequestSize];
		int position = 0;
		
				
		WriteFixedLengthString("", ref ChannelMessageRequest, ref position, 64);
		WriteFixedLengthString("Jonds", ref ChannelMessageRequest, ref position, 64);
		WriteInt32(0, ref ChannelMessageRequest, ref position);
		WriteInt32(5, ref ChannelMessageRequest, ref position);
		WriteInt32(0, ref ChannelMessageRequest, ref position);
		WriteFixedLengthString(TestMessage, ref ChannelMessageRequest, ref position, TestMessageLength);
		GenerateAndSendWorldPacket (ChannelMessageRequest.Length, 69 /* OP_ChannelMessage */, curZoneId, curInstanceId, ChannelMessageRequest);				
		}
 
Client Read Chat message
	Code:
			public void HandleWorldMessage_ChannelMessage(byte[] data, int datasize)
		{
			
//			/*000*/	char	targetname[64];		// Tell recipient
//			/*064*/	char	sender[64];			// The senders name (len might be wrong)
//			/*128*/	uint32	language;			// Language
//			/*132*/	uint32	chan_num;			// Channel
//			/*144*/	uint32	skill_in_language;	// The players skill in this language? might be wrong
//			/*148*/	char	message[0];			// Variable length message
	
		int position = 0;
		
		string ChannelTargetName = ReadFixedLengthString(data, ref position, 64);
		string ChannelSender = ReadFixedLengthString(data, ref position, 64);
		Int32 ChannelLanguage = ReadInt32(data, ref position);
		Int32 ChannelNumber = ReadInt32(data, ref position);
		Int32 ChannelSkill = ReadInt32(data, ref position);
		//TODO: ChannelMessage is suppose to be variable sized and not a 64 FixedLengthString
		string ChannelMessage = ReadFixedLengthString(data, ref position, 64);
		}
 
Fixed Length String reference
	Code:
			public string ReadFixedLengthString(byte[] data, ref Int32 position, Int32 count)
		{
			string retval = System.Text.Encoding.Default.GetString(data, position, count);
			position += count;
			return retval;
		}