  | 
	
		
	
	
		Показатель жизненной силы(Помогите) - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок | 
	 
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            20.01.2014, 20:19
            
            
         | 
        
             
            #1
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Разведчик  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 18.08.2011  
                
                
                
                 Сообщений: 5
                   
 Популярность: 10  
                  
	 Сказал(а) спасибо: 0  
	
		
			
				Поблагодарили 0 раз(а) в 0 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Показатель жизненной силы персонажа
             
             
            
        
        
        
            
               
    Все я разобрался, этот код вам поможет показать ХП и Максимальное ХП своего персонажа. 
Для этого вам нужно Button(2 кнопки) и Label(2 штуки). 
Button1. - Связь с процессором 
Button2. - Считать и показать значения в Label1 и Label2.
 
	Код: 
	var
  Form1: TForm1;
  KlientWindow:HWND; //Handle клиента
  ProcessId:Integer;
  hProcess:Integer; //Идентификатор объекта
  WHP:Integer;
  WHPMax:Integer;
  HP:Integer;
  HPMax:Integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
  KlientWindow := FindWindow(nil, PChar('Perfect World')); //Находим Handle окна
  GetWindowThreadProcessId(KlientWindow,@ProcessId); //Получаем И.П.
  hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId); //Открываем процесс с возможностью записи
end;
procedure TForm1.Button2Click(Sender: TObject);
var
  HP,HPMax:Integer;
  WHP,WHPMax,NoB:DWord;
begin
try
    ReadProcessMemory (hProcess, Pointer($C38B6C), @WHP, sizeof(WHP), NoB); //BaseAdress
    ReadProcessMemory (hProcess, Pointer(WHP+$1C), @WHP, sizeof(WHP), NoB);
    ReadProcessMemory (hProcess, Pointer(WHP+$34), @WHP, sizeof(WHP), NoB);
    ReadProcessMemory (hProcess, Pointer(WHP+$4A8), @WHP, sizeof(WHP), NoB); //Читаем значение HP
    HP := Integer(WHP); //Переводим Integer
    Label1.Caption := IntToStr(HP); //Вывести знанчение ХП
    ReadProcessMemory (hProcess, Pointer($C38B6C), @WHPMax, sizeof(WHPMax), NoB); //BaseAdress
    ReadProcessMemory (hProcess, Pointer(WHPMax+$1C), @WHPMax, sizeof(WHPMax), NoB);
    ReadProcessMemory (hProcess, Pointer(WHPMax+$34), @WHPMax, sizeof(WHPMax), NoB);
    ReadProcessMemory (hProcess, Pointer(WHPMax+$4F0), @WHPMax, sizeof(WHPMax), NoB); //Читаем значение MaxHP
    HPMax := Integer(WHPMax); //Переводим Integer
    Label2.Caption := IntToStr(HPMax); //Вывести Максимальное значение ХП
    EXCEPT 
end;
end;
end.
 Спасибо  fds255 за оффсеты!))
     
          
        
        
        
        
        
        
        
        
            
                 
                
                    
                        Последний раз редактировалось Foreworld; 21.01.2014 в 04:06.
                    
                    
                        Причина: Идеалист((
                    
                
             
        
        
      | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            20.01.2014, 21:59
            
            
         | 
        
             
            #2
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Разведчик  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 23.06.2012  
                
                
                
                 Сообщений: 43
                   
 Популярность: 427  
                  
	 Сказал(а) спасибо: 18  
	
		
			
				Поблагодарили 59 раз(а) в 35 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Показатель жизненной силы(Помогите)
             
             
            
        
        
        
            
               
    строку:
ReadProcessMemory (hProcess, Pointer(WHP+ $494), @ HP, sizeof( HP), NoB);
 перепиши так:
ReadProcessMemory (hProcess, Pointer(WHP+ $4A8), @ WHP, sizeof( WHP), NoB);
 строку:
ReadProcessMemory (hProcess, Pointer(WHPMax+ $4DC), @ HPMax, sizeof( HPMax), NoB);
 перепиши так:
ReadProcessMemory (hProcess, Pointer(WHPMax+ $4F0), @ WHPMax, sizeof( WHPMax), NoB);
 Офсеты здесь:
http://zhyk.ru/forum/showpost.php?p=...postcount=1016
     
         
        
        
        
        
        
        
            
             ________________  
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  
 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). 
             
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            22.01.2014, 12:27
            
            
         | 
        
             
            #3
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Разведчик  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 25.01.2013  
                
                
                
                 Сообщений: 13
                   
 Популярность: 10  
                  
	 Сказал(а) спасибо: 7  
	
		
			
				Поблагодарили 0 раз(а) в 0 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Показатель жизненной силы(Помогите)
             
             
            
        
        
        
            
               
    неужели компилятор вам не выдает кучу криков, что глобальные и локальные переменные с одним именем) 
 
Ну и если будете переходить на новые версии Делфи, то переменную NoB надо будет менять в тип SIZE_T, мало ли пригодится.
     
         
        
        
        
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            22.01.2014, 14:59
            
            
         | 
        
             
            #4
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Разведчик  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 18.08.2011  
                
                
                
                 Сообщений: 5
                   
 Популярность: 10  
                  
	 Сказал(а) спасибо: 0  
	
		
			
				Поблагодарили 0 раз(а) в 0 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Показатель жизненной силы(Помогите)
             
             
            
        
        
        
            
               
    Не, не орет))) Спасибо!
     
         
        
        
        
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            22.01.2014, 17:52
            
            
         | 
        
             
            #5
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Пехотинец  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 02.08.2009  
                
                
                
                 Сообщений: 57
                   
 Популярность: 417  
                  
	 Сказал(а) спасибо: 12  
	
		
			Поблагодарили 1 раз в 1 сообщении
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Показатель жизненной силы персонажа
             
             
            
        
        
        
            
               
    
  
        
        
          
                
                
                  
                        
                          | 
                        
                        Цитата: | 
                        
                          | 
                   
                 
                 | 
                
                 | 
                
                
                
                 | 
                
                
                
                 | 
           
         
        
          
                | 
                 | 
                 | 
                
                 | 
           
          
                | 
                 | 
                
                неужели компилятор вам не выдает кучу криков, что глобальные и локальные переменные с одним именем)
                 | 
                
                 | 
           
          
                
                  | 
                
                 | 
                
                  | 
           
         
         | 
   
 
И заметили же.... либо я так отстал что у меня нет глобальных переменных с именами короче символов 8-10, либо ТС так преуспел в сокращении имен...
 
Еще момент, если делать так:
 
	Код: 
	var
  Form1: TForm1;
  PWWindow : Record
    KlientWindow:HWND; //Handle клиента
    ProcessId:Integer;
    hProcess:Integer; //Идентификатор объекта
    HostPlayer : record
      WHP:Integer;
      WHPMax:Integer;
      HP:Integer;
      HPMax:Integer;
    end;
  end;
 Код становится чуть длинше, но более читаем... и со временем быстрей дойдете до ООП...
     
          
        
        
        
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
 
	
		
	
	
	
	
	
		
	
		 
		Ваши права в разделе
	 | 
 
	
		
		Вы не можете создавать новые темы 
		Вы не можете отвечать в темах 
		Вы не можете прикреплять вложения 
		Вы не можете редактировать свои сообщения 
		 
		
		
		
		
		HTML код Выкл. 
		 
		
	  | 
 
 
	 | 
	
		
	 | 
 
 
 
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 09:21. 
		 
	 
 
 | 
  |