Код (Отобразить)
CODE:
#include "C:\Kibor_set\test\test_memory_d.txt";
external(INT, "wsprintf", "wsprintfA", "User32.dll" );
external(INT, "WideCharToMultiByte", "WideCharToMultiByte", "Kernel32.dll");
starting:;
int flag_conect=0;
win wind=window ("BlueStacks Android PluginAndroid", -1, window ("BlueStacks", -1, -1));
int prc=openprocess(wind);
int adr[1000];
char a[1024];
int user_name_adr, user_mana_adr, user_cur_energy;
char user_name[20]; // массив для 10 символов unicode
textbkcolor (858517,11265531);
textout(0, 555, 420, "Загрузка бота... ждите", 0);
char poisk[28]={39, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 22, 0, 0, 0, 14, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 119};
new char poiskmask[sizearray(poisk)];
for (int n=0; n<sizearray(poiskmask); n++)poiskmask[n]=1; // Статичные байты
poiskmask[7]=0; // Меняющиеся байты
poiskmask[11]=0; // Меняющиеся байты
poiskmask[15]=0; // Меняющиеся байты
poiskmask[19]=0; // Меняющиеся байты
int count=findmemorymask (sizearray(adr), #poisk[0], sizearray(poisk), #adr[0], 0, #poiskmask[0], 100, prc);
user_name_adr=adr[0]-185; //смещение на -B9
user_mana_adr=adr[0]-65; //смещение на -41
user_cur_energy=adr[0]-57; //смещение на -39
char hex_user_name_adr[1024];
char hex_user_mana_adr[1024];
char hex_user_cur_energy[1024];
wsprintf(address(#hex_user_name_adr[0]), "%x", user_name_adr);
wsprintf(address(#hex_user_mana_adr[0]), "%x", user_mana_adr);
wsprintf(address(#hex_user_cur_energy[0]), "%x", user_cur_energy);
//messagebox("Адрес с именем: "+ format(#hex_user_name_adr[0]));
resettextout(1);
adress_count();
loop(){
read_playername();
read_mana();
read_energy();
sleep 500;
if (flag_conect>0) {goto starting;}
}
function getmessage(0, WM_COMMAND){
if(message.lparam==btn_reconect){
flag_conect=1;
delete poiskmask;
}
}
//messagebox(format(#hex_user_name_adr[0])+" "+format(#hex_user_mana_adr[0])+" "+format(#hex_user_cur_energy[0]) );
function read_playername(){
if(readmemory(#user_name[0], sizearray(user_name), user_name_adr, prc)) // прочитать 20 байт (по размеру массива)
{
// т. е. если ник 6 символов, то прочитать надо минимум 7 байт
//text_static0[1]=format(#user_name[0]);
//messagebox("Имя персонажа "+ format(#user_name[0]));
//messagebox("Найдено адресов: "+format(count));
//messagebox(text_static0[1]);
SetWindowText(st_name, format(#user_name[0]));
}
}
function read_energy(){
char xp[4];
int test=readmemory(#xp[0], 4, user_cur_energy, prc);
//messagebox(test); // если 1, то прочитано
if(test)
{
//text_static0[3]=format(codhexi(#xp[0], 4));
//messagebox(codhexi(#xp[0], 4)); // переводим из hex в dec, 4 байта
SetWindowText(st_energy, format(codhexi(#xp[0], 4)));
}
}
function read_mana(){
char xp[4];
int test=readmemory(#xp[0], 4, user_mana_adr, prc);
//messagebox(test); // если 1, то прочитано
if(test)
{
SetWindowText(st_mana, format(codhexi(#xp[0], 4)));
//text_static0[5]=format(codhexi(#xp[0], 4));
//messagebox(codhexi(#xp[0], 4)); // переводим из hex в dec, 4 байта
}
}
/*
if(readmemory(#user_name[0], sizearray(user_name), user_name_adr, prc)) // прочитать 20 байт (по размеру массива)
{
messagebox(format(#user_name[0])); // вся строка, должна заканчиваться 0
// т. е. если ник 6 символов, то прочитать надо минимум 7 байт
}
*/
function adress_count(){
messagebox("Найдено адресов: "+format(count));
if (fopen ("c:\5.txt", "w")!=0)
{
for(int i=0; i<count; i++)
{
wsprintf(address(#a[0]), "%x", adr[i]); // перевод в hex
fwrite(format(i)+", "+format(adr[i])+", "+format(#a[0]));
fwrite(ENDL);//записываем в файл перевод строки
}
fclose();//закрываем файл
}
start("c:\5.txt");
}
//messagebox ("заменить");
//char zamen[4]; // массив для числа
//codhex(4, #zamen[0]); // переводим число 4 в hex
//writememory(#zamen[0], 4, adr[0], prc); // записать 4 байта
error:
#include "C:\Kibor_set\test\test_memory_d.txt";
external(INT, "wsprintf", "wsprintfA", "User32.dll" );
external(INT, "WideCharToMultiByte", "WideCharToMultiByte", "Kernel32.dll");
starting:;
int flag_conect=0;
win wind=window ("BlueStacks Android PluginAndroid", -1, window ("BlueStacks", -1, -1));
int prc=openprocess(wind);
int adr[1000];
char a[1024];
int user_name_adr, user_mana_adr, user_cur_energy;
char user_name[20]; // массив для 10 символов unicode
textbkcolor (858517,11265531);
textout(0, 555, 420, "Загрузка бота... ждите", 0);
char poisk[28]={39, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 22, 0, 0, 0, 14, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 119};
new char poiskmask[sizearray(poisk)];
for (int n=0; n<sizearray(poiskmask); n++)poiskmask[n]=1; // Статичные байты
poiskmask[7]=0; // Меняющиеся байты
poiskmask[11]=0; // Меняющиеся байты
poiskmask[15]=0; // Меняющиеся байты
poiskmask[19]=0; // Меняющиеся байты
int count=findmemorymask (sizearray(adr), #poisk[0], sizearray(poisk), #adr[0], 0, #poiskmask[0], 100, prc);
user_name_adr=adr[0]-185; //смещение на -B9
user_mana_adr=adr[0]-65; //смещение на -41
user_cur_energy=adr[0]-57; //смещение на -39
char hex_user_name_adr[1024];
char hex_user_mana_adr[1024];
char hex_user_cur_energy[1024];
wsprintf(address(#hex_user_name_adr[0]), "%x", user_name_adr);
wsprintf(address(#hex_user_mana_adr[0]), "%x", user_mana_adr);
wsprintf(address(#hex_user_cur_energy[0]), "%x", user_cur_energy);
//messagebox("Адрес с именем: "+ format(#hex_user_name_adr[0]));
resettextout(1);
adress_count();
loop(){
read_playername();
read_mana();
read_energy();
sleep 500;
if (flag_conect>0) {goto starting;}
}
function getmessage(0, WM_COMMAND){
if(message.lparam==btn_reconect){
flag_conect=1;
delete poiskmask;
}
}
//messagebox(format(#hex_user_name_adr[0])+" "+format(#hex_user_mana_adr[0])+" "+format(#hex_user_cur_energy[0]) );
function read_playername(){
if(readmemory(#user_name[0], sizearray(user_name), user_name_adr, prc)) // прочитать 20 байт (по размеру массива)
{
// т. е. если ник 6 символов, то прочитать надо минимум 7 байт
//text_static0[1]=format(#user_name[0]);
//messagebox("Имя персонажа "+ format(#user_name[0]));
//messagebox("Найдено адресов: "+format(count));
//messagebox(text_static0[1]);
SetWindowText(st_name, format(#user_name[0]));
}
}
function read_energy(){
char xp[4];
int test=readmemory(#xp[0], 4, user_cur_energy, prc);
//messagebox(test); // если 1, то прочитано
if(test)
{
//text_static0[3]=format(codhexi(#xp[0], 4));
//messagebox(codhexi(#xp[0], 4)); // переводим из hex в dec, 4 байта
SetWindowText(st_energy, format(codhexi(#xp[0], 4)));
}
}
function read_mana(){
char xp[4];
int test=readmemory(#xp[0], 4, user_mana_adr, prc);
//messagebox(test); // если 1, то прочитано
if(test)
{
SetWindowText(st_mana, format(codhexi(#xp[0], 4)));
//text_static0[5]=format(codhexi(#xp[0], 4));
//messagebox(codhexi(#xp[0], 4)); // переводим из hex в dec, 4 байта
}
}
/*
if(readmemory(#user_name[0], sizearray(user_name), user_name_adr, prc)) // прочитать 20 байт (по размеру массива)
{
messagebox(format(#user_name[0])); // вся строка, должна заканчиваться 0
// т. е. если ник 6 символов, то прочитать надо минимум 7 байт
}
*/
function adress_count(){
messagebox("Найдено адресов: "+format(count));
if (fopen ("c:\5.txt", "w")!=0)
{
for(int i=0; i<count; i++)
{
wsprintf(address(#a[0]), "%x", adr[i]); // перевод в hex
fwrite(format(i)+", "+format(adr[i])+", "+format(#a[0]));
fwrite(ENDL);//записываем в файл перевод строки
}
fclose();//закрываем файл
}
start("c:\5.txt");
}
//messagebox ("заменить");
//char zamen[4]; // массив для числа
//codhex(4, #zamen[0]); // переводим число 4 в hex
//writememory(#zamen[0], 4, adr[0], prc); // записать 4 байта
error:
(Добавление)
все, разобрался:
CODE:
function read_energy(){
char xp[4];
int test=readmemory(#xp[0], 4, user_cur_energy, prc);
int result=codhexi(#xp[0], 4);
//messagebox(test); // если 1, то прочитано
if(test)
{
//text_static0[3]=format(codhexi(#xp[0], 4));
//messagebox(codhexi(#xp[0], 4)); // переводим из hex в dec, 4 байта
SetWindowText(st_energy, format(result));
}
}
function read_energy(){
char xp[4];
int test=readmemory(#xp[0], 4, user_cur_energy, prc);
int result=codhexi(#xp[0], 4);
//messagebox(test); // если 1, то прочитано
if(test)
{
//text_static0[3]=format(codhexi(#xp[0], 4));
//messagebox(codhexi(#xp[0], 4)); // переводим из hex в dec, 4 байта
SetWindowText(st_energy, format(result));
}
}
(Добавление)
Благодаря Вам с 10 секунд скорость сканирования выросла до 2х секунд, это уже хорошо,
поставил для поиска 1н адрес и указал стартовый адрес.