[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Nionov  
Форум » Программирование » Pascal/Delphi » Патч,заставляющий работать скрипты при потере фокуса
Патч,заставляющий работать скрипты при потере фокуса
RainbowДата: Понедельник, 17.06.2019, 23:29 | Сообщение # 1

-= Повелитель кодеров =-
Сообщений: 146
Награды: 0
Репутация: 4279
Статус:
Наверное многие знают про cleo cкрипт, заставляющий работать скрипты при потере фокуса. 
Сделаем тоже самое на delphi для gta sa.
 

Немного теории:


При переключении с окна gta sa в другое окно (например браузер), окно gta sa замирает(останавливается анимация окна) и игрок уходит в АФК. 
Для того чтобы окно gta sa не замирало нужно найти адреса памяти игры(с помощью редакторов памяти такие как cheat engine, artmoney и т.д) и изменить их значение. 

В программе будет использоваться три адреса
 
00747FB6 делает окно активным 
0074805A убивает фокус 
0074542B позволяет свободно перемещаться курсору(чтобы курсор не залипал к окну крч) 

Скриншот программы 



Кинем на форму Button с вкладки Standart 

Для кнопки код 

Код
var 
v:HWnd; 
gm: Byte; 
ProcessId, hProcess: Integer; 
BC : dword; 
       WindowName: integer; 
ProcessId1: integer; // Все эти переменные нужны для того, чтобы найти 
ThreadId: integer; // процесс с игрой. 
HandleWindow: Integer; // 
write: cardinal; // В эту переменную попадёт количество записанных байтов. 
buf: dword; // Тут будет содержаться значение, на которое будем изменять 4 байта. 
      begin 
      WindowName := FindWindow(nil,'GTA:SA:MP'); 
ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId1); // Ищем хэндл процесса 
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId1); // с нашей игрой. 
buf:=2425393296; // значение адреса 0074542B в 4 байта 

WriteProcessMemory(HandleWindow, ptr($0074542B), @buf, 4, write); // Адрес отвечающий за свободное перемещение мышкой 
v:=FindWindow(nil, PChar('GTA:SA:MP')); // ищем handle окна 
gm:=1; // значение 1 включен, значение 0 выключен. В байтах 
GetWindowThreadProcessId(v,@ProcessId); // ищем pid окна 
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId); // получаем хэндл процесса 
WriteProcessMemory(hProcess, ptr($00747FB6), @gm, 1, BC); // Делаем окно активным 
WriteProcessMemory(hProcess, ptr($0074805A), @gm, 1, BC); // убираем фокус


Теперь скрипты будут работать в оконном режиме без потери фокуса, а игрок не будет уходить в афк.
 
Форум » Программирование » Pascal/Delphi » Патч,заставляющий работать скрипты при потере фокуса
  • Страница 1 из 1
  • 1
Поиск: