  | 
	
		
	
	
		Вопросы по чату - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок | 
	 
	 
	
	
	
	
	
	
	
	
	
	
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            27.02.2017, 12:06
            
            
         | 
        
             
            #1
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Разведчик  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 11.10.2010  
                
                
                
                 Сообщений: 13
                   
 Популярность: 10  
                  
	 Сказал(а) спасибо: 3  
	
		
			
				Поблагодарили 5 раз(а) в 5 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Вопросы по чату
             
             
            
        
        
        
            
               
    Привет, ребята! 
Недавно начал изучать чат в пв и столкнулся с некоторыми вопросами.  
Написал вот такой класс-шаблон для работы с чатом:
 
	Код: 
	class ChatReader
    {
        IntPtr handle;
        int ChNold;
        List<Message> messages;
        int ChatStart = 0x00F06768;
        int ChatNumber = 0x00F06774;
        public ChatReader(IntPtr handle)
        {
            this.handle = handle;
            messages = new List<Message>();
        }
        public void ReadChat()
        {
            int processID;
            //получаем id процесса по хендлу
            WinApi.GetWindowThreadProcessId(handle, out processID);
            //запускаем процесс и получаем его дескриптор
            IntPtr oph = WinApi.OpenProcess(WinApi.ProcessAccessFlags.All, false, processID);
            //начало чата
            int ChS = CalcMethods.CalcInt32Value(oph, ChatStart);
            //количество сообщений в памяти клиента
            int ChN = CalcMethods.CalcInt32Value(oph, ChatNumber);
            for (int i = 0; i< ChN; i++)
            {
                //id сообщения
                int messageID = CalcMethods.CalcInt32Value(oph, (ChS + (i * 0x24)) + 0x14);
                //тип сообщения
                int messageType = CalcMethods.CalcInt32Value(oph, (ChS + (i * 0x24)) + 0x4);
                //первая форма сообщения
                int message_1_address = CalcMethods.CalcInt32Value(oph, (ChS + (i * 0x24)) + 0xc);
                string message_1 = CalcMethods.CalcStringValue(oph, message_1_address);
                //вторая форма сообщения
                int message_2_address = CalcMethods.CalcInt32Value(oph, (ChS + (i * 0x24)) + 0x8);
                string message_2 = CalcMethods.CalcStringValue(oph, message_2_address);
                if (messageID > ChNold)
                {
                    //если сообщение новое, то добавляем в коллекцию и выводим инфу в лог
                    messages.Add(new Message(i, messageType, messageID, message_1, message_2));
                    CalcMethods.Logging("++++++++++++++");
                    CalcMethods.Logging(messageType.ToString());
                    CalcMethods.Logging(messageID.ToString());
                    CalcMethods.Logging(message_1);
                    CalcMethods.Logging(message_2);
                    ChNold = messageID;
                }               
            }
            WinApi.CloseHandle(oph);
        }
    }
 Так вот, как я понял, messageType обычно 1 - мирчат, 2 - группчат, 3 - кч и т.д.  
Но у меня помимо этих типов может считаться что-то типа 11468801 (это в int). И у сообщений одного типа могут быть разные messageType. В чем проблема, подскажите, пожалуйста? Или может это норма и сообщения все по-другому сортируют?
 
И есть еще один глупый вопрос: можно ли по чату узнать wid персонажа, отправившего сообщение?
     
          
        
        
        
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            28.02.2017, 17:18
            
            
         | 
        
             
            #2
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Разведчик  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 14.07.2009  
                
                
                
                 Сообщений: 11
                   
 Популярность: 306  
                  
	 Сказал(а) спасибо: 0  
	
		
			
				Поблагодарили 11 раз(а) в 6 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Вопросы по чату
             
             
            
        
        
        
            
               
    Если перейти по адресу ChatStruct, то там хранится до 200 дескрипторов сообщений. Каждый дескриптор имеет следующую структуру: 
	Код: 
	  ChatStruct=record
    uk1         : DWORD;
    TypeChat    : Byte;
    SmileSet    : Byte;
    uk2           : Byte;
    uk3           : Byte;
    Addr          : DWORD;
    uk4           : DWORD;
    ItemID      : DWORD;
    ID            : DWORD;
    uk5           : DWORD;
    uk6           : DWORD;
    WID          : DWORD;
  end;
 По адресу Addr находится само сообщение + различная информация о типе сообщения, наличие смайлов, нике и другая. 
WID же можно взять сразу из дескриптора, если тебе нужно выделить сообщения того персонажа, к которому подключен бот, то его WID всегда равен 0xFFFFFFFF
     
          
        
        
        
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            28.02.2017, 20:29
            
            
         | 
        
             
            #3
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Разведчик  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 11.10.2010  
                
                
                
                 Сообщений: 13
                   
 Популярность: 10  
                  
	 Сказал(а) спасибо: 3  
	
		
			
				Поблагодарили 5 раз(а) в 5 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Вопросы по чату
             
             
            
        
        
        
        
        
        
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            28.02.2017, 21:10
            
            
         | 
        
             
            #4
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Разведчик  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 14.07.2009  
                
                
                
                 Сообщений: 11
                   
 Популярность: 306  
                  
	 Сказал(а) спасибо: 0  
	
		
			
				Поблагодарили 11 раз(а) в 6 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Вопросы по чату
             
             
            
        
        
        
        
        
        
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
 
	
		
	
	
	
	
	
		
	
		 
		Ваши права в разделе
	 | 
 
	
		
		Вы не можете создавать новые темы 
		Вы не можете отвечать в темах 
		Вы не можете прикреплять вложения 
		Вы не можете редактировать свои сообщения 
		 
		
		
		
		
		HTML код Выкл. 
		 
		
	  | 
 
 
	 | 
	
		
	 | 
 
 
	
		
			 
			Похожие темы
		 | 
	 
	| Тема | 
	Автор | 
	Раздел | 
	Ответов | 
	Последнее сообщение | 
 
	| 
		
		[Помогите!] Вопросы от почты
	 | 
	Six Six Six | 
	Вопросы, просьбы, обсуждение | 
	1 | 
	22.02.2014 16:26 | 
 
	| 
		
		[Помогите!] вопросы.
	 | 
	CyberNEŦik | 
	Вопросы и ответы, обсуждения | 
	4 | 
	25.09.2012 22:01 | 
 
	| 
		
		 Все вопросы по F-cf mod
	 | 
	VeelZevuL | 
	Общение и обсуждение CrossFire | 
	27 | 
	22.08.2011 18:59 | 
 
	| 
		
		 ВОПРОСЫ
	 | 
	олененок | 
	Общение и обсуждение (Тюряга ВК) | 
	9 | 
	23.12.2010 14:12 | 
 
 
 
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 09:31. 
		 
	 
 
 | 
  |