| Tyen05 | 
			04-22-2016 05:56 PM | 
		 
		 
		 
		
		
		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; 
                } 
  
	 |