Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Показатель жизненной силы(Помогите)

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 20.01.2014, 19:19   #1
 Разведчик
Аватар для Foreworld
 
Foreworld никому не известный тип
Регистрация: 18.08.2011
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
Post Показатель жизненной силы персонажа

Все я разобрался, этот код вам поможет показать ХП и Максимальное ХП своего персонажа.
Для этого вам нужно 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 в 03:06. Причина: Идеалист((
  Ответить с цитированием
Старый 20.01.2014, 20:59   #2
 Разведчик
Аватар для fds255
 
fds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известен
Регистрация: 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
________________
MultiXBot
MultiX_POT
  Ответить с цитированием
Старый 22.01.2014, 11:27   #3
 Разведчик
Аватар для scitelz
 
scitelz никому не известный тип
Регистрация: 25.01.2013
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Показатель жизненной силы(Помогите)

неужели компилятор вам не выдает кучу криков, что глобальные и локальные переменные с одним именем)

Ну и если будете переходить на новые версии Делфи, то переменную NoB надо будет менять в тип SIZE_T, мало ли пригодится.
  Ответить с цитированием
Старый 22.01.2014, 13:59   #4
 Разведчик
Аватар для Foreworld
 
Foreworld никому не известный тип
Регистрация: 18.08.2011
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Показатель жизненной силы(Помогите)

Не, не орет))) Спасибо!
  Ответить с цитированием
Старый 22.01.2014, 16:52   #5
 Пехотинец
Аватар для ToRcH2565
 
ToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известен
Регистрация: 02.08.2009
Сообщений: 57
Популярность: 417
Сказал(а) спасибо: 12
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Показатель жизненной силы персонажа

Цитата:
Сообщение от scitelzПосмотреть сообщение
неужели компилятор вам не выдает кучу криков, что глобальные и локальные переменные с одним именем)

И заметили же.... либо я так отстал что у меня нет глобальных переменных с именами короче символов 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;
Код становится чуть длинше, но более читаем... и со временем быстрей дойдете до ООП...
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Показатель защиты? xxxIGORxxx Общение и обсуждение Perfect World 16 10.02.2012 07:12
Показатель атаки и защиты rukido Статьи, квесты и описания по Perfect World 0 13.07.2011 20:02
[Помогите!] показатель метров возле прицела LIIypuk Общение и обсуждение Counter-Strike 1 17.11.2010 12:06
Показатель пинга (FOX) Общение и обсуждение, архив Point Blank 3 28.09.2010 12:12

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 18:01.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net