Cum de a scrie bot pentru jocul directx

Deci, avem un joc standard DirectX care rulează în fereastră. De ce avem nevoie? Recunoașteți ce este afișat pe ecran și trimiteți-l acolo apăsând tastele corespunzătoare. Pentru recunoaștere / recunoaștere, vom folosi biblioteca OpenCV (Biblioteca virtuală a computerului vizionat) - en.wikipedia.org/wiki/OpenCV







În primul rând, trebuie să găsim fereastra aplicației noastre DirectX și să scoatem ecranul. O vom lega cu cronometrul și o vom face la fiecare 20 de secunde. Cea mai simplă versiune:

Dar, dacă nu doriți să se concentreze pe acea fereastră a fost transferat la fiecare câteva secunde, iar computerul poate fi lucra în condiții de siguranță (mai ales dacă aveți două monitoare), apoi face o treabă mai bună mai dificilă - să facă groapa plin de tot spațiul vizibil, și acolo să caute intrarea pictograma aplicației principală (o sută de pe stânga titlului ferestrei) folosind cvMatchTemplate () și cvMinMaxLoc (), pentru a calcula poziția dorită și zona de tăiere a imaginii, fără a schimba focalizarea ferestrei.

Acum trebuie să determinăm în ce mod / dialog al jocului suntem. Cum se face acest lucru? În primul rând, trebuie să determinăm care zone ale ecranului au obiecte, la prezența / absența cărora le putem atașa. De exemplu, în cazul în care o vedem pe ecran un buton (încercuit cu roșu în captura de ecran), aceasta înseamnă că suntem în modul IPC cupa, în cazul în care trebuie să apăsați tasta „Enter“ pentru a începe următorul meci.







Cum de a scrie bot pentru jocul directx

Ceea ce urmează este deja loc de muncă mare și obositoare de „pregătirea de bază“ - aveți nevoie pentru a face capturi de ecran în diferite situații de joc, pentru a ridica coordonatele limitelor de obiecte pentru a compara cu zona de ecran, a „Similaritatea procentuală“, care poate fi considerat ca pragul (multe meniuri nu sunt statice, astfel încât 100- nu va exista o coincidență procentuală) și să descriem emularea a cheilor pe care trebuie să le transmitem acolo.

bool ImgEq (procent dublu, char * nume fișier, int x1, int y1, int x2, int y2)
Form1-> ImageEnView2-> Atribuire (Form1-> ImageEnViewPES);
Form1-> ImageEnView2-> Proc-> Crop (x1-5, y1-5, x2-5, y2-5);
Form1-> ImageEnView1-> IO-> LoadFromFile (numele fișierului);
Form1-> ImageEnView1-> Proc-> Crop (x1, y1, x2, y2);
double dPER = Form1-> ImageEnView1-> pro-> CompareWith (Form1-> ImageEnView2-> IEBitmap, NULL);

întoarcere (dPer> = procente);
>

Apelul la această funcție arată astfel:

dacă (ImgEq (0.98, "cup-menu.bmp", 350.700.520.870)) <…>

Ei bine, asta-i tot! Acum, programul nostru poate determina modul curent în care se află jocul. Rămâne doar să învățați cum să transferați combinațiile de taste corecte. Deoarece trebuie să facem emularea într-o aplicație DirectX, atunci PostMessage / kbdevent nu va funcționa aici, este necesar să treci codurile de scanare cu SendInput (). Pentru a putea descrie frumos secvențele de apeluri cu tasta (DIKEYBOARD_X), am făcut următoarele:

Dacă v-ați gândit mult timp pe cale de a scrie un bot pentru jocurile preferate, dar nu toate nu au ajuns în mâinile - încercați să-l, e destul de proces creativ, care creează dependență.







Articole similare

Trimiteți-le prietenilor: