Dantes3000 |
Отправлено: 14 Октября, 2017 - 19:51:14
|
Эксперт
Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016
Репутация: 58
|
Делал для себя, но тема сложная, поэтому скину для примера.
Искал бит 01 или 00 - персонажа кто-то бьет или нет.
Спойлер (Отобразить)
CODE:char b_poisk[56];
char b_mask[56];
win w_KIB;
int ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;
b_poisk[0]=243; //F3
b_poisk[8]=100; //64
b_poisk[12]=14; //0E
b_poisk[16]=07; //07
b_poisk[36]=120; //78
b_poisk[37]=130; //82
b_poisk[38]=140; //8C
b_poisk[47]=03; //03
b_poisk[48]=32; //20
b_poisk[55]=03; //03
b_poisk[56]=18; //12
b_mask[0]=1; b_mask[10]=0; b_mask[20]=0; b_mask[30]=0; b_mask[40]=0; b_mask[50]=0;
b_mask[1]=0; b_mask[11]=0; b_mask[21]=0; b_mask[31]=0; b_mask[41]=0; b_mask[51]=0;
b_mask[2]=0; b_mask[12]=1; b_mask[22]=0; b_mask[32]=0; b_mask[42]=0; b_mask[52]=0;
b_mask[3]=0; b_mask[13]=0; b_mask[23]=0; b_mask[33]=0; b_mask[43]=0; b_mask[53]=0;
b_mask[4]=0; b_mask[14]=0; b_mask[24]=0; b_mask[34]=0; b_mask[44]=0; b_mask[54]=0;
b_mask[5]=0; b_mask[15]=0; b_mask[25]=0; b_mask[35]=0; b_mask[45]=0; b_mask[55]=1;
b_mask[6]=0; b_mask[16]=1; b_mask[26]=0; b_mask[36]=1; b_mask[46]=0; b_mask[56]=1;
b_mask[7]=0; b_mask[17]=0; b_mask[27]=0; b_mask[37]=1; b_mask[47]=1;
b_mask[8]=1; b_mask[18]=0; b_mask[28]=0; b_mask[38]=1; b_mask[48]=1;
b_mask[9]=0; b_mask[19]=0; b_mask[29]=0; b_mask[39]=0; b_mask[49]=0;
start_();
int prc=openprocess(w_KIB);
loop() {attack();}
function attack()
{
char xp[2];
int adr;
if (findmemorymask (1, #b_poisk[0], 56, #adr, 0, #b_mask[0], 100, prc)==1)
{
if (readmemory(#xp[0], 2, adr+28, prc)!=0)
{
int hps=codhexi(#xp[0], 2);
} else messagebox("Ошибка рид");
textout(0, 30, 40+40, "бьют или нет - "+format(hps), 0);
} else messagebox("Ошибка файнд");
return hps;
}
function start_()
{
pause(1000);
beep(1000, 100);
int x, y;
getmouse(x, y);
w_KIB=getwindow(1, x, y);
ex_KIB=w_KIB.widthclient; ey_KIB=w_KIB.heightclient;
}
|
|
|
Dantes3000 |
Отправлено: 01 Декабря, 2017 - 18:33:43
|
Эксперт
Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016
Репутация: 58
|
Спойлер (Отобразить)CODE:
win w=window ("Wrsp", "Wrsp", -1);
int prc=openprocess(w);
loop() хп();
char poisk[49];
char mask[49];
poisk[0]=12;
poisk[2]=12;
poisk[26]=7;
poisk[46]=232;
poisk[47]=62;
poisk[48]=145;
mask[0]=1; mask[10]=0; mask[20]=0; mask[30]=0; mask[40]=0;
mask[1]=0; mask[11]=0; mask[21]=0; mask[31]=0; mask[41]=0;
mask[2]=1; mask[12]=0; mask[22]=0; mask[32]=0; mask[42]=0;
mask[3]=0; mask[13]=0; mask[23]=0; mask[33]=0; mask[43]=0;
mask[4]=0; mask[14]=0; mask[24]=0; mask[34]=0; mask[44]=0;
mask[5]=0; mask[15]=0; mask[25]=0; mask[35]=0; mask[45]=0;
mask[6]=0; mask[16]=0; mask[26]=1; mask[36]=0; mask[46]=1;
mask[7]=0; mask[17]=0; mask[27]=0; mask[37]=0; mask[47]=1;
mask[8]=0; mask[18]=0; mask[28]=0; mask[38]=0; mask[48]=1;
mask[9]=0; mask[19]=0; mask[29]=0; mask[39]=0;
function хп()
{
char xp[4];
int adr;
if (findmemorymask (1, #poisk[0], 49, #adr, 0, #mask[0], 100, prc)==1)
{
if (readmemory(#xp[0], 2, adr+6, prc)!=0)
{
int hp=codhexi(#xp[0], 2);
}
}
textout(0, 100, 62, "хп "+format(hp), 0);
if (hp<1 || hp>20000) beep(800, 200);
return hp;
}
почему, если объявить и заполнить массивы вне функции хп - находит ошибочное значение, а если объявить в функции, то работает всё нормально? |
|
|
AdryV |
Отправлено: 03 Декабря, 2017 - 16:49:14
|
Специалист
Покинул форум
Сообщений всего: 449
Дата рег-ции: Май 2016
Репутация: 11
|
Dantes3000 пишет: CODE:mask[0]=1; mask[10]=0; mask[20]=0; mask[30]=0; mask[40]=0;
mask[1]=0; mask[11]=0; mask[21]=0; mask[31]=0; mask[41]=0;
mask[2]=1; mask[12]=0; mask[22]=0; mask[32]=0; mask[42]=0;
mask[3]=0; mask[13]=0; mask[23]=0; mask[33]=0; mask[43]=0;
mask[4]=0; mask[14]=0; mask[24]=0; mask[34]=0; mask[44]=0;
mask[5]=0; mask[15]=0; mask[25]=0; mask[35]=0; mask[45]=0;
mask[6]=0; mask[16]=0; mask[26]=1; mask[36]=0; mask[46]=1;
mask[7]=0; mask[17]=0; mask[27]=0; mask[37]=0; mask[47]=1;
mask[8]=0; mask[18]=0; mask[28]=0; mask[38]=0; mask[48]=1;
mask[9]=0; mask[19]=0; mask[29]=0; mask[39]=0;
в чем прикол этой каши, пользуйтесь калькулятором от начального адреса и будет вас счастье
да и вообще пихайте все в массив! и в цикл!
код (Отобразить)CODE:char poiskRXP[148];
char maskRXP[148];
win w;
int prc;
int adr;
int x, y;
char xp[4];
//////////////////////////
poiskRXP[0]=5;
poiskRXP[1]=0;
poiskRXP[41]=0;
poiskRXP[42]=100;
poiskRXP[43]=0;
poiskRXP[44]=0;
poiskRXP[76]=2;
///////////////////////////////////////////
maskRXP[0]=1;
maskRXP[1]=1;
/////
for(int n1=2; n1>41; n1++)
{
maskRXP[n1]=0;
}
////////
maskRXP[41]=1;
maskRXP[42]=1;
maskRXP[43]=1;
maskRXP[44]=1;
//////
for(int n2=45; n2>76; n2++)
{
maskRXP[n2]=0;
}
///////
maskRXP[76]=1;
start_();
loop() {sleep(50); poiskRealXP();}
//////////////////////////////////////////////////////////////
function start_()
{
pause(500);
beep(1000, 100);
getmouse(x, y);
w=getwindow(1, x, y);
}
//
function poiskRealXP()
{
prc=openprocess(w);
if (findmemorymask (1, #poiskRXP[0], 148, #adr, 0, #maskRXP[0], 100, prc)==1)
{
if (readmemory(#xp[0], 4, adr+32, prc)!=0)
{
int hps=codhexi(#xp[0], 4);
} else textout(0, 10, 40, "ошибка реад мемори",0);
textout(0, 30, 40+40, "бьют или нет - "+format(hps)+" "+format(adr+32), 0);
} else textout(0, 10, 40, "ошибка финд мемори",0);
return hps;
}
CODE:char poiskMXP[193];
char maskMXP[193];
win w;
int prc;
int adr;
int x, y;
char xp[4];
//
poiskMXP[19]=70;
//
poiskMXP[23]=72;
//
poiskMXP[100]=5;
poiskMXP[101]=136;
poiskMXP[102]=32;
poiskMXP[103]=2;
poiskMXP[104]=0;
//
poiskMXP[118]=1;
//
poiskMXP[137]=0;
poiskMXP[138]=128;
poiskMXP[139]=63;
poiskMXP[140]=0;
//
poiskMXP[192]=5;
///////////////////////////////////////////
for(int nt1=0; nt1>19; nt1++){maskMXP[nt1]=0;}
//
maskMXP[19]=1;
maskMXP[20]=0;
maskMXP[21]=0;
maskMXP[22]=0;
maskMXP[23]=1;
//
for(int nt2=24; nt2>100; nt2++){maskMXP[nt2]=0;}
//////////////////////////////////////
for(int n1=100; n1>105; n1++){maskMXP[n1]=1;}
//
for(int n2=105; n2>118; n2++){maskMXP[n2]=0;}
//
maskMXP[118]=1;
//
for(int ntt2=119; ntt2>137; ntt2++){maskMXP[ntt2]=0;}
//
for(int n3=137; n3>141; n3++){maskMXP[n3]=1;}
//
for(int n4=141; n4>192; n4++){maskMXP[n4]=0;}
//
maskMXP[192]=1;
///////////////////////////////
start_();
loop() {sleep(500); poiskMaxXP();}
//////////////////////////////////////////////////////////////
function start_()
{
pause(500);
beep(1000, 100);
getmouse(x, y);
w=getwindow(1, x, y);
}
//
function poiskMaxXP()
{
prc=openprocess(w);
if (findmemorymask (1, #poiskMXP[0], 193, #adr, 0, #maskMXP[0], 100, prc)==1)
{
if (readmemory(#xp[0], 4, adr+60, prc)!=0)
{
int hps=codhexi(#xp[0], 4);
} else textout(0, 10, 40, "ошибка реад мемори",0);
textout(0, 30, 40+40, "бьют или нет - "+format(hps)+" "+format(adr+60), 0);
} else textout(0, 10, 40, "ошибка финд мемори",0);
return hps;
}
реально блин издеваетесь над собой)
писать 5 сотен нулей или 4 тысячи)))) |
|
|
|